🐓

CWL の requirements 一巡り: MultipleInputFeatureRequirement

2020/12/17に公開

この記事は CWL Advent Calendar 2020 の20日目の記事です。

Common Workflow Language (CWL) では、ワークフロー実行処理系が満たさなければならない機能以外にも、Process requirements と呼ばれる optional features についても標準化が行われています[1]

今回は CWL v1.2 で定義されている MultipleInputFeatureRequirement について簡単な解説を行います。また、各サンプルは可能な限り公式の準拠度テストで用いられているファイルを引用します。

対象読者

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 に渡しています。

脚注
  1. つまり、Process requiremens を含むワークフローやツール定義は、全ての CWL 準拠のワークフロー実行処理系で動かせるわけではありません。詳細は別記事を参照してください。 ↩︎

Discussion