Open zymergen-mbarton opened 6 years ago
Hi @zymergen-mbarton
I see we missed a spot regarding UI elements. It looks like we can parse and edit parameters for expression tool, but the only way to introduce one is to type the code directly into the code
panel.
Once you have the code in the workflow, you can set parameters just like for any other tool
As an example, I set up a stub workflow with Rabix Composer:
class: Workflow
cwlVersion: v1.0
id: expression_tool_test
label: Expression tool WF stub
$namespaces:
sbg: 'https://www.sevenbridges.com'
inputs:
- id: input
type: File
'sbg:x': -358.8203125
'sbg:y': 113.5
outputs:
- id: output
outputSource:
- file_cat/output
type: File?
'sbg:x': 32.1796875
'sbg:y': 18.5
steps:
- id: file_cat
in:
- id: input
source: input
out:
- id: output
run: ./file-cat.cwl
label: file-cat
'sbg:x': -116.3984375
'sbg:y': 21
requirements: []
where file-cat.cwl
is this simple tool
class: CommandLineTool
cwlVersion: v1.0
$namespaces:
sbg: 'https://www.sevenbridges.com'
id: file_cat
baseCommand:
- echo
inputs:
- id: input
type: File
inputBinding:
position: 1
prefix: ''
shellQuote: false
valueFrom: $("$(cat " + inputs.input.path + ")")
- id: text
type: string
inputBinding:
position: 2
outputs:
- id: output
type: File?
outputBinding:
glob: '*out.txt'
label: file-cat
requirements:
- class: ShellCommandRequirement
- class: DockerRequirement
dockerPull: ubuntu
- class: InlineJavascriptRequirement
stdout: out.txt
Now, I use the CODE
panel to directly type in a ExpressionTool
code.
- id: expr_tool
in:
- id: word1
default: Hello
- id: word2
default: World
out:
- id: out
run:
class: ExpressionTool
cwlVersion: v1.0
expression: '$({"out": inputs.word1 + inputs.word2 })'
id: expr_tool
inputs:
- id: word1
label: Word 1
type: string
- id: word2
label: Word 2
type: string
outputs:
- id: out
label: Word out
type: string
Switching back to the Visual Editor
I can now manipulate the ExpressionTool
as usual.
We should have a UI concept for the Expression Tool, but I think there may be subtleties with how it exists as an independent element. I will talk with @marijanlekic about what we can do about a UI concept.
I hope this might help you a bit.
-Kaushik
Thanks Kaushik. Yes, I've been manually adding in ExpressionTools and they've worked as part of workflows etc.. I think, in the shorter term, if there was a way to drag in existing expression tool CWL files that would be useful, and mean that workflows wouldn't have to be editted manually to add them which seems to be the tricker part.
I've created
expressiontool
type steps manually but I'm not able to manually import them into my workflow. They do appear and work if I manually edit my workflow cwl document and add them. Are there any guidelines around using expression tool steps? I tried searching the issues before creating this, apologies if this is already covered somewhere.