はじめての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