LoginSignup
2
0

More than 3 years have passed since last update.

WDL workflowの書き方について

Posted at

はじめてのwdl

  • wdlはGATKが採用しているworkflow
  • inputはJSON
  • 5つのコンポーネントから形成されている。
    • workflow, task, call, command and output

1.コアコンポーネントの基本構造

minimal WDL scriptの例

top level compornent

workflow myWorkflowName {
    call task_A
    call task_B
}
task task_A { .... }
task task_B { .... }
  • topレベルでは、タスクを組み合わせ呼び出すワークフローを定義します。
  • ワークフローの中でタスクを呼び出しますが、ワークフローのブロックの外で、タスクを定義しておきます。
  • ワークフローを先に書くか、タスクの定義を先に行うかは自由です。

Core task-level components

task task_A {
    command { ... }
    output { ... }
}

タスクの中では、シェルで実行するコマンドなどのコアコンポーネントを記載します。また、outputは、出力を担うコマンドを記載します。  


2. 変数の加え方

ここでの変数とは、実際のファイル名やパラメータ値を除く、スクリプト上に記載する変数のことです。以下の代入方法を利用することで、内部のスクリプトを書き換えることなく必要なくワークフローを実行することができます。この変数代入は、タスクレベルとワークフローレベルの2種類があります。

task-level variable

task task_A {
    File ref
    File in
    String id

    command {
    do_stuff R=${ref} I=${in} O=${id}.ext
    }
    output {
    File out="${id}.ext"
    }
}
workflow myWorkflowName {
    File my_ref
    File my_input
    String name

    call task_A {
        input: ref= my_ref, in= my_input, $id= name
    }
    call task_B {
        input: ref= my_ref, in= task_A.out
    }
}
task task_A { .... }
task task_B { .... }

自作workflowのValidation

自作workflowのバリデーション用にツールがついています。

java -jar wdltool.jar validate myWorkflow.wdl


input fileの生成

input fileをカスタマイズする場合は以下のような形でjsonを生成します。

java -jar wdltool.jar inputs myWorkflow.wdl > myWorkflow_inputs.json

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0