WDL最初是由Broad Institute為基因組分析管道開發的。語法簡單,易于表達,能很好的描述流程 ;且跨平臺。GATK首選的pipeline解決方案:WDL + cromwell ****。
目前,Cromwell是唯一支持WDL的全功能執行引擎。cromwell 是一個面向科學工作流程的工作流管理系統,基于BSD 3-Clause license證書的開源軟件,支持在三種平臺上運行WDL: 本地機器、通過作業調度器(GridEngine,例如PBS , Slurm )訪問的本地集群 和 **云平臺 **(例如谷歌云或Amazon AWS) 。
cromwell是以美國演員 James Cromwell的名字命名的,他是《寶貝》和《星際迷航:第一次接觸》等偉大電影的明星,因此它的吉祥物是“變形豬杰米”。
使用WDL 可以不用考慮計算環境問題,本地集群和公有云上運行完全相同的腳本。
WDL 腳本核心結構包括 5 個基本組件:workflow, task, call, command 以及 output。
workflow 即是描述整個流程的框架,其中調用( call )了不同的 task 。
task 包含“做某事”所必需的所有信息,這些信息圍繞著一個command,該命令帶有輸入文件和參數的定義,以及output 信息 。
**例如: bwa 比對流程, 使用 WDL編碼 **
輸入是reference( 參考序列 ),read1 和 read2 。
output是 bam文件和bam索引文件 。
command 是
bwa mem reference read1 read2 |samtools sort - -o sample.bam
頂層文件是 workflow, 里邊call 這個task
弄清楚了流程的內容,我們來一起完成流程的編碼
** bwa.wdl task內容**
task bwa_task{
**mapping.workflow.wdl workflow內容 **
import "bwa.wdl" // 引用task文件
使用womtool 語法校驗
java -jar womtool-48.jar validate bwa.wdl
使用womtool 生成 inputs.json , 將輸入文件和字符串補充完整
java -jar womtool-48.jar inputs mapping.workflow.wdl
使用cromwell 運行流程
java -jar cromwell-48.jar run mapping.workflow.wdl \
WDL 可以使我們的流程組裝更加方便。
*基因組分析*****公眾號推出 《50篇文章深入理解NGS》系列文章, 第二篇文章 《五分鐘入門WDL語言》,爭取每周更新一篇高質量生信干貨帖子。
關注 "基因組分析" 公眾號,了解最新最全生信分析知識。