🐓

CWL の requirements 一巡り: WorkReuse

2020/12/15に公開

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

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

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

対象読者

Conformance test #216: tests/timelimit3.cwl:

class: CommandLineTool
cwlVersion: v1.2
inputs: []
outputs: []
requirements:
  ToolTimeLimit:
    timelimit: 0
  WorkReuse:
    enableReuse: false
baseCommand: [sleep, "15"]

解析に使われる多くのツールは、同じ入力パラメータであれば同じ出力を行うことが期待でき、CWL もデフォルトでは同じ仮定を行います。WorkReuse はこれを明示的に制御するための Process requirement です。上の例では、WorkReuse.enableReusefalse を設定することで(デフォルトは true)、このツールが出力結果等をキャッシュできないことを表しています。

cwltool などの一部の処理系では、WorkReuse.enableReusetrue の場合には、同じワークフローやツール定義を実行した際に、以前の実行結果を再利用することで、ワークフローの実行速度を改善する機能が組み込まれています[2]

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

  2. cwltool の場合は --cachedir=DIR で中間結果保存用のディレクトリを指定できます。指定したディレクトリにキャッシュがあるときには、各ステップの実行結果を再利用してくれます。 ↩︎

Discussion