CWL: Is there a way to only pass certain fields from a `record` type to a step?
1
1
Entering edit mode
6.1 years ago
ionox0 ▴ 390

Is there a way to only pass certain fields from a record type to a step? As opposed to the whole record object?

This is my best guess, but I was wondering if there was a cleaner way:

inputs:
  samples:
    type:
      type: array
      items:
        type: record
        fields:
          fastq1: File
          fastq2: File
          SM: string

steps:
  step_1: 
    in:
      samples: samples
    out: [bams]

  step_2:
    in:
      bams: step_1/bams
      SM: 
        valueFrom: ${ return inputs.samples.map(function(x) { return x.SM }) }
    out: [changed_bams]
cwl • 1.2k views
ADD COMMENT
0
Entering edit mode

Is this because you are sharing that record among many steps in a workflow, like this use case?

ADD REPLY
0
Entering edit mode

Yes exactly, for the purpose of not having to list all the fields from the record type at each subworkflow layer of inputs

ADD REPLY
2
Entering edit mode
6.0 years ago

You almost have it:

steps:
  step_2:
    in:
      SM:
        source: samples
        valueFrom: ${ return self.map(function(x) { return x.SM })
ADD COMMENT

Login before adding your answer.

Traffic: 1986 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6