From 060ddf677d01e408c7a49791150bfd24b76416e0 Mon Sep 17 00:00:00 2001 From: Arun Isaac Date: Tue, 14 Nov 2023 22:18:38 +0000 Subject: ccwl: Implement scatter. * ccwl/ccwl.scm (): Wrap constructor make-step. [scattered-inputs, scatter-method]: New fields. (collect-scatter-step): New function. (collect-steps): Implement scatter. (key->output): If step scatters, convert output to an array type. (workflow): Add syntax to initialize scattered-inputs and scatter-method fields of object. * ccwl/cwl.scm (workflow->cwl-scm): Add ScatterFeatureRequirement if workflow contains scattering steps. Serialize scattered-inputs and scatter-method. * doc/ccwl.skb (Cookbook)[Scatter/gather]: New section. --- doc/ccwl.skb | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'doc') diff --git a/doc/ccwl.skb b/doc/ccwl.skb index 69e5a38..2e84d58 100644 --- a/doc/ccwl.skb +++ b/doc/ccwl.skb @@ -332,6 +332,13 @@ to ,(emph "stage") the input file into the output directory. We may express this in ccwl using the ,(code "#:stage?") parameter to the inputs to be staged. Here is a rather concocted example.] (scheme-source "doc/staging-input-files.scm"))) + (section :title [Scatter/gather] + (p [ccwl supports CWL's dotproduct scatter/gather feature using +the following syntax. Here, the ,(code [other-messages]) input to the +workflow is an array of strings that is scattered over the ,(code +[print]) step. Each run of the ,(code [print]) step gets an element of +,(code [other-messages]) as its ,(code [other-message]) argument.] + (scheme-source "doc/scatter-gather.scm"))) (section :title [Reuse external CWL workflows] (p [Even though you may be a ccwl convert (hurrah!), others may not be. And, you might have to work with CWL workflows written by -- cgit v1.2.3