🐓
CWL の requirements 一巡り: MultipleInputFeatureRequirement
この記事は CWL Advent Calendar 2020 の20日目の記事です。
Common Workflow Language (CWL) では、ワークフロー実行処理系が満たさなければならない機能以外にも、Process requirements と呼ばれる optional features についても標準化が行われています[1]。
今回は CWL v1.2 で定義されている MultipleInputFeatureRequirement
について簡単な解説を行います。また、各サンプルは可能な限り公式の準拠度テストで用いられているファイルを引用します。
対象読者
- CWL をかじったことがあるけど
requirements
はよくわからない人- つまり中級者以上が対象です。
- 初心者は CWL Advent Calendar 2020 の初日の記事へ Go!
例
Conformance test #29: tests/count-lines7-wf.cwl:
#!/usr/bin/env cwl-runner
class: Workflow
cwlVersion: v1.2
requirements:
- class: MultipleInputFeatureRequirement
inputs:
file1:
type: File[]
file2:
type: File[]
outputs:
count_output:
type: int
outputSource: step1/output
steps:
step1:
run: wc3-tool.cwl
in:
file1:
source: [file1, file2]
linkMerge: merge_flattened
out: [output]
MultipleInputFeatureRequirement
を指定することで、ワークフローの各ステップの入力として複数ステップの出力パラメータやワークフローの入力パラメータをまとめて渡すことができるようになります。パラメータをまとめる方法は linkMerged
で指定できます。linkMerged
は以下のどちらかの値を取ります。
-
merge_nested
-
T
型のパラメータ列を受け取り、T[]
型のオブジェクトにまとめてから入力パラメータとして渡します(T
: 任意の型)。
-
-
merge_flattened
-
T
型およびT[]
型のパラメータ列を受け取り、T[]
型のオブジェクトにまとめてから入力パラメータとして渡します。
-
上の例の場合、ワークフローの入力パラメータ file1: File[]
および file2: File[]
の各要素からなる File[]
型のオブジェクトを steps.step1
の入力パラメータ file1
に渡しています。
Discussion