Closed inutano closed 2 years ago
ちなみに、これしか使わんのなら標準のExpressionでいけるから InlineJSExpression の requirements いらんのではと思って外すとこんなメッセージが出てくる。
ERROR [step samtools-view] Cannot make job: Expression evaluation error:
Syntax error in parameter reference 'inputs.fastq.nameroot': inputs does not contain key 'fastq'. This could be due to using Javascript code without specifying InlineJavascriptRequirement.
以前は動いていたが cwltool のバージョンを上げたので、Workflow の inputs
を step の in
で valueFrom
して参照できないように cwltool の仕様が変更した、あるいは以前通っていたのはバグだった、、、?
The value of inputs in the parameter reference or expression must be the input object to the workflow step after assigning the source values, applying default, and then scattering. The order of evaluating valueFrom among step input parameters is undefined and the result of evaluating valueFrom on a parameter must not be visible to evaluation of valueFrom on other parameters. https://www.commonwl.org/v1.2/Workflow.html#WorkflowStepInput
なので Workflow の inputs が取れないのが仕様っぽい。じゃあ Workflow.inputs
を取るにはどうすれば?
WorkflowStepInput.valueFrom
の記述を確認すると
The value of
inputs
in the parameter reference or expression must be the input object to the workflow step after assigning thesource
values, applyingdefault
, and then scattering.
かぶった!
対象のステップの引数の source
に fastq
を渡せばいけると思います。
output_filename:
source: fastq
valueFrom: $(self.nameroot).trim.uniq.bam
in:
fastq: fastq
output_filename:
valueFrom: $(inputs.fastq.nameroot).trim.uniq.bam
かなと思ったらそっちの方がいいですね!ありがとうございます!
しかし何故前は動いていたのか、、
https://github.com/common-workflow-language/cwltool/issues/1330 もそうですが、ネストされた expression 中の inputs
の伝播周りの挙動はちょっと怪しい…
In short: CWL Expression が JS Expression と解釈されて参照できずに死ぬエラーっぽい。
何が問題か: Workflow の
inputs
で指定されたfastq
のファイル名を改変してツールの出力名に指定しようとしてvalueFrom: $(inputs.fastq.nameroot)
をしたら JS が走ってTypeError: Cannot read properties of undefined (reading 'nameroot')
というエラーを吐いて死ぬ。問題の箇所: https://github.com/pitagora-network/DAT2-cwl/blob/0cd20e1be620ae0817a1aa4286d73b78c89809f0/workflow/epigenome-chip-seq/macs2/macs2.cwl#L74
実行時のエラー:
環境:
cc. @suecharo @tom-tan @manabuishii