🐓

CWL の requirements 一巡り: StepInputExpressionRequirement

2020/12/17に公開

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

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

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

対象読者

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.step1file1 パラメータとしてワークフローの入力パラメータ in を渡し、それを steps.step1.in.file1.valueFrom$(in.file1) に変換し[2]、変換後の値を wc-tool.cwl に渡しています。

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

  2. 各ステップの入力パラメータに現れる valueFrom では、入力パラメータの値を self として参照することができます。 ↩︎

Discussion