I am trying to feed simple results from Muscle into RaxML for processing. The use case here is for cwl-runner to be used as a workflow engine for the Airavata science gateway software. We'll have Airavata run, "cwl-runner muscle-raxml.cwl --infile file.fa [--diags] --model BINGAMMA" (for example) and then have it return the result. The problem right now is that cwl-runner doesn't understand my outputs, which makes sense, because I don't really understand how CWL keeps track of outputs either! When I run it right now, I get the following:
Fornacis:science-gateway-experiment-code jtd$ cwl-runner muscle-raxml.cwl --infile unaligned.fa --diags --model BINGAMMA /usr/local/bin/cwl-runner 1.0.20161128202906 Resolved 'muscle-raxml.cwl' to 'file:///Users/jtd/science-gateway-experiment-code/muscle-raxml.cwl' Tool definition failed validation: While checking field `outputs` While checking object `file:///Users/jtd/science-gateway-experiment-code/muscle-raxml.cwl#classout` Field `outputSource` contains undefined reference to `raxmloutput`, tried [u'file:///Users/jtd/science-gateway-experiment-code/muscle-raxml.cwl#classout/raxmloutput', u'file:///Users/jtd/science-gateway-experiment-code/muscle-raxml.cwl#raxmloutput'] While checking field `steps` While checking object `file:///Users/jtd/science-gateway-experiment-code/muscle-raxml.cwl#raxml` While checking field `in` While checking object `file:///Users/jtd/science-gateway-experiment-code/muscle-raxml.cwl#raxml/raxmlinfile` Field `source` contains undefined reference to `intermediatefile`, tried [u'file:///Users/jtd/science-gateway-experiment-code/muscle-raxml.cwl#intermediatefile']
The idea is for Muscle to generate a file called "intermediatefile" which is then fed into RaxML for processing. RaxML then produces several files, which because of the arguments we provided will terminate all of them with ".out". Sounds sort of logical, but doesn't actually work.
Here's the contents of my three CWL files.
cwlVersion: v1.0 class: Workflow inputs: infile: File diags: boolean model: string outputs: classout: type: File outputSource: raxmloutput steps: muscle: run: muscleraxml-muscle.cwl in: muscleinfile: infile diagsflag: diags out: [intermediatefile] raxml: run: muscleraxml-raxml.cwl in: raxmlinfile: intermediatefile raxml_model: model out: [raxmloutput]
cwlVersion: v1.0 class: CommandLineTool baseCommand: [muscle] arguments: ["-out intermediatefile"] inputs: muscleinfile: type: File inputBinding: position: 1 prefix: -in diagsflag: type: boolean inputBinding: position: 2 prefix: -diags outputs: intermediatefile: type: File outputBinding: glob: intermediatefile
cwlVersion: v1.0 class: CommandLineTool label: RaxML wrapper baseCommand: raxml arguments: ["-n out -T 2"] inputs: raxmlinfile: type: File inputBinding: position: 1 prefix: -s raxml_model: type: string inputBinding: position: 2 prefix: -m outputs: raxmloutput: type: File outputBinding: glob: "*.out"