This is a test version of Biostars. For the public version, visit https://www.biostars.org.
[CWL] Why this error happens?(object id `toil-workflow.cwl#job1/param` previously defined)

Hi there, Recently, I was studying CWL and use Toil as its engine. I've written a cwl work flow, please see below: cwlVersion: v1.0 class: Workflow requirements: ResourceRequirement: class: ResourceRequirement coresMin: 1 coresMax: 1 ramMin: 256 ramMax: 256

inputs: msg1: int msg2: int

outputs: []

steps: job1: run: class: CommandLineTool baseCommand: ["touch", "workflow_job1.txt", "sleep"] inputs: param: type: int inputBinding: position: 1 outputs: output: type: File outputBinding: glob: workflow_job1.txt in: param: msg1 out: [output]

But when running, it raised an error:

Resolved 'toil-workflow.cwl' to 'file:///workspace/cwl/toil-workflow.cwl' Tool definition failed validation: toil-workflow.cwl:17:1: checking field steps toil-workflow.cwl:18:5: checking object toil-workflow.cwl#job1 toil-workflow.cwl:32:9: checking field in toil-workflow.cwl:33:13: checking object toil-workflow.cwl#job1/param toil-workflow.cwl:23:17: object id toil-workflow.cwl#job1/param previously defined toil-workflow.cwl:36:5: checking object toil-workflow.cwl#job2 toil-workflow.cwl:50:9: checking field in toil-workflow.cwl:51:13: checking object toil-workflow.cwl#job2/param toil-workflow.cwl:41:17: object id toil-workflow.cwl#job2/param previously defined toil-workflow.cwl:54:5: checking object toil-workflow.cwl#job3 toil-workflow.cwl:71:9: checking field in toil-workflow.cwl:72:13: checking object toil-workflow.cwl#job3/param1 toil-workflow.cwl:64:17: object id toil-workflow.cwl#job3/param1 previously defined

I was wondering why this happen, and moreover, one of my colleagues can run this cwl file successfull in his env. Can anybody help to find out the reason? Thanks a lot!

cwl toil

1 answer

cwlVersion: v1.0

class: Workflow requirements: ResourceRequirement: class: ResourceRequirement coresMin: 1 coresMax: 1 ramMin: 256 ramMax: 256

inputs: msg1: int msg2: int

outputs: []

steps: job1: run: class: CommandLineTool baseCommand: ["touch", "workflow_job1.txt", "sleep"] inputs: param: type: int inputBinding: position: 1 outputs: output: type: File outputBinding: glob: workflow_job1.txt in: param: msg1 out: [output]

job2:
    run:
        class: CommandLineTool
        baseCommand: ["touch", "workflow_job2.txt", "sleep"]
        inputs:
            param:
                type: int
                inputBinding:
                    position: 1
        outputs:
            output:
                type: File
                outputBinding:
                  glob: workflow_job2.txt
    in:
        param: msg2
    out: [output]

job3:
    run:
        class: CommandLineTool
        baseCommand: cat
        stdout: job3.out
        inputs:
            param1:
                type: File
                inputBinding:
                    position: 1
            param1:
                type: File
                inputBinding:
                    position: 2
        outputs:
            output:
                type: stdout
    in:
        param1: job1/output
        param2: job2/output
    out: [output]

Log in to answer this question.