WDL 学习笔记
作者简介
王亚静,曾就职于百迈客、博奥晶典、荣联科技等多家生物信息行业公司。有着丰富的流程编写和项目分析经验。作为Achelous 的忠实拥趸,在工作中,通过使用Achelous 的 WDL 语法解析功能,极大限度地减少了流程开发和移植地工作难度。下面是亚静使用Achelous 的WDL 语法解析功能的一些心得体会,希望对大家有帮助 :)
为什么选用 WDL 作为流程开发的标准语言
作为生物信息工程师,有很大一部分是流程搭建的工作,从业7年的时间里,用过shell,perl等工具去搭建流程,多少会存在一些代码冗余,流程移植等问题,因此也在尝试新的方法。Broad开发的wdl流程编写语言个人觉得是十分简洁的,语法简单,能够轻松入门。 WDL在github上有官方的网址可以查阅使用方法( https://github.com/openwdl/wdl/blob/main/versions/1.0/SPEC.md ),也有一些使用案例可以“照猫画虎”( https://github.com/openwdl/learn-wdl/tree/master/2_pipeline_examples )。
WDL 内容精要
下面我以个人经验大概介绍下WDL
1. WDL核心结构:
整个上面的图出现了WDL的基本概念:workflow、call、task、command、output。
如上左图,workflow定义了一个可执行的流程,它由call调用的一系列task组成的,由call 语句调用在workflow block里面,task本身定义在外围;如上有图,task部分主要由command和定义的部分组成,command用来写你要运行的命令, output是指定输出,是workflow逻辑关系连接的纽带。task可以是一个模块化的一系列命令,具有可以复用的特性。
2. WDL的变量:
对应WDL的结构,变量也分为两层,task层和workflow层。最基本的变量有两个,一种是File,对应文件,一种是String对应的是字符。 task层的变量可以引用workflow层的变量,也可以直接传参。使用示例如下图:
3. 工作流类型:
i. 一对一依赖关系: ii. 多对多依赖关系: iii. 平行关系:
最后就是WDL的脚本校验,工具womtool.jar可以用于校验,还可以用来生成输入json的模板。 以上就是WDL的大体介绍,如有问题,可以去WDL官网直接查看语法。
新的东西往往是写着写着就会了,用着用着就熟了。随着越用越顺手,后面就再也离不开了 :D