Hi folks,
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.
muscle-raxml.cwl:
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]
muscleraxml-muscle.cwl:
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
muscleraxml-raxml.cwl:
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"
Help?
Thanks!