I currently have a cwl file that uses records to define sets of mutually exclusive or mutually required input parameters. I am now trying to use this cwl as a step in a workflow, but I don’t seem to understand how the input records for the step should be formatted.
I get the following tool definition error when trying to use this pipeline:
cwltool pipeline.cwl comp_dart_ex1.yml
INFO /home/ubuntu/miniconda3/bin/cwltool 3.0.20210319143721
INFO Resolved 'pipeline.cwl' to 'file:///mnt/cwl/spatial-transcriptomics-pipeline/pipeline.cwl'
ERROR Tool definition failed validation:
pipeline.cwl:2:1: Object `pipeline.cwl` is not valid because
tried `Workflow` but
pipeline.cwl:291:1: the `steps` field is not valid because
tried array of <WorkflowStep> but
pipeline.cwl:308:3: item is invalid because
pipeline.cwl:310:5: the `in` field is not valid because
pipeline.cwl:325:7: item is invalid because
pipeline.cwl:326:9: * invalid field `aux_names`, expected one of: 'id', 'source',
'linkMerge', 'loadContents', 'loadListing', 'label', 'default', 'valueFrom'
pipeline.cwl:327:9: * invalid field `aux_file_formats`, expected one of: 'id',
'source', 'linkMerge', 'loadContents', 'loadListing', 'label', 'default',
'valueFrom'
pipeline.cwl:328:9: * invalid field `aux_file_vars`, expected one of: 'id', 'source',
'linkMerge', 'loadContents', 'loadListing', 'label', 'default', 'valueFrom'
pipeline.cwl:329:9: * invalid field `aux_cache_read_order`, expected one of: 'id',
'source', 'linkMerge', 'loadContents', 'loadListing', 'label', 'default',
'valueFrom'
pipeline.cwl:330:9: * invalid field `aux_fixed_channel`, expected one of: 'id',
'source', 'linkMerge', 'loadContents', 'loadListing', 'label', 'default',
'valueFrom'
Notably, the four listed aux_*
variables listed are a part of the same input record, as they are optional dependent parameters.
The most relevant thing I’ve found in the documentation for this is “Setting mutually exclusive parameters” under /user_guide/misc
, but I don’t follow how this would work for records with multiple entries.
How should I define these input records (or is it bad practice to do this kind of variable specification on the individual steps, and they should only be specified as mutually independent/dependent at the workflow level)?