CWL の requirements 一巡り: StepInputExpressionRequirement
この記事は CWL Advent Calendar 2020 の21日目の記事です。
Common Workflow Language (CWL) では、ワークフロー実行処理系が満たさなければならない機能以外にも、Process requirements と呼ばれる optional features についても標準化が行われています[1]。
今回は CWL v1.2 で定義されている StepInputExpressionRequirement
について簡単な解説を行います。また、各サンプルは可能な限り公式の準拠度テストで用いられているファイルを引用します。
対象読者
- CWL をかじったことがあるけど
requirements
はよくわからない人- つまり中級者以上が対象です。
- 初心者は CWL Advent Calendar 2020 の初日の記事へ Go!
例
Conformance test #70: tests/step-valuefrom-wf.cwl:
#!/usr/bin/env cwl-runner
class: Workflow
cwlVersion: v1.2
requirements:
- class: StepInputExpressionRequirement
inputs:
in:
type:
name: in
type: record
fields:
- name: file1
type: File
outputs:
count_output:
type: int
outputSource: step2/output
steps:
step1:
run: wc-tool.cwl
in:
file1:
source: in
valueFrom: $(self.file1)
out: [output]
step2:
run: parseInt-tool.cwl
in:
file1: step1/output
out: [output]
StepInputExpressionRequirement
を指定することで、ワークフローのステップの実行前に各パラメータの加工が可能になります。パラメータの加工は、各入力パラメータの valueFrom
フィールドに基づいて行われます。
上の例では steps.step1
の file1
パラメータとしてワークフローの入力パラメータ in
を渡し、それを steps.step1.in.file1.valueFrom
で $(in.file1)
に変換し[2]、変換後の値を wc-tool.cwl
に渡しています。
-
つまり、Process requiremens を含むワークフローやツール定義は、全ての CWL 準拠のワークフロー実行処理系で動かせるわけではありません。詳細は別記事を参照してください。 ↩︎
-
各ステップの入力パラメータに現れる
valueFrom
では、入力パラメータの値をself
として参照することができます。 ↩︎
Discussion