From d7bcf169f6b03433210b7c780ae343808bdc7492 Mon Sep 17 00:00:00 2001 From: Arun Isaac Date: Fri, 6 Sep 2024 16:37:48 +0100 Subject: workflow: Extract scatter and scatterMethod. * ravanan/command-line-tool.scm ()[scatter, scatter-method]: New fields. * ravanan/workflow.scm (command-line-tool->propagator, workflow-class->propagators): Initialize scatter and scatter-method in scheduler-proc object. --- ravanan/command-line-tool.scm | 10 +++++++--- ravanan/workflow.scm | 15 +++++++++++++-- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/ravanan/command-line-tool.scm b/ravanan/command-line-tool.scm index c943881..5bb9dac 100644 --- a/ravanan/command-line-tool.scm +++ b/ravanan/command-line-tool.scm @@ -62,7 +62,9 @@ %command-line-tool-supported-requirements scheduler-proc scheduler-proc-name - scheduler-proc-cwl)) + scheduler-proc-cwl + scheduler-proc-scatter + scheduler-proc-scatter-method)) (define %store-files-directory "files") @@ -96,10 +98,12 @@ (exit #f)) (define-immutable-record-type - (scheduler-proc name cwl) + (scheduler-proc name cwl scatter scatter-method) scheduler-proc? (name scheduler-proc-name) - (cwl scheduler-proc-cwl)) + (cwl scheduler-proc-cwl) + (scatter scheduler-proc-scatter) + (scatter-method scheduler-proc-scatter-method)) (define-immutable-record-type (single-machine-job-state script success?) diff --git a/ravanan/workflow.scm b/ravanan/workflow.scm index 2ecc4e6..50052cb 100644 --- a/ravanan/workflow.scm +++ b/ravanan/workflow.scm @@ -126,7 +126,7 @@ requirements and hints of the step." "Convert @code{CommandLineTool} workflow @var{cwl} of @var{name} to a propagator." (propagator name - (scheduler-proc name cwl) + (scheduler-proc name cwl %nothing %nothing) (vector-map->list (lambda (input) (cons (assoc-ref input "id") (assoc-ref input "id"))) @@ -199,7 +199,18 @@ their own namespaces." (assoc-ref step "run")))) (propagator (prefix-name step-id (propagator-name step-propagator)) - (propagator-proc step-propagator) + ;; Augment proc with scatter and scatter method. + (let ((proc (propagator-proc step-propagator))) + (scheduler-proc + (scheduler-proc-name proc) + (scheduler-proc-cwl proc) + (maybe-assoc-ref (just step) "scatter") + (maybe-let* ((scatter-method + (maybe-assoc-ref (just step) "scatterMethod"))) + (just (assoc-ref* '(("dotproduct" . dot-product) + ("nested_crossproduct" . nested-cross-product) + ("flat_crossproduct" . flat-cross-product)) + scatter-method))))) (assoc-ref step "in") (propagator-optional-inputs step-propagator) (vector-map->list (lambda (output-name) -- cgit v1.2.3