GATK官方推荐的workflow语言-WDL

欢迎关注"生信修炼手册"!

在的中,不再像以前那样给出每个步骤对应的代码,而是直接给出了官方使用的pipeline。这些采用进行编写。

是一种流程编写语言,没有太多复杂的逻辑和语法,入门简单。首先看一个的例子

对于一个脚本而言,有以下5个核心结构

workflow

task

call

command

output

每个脚本包含1个, 由多个构成。 在中,通过调用对应的。每个在代码块之外单独定义。

代表任务,读取输入文件,执行相应命令,然后输出。中对应的就是执行的命令,比如一条具体的gatk的命令, 指定的输出值。可以将理解为编程语言中的函数,每个函数读取输入的参数,执行代码,然后返回,对应执行的具体代码,对应返回值。

在中,也是可以传递参数的。和中的写法不同

1. task 中的参数

下面的示意图中,task 有3个输入的参数,文件类型的, 和字符串类型的。 在中,通过这种格式访问变量的值

2. workflow 中的参数

下面的示意图中, 有3个参数,文件类型的, 和字符串类型的。传递这3个参数给时,直接传变量名就可以了。

作为流程管理语言,需要对多个统一管理。task之间具有多种关系

1. 一对一的依赖关系

前一个的输出,作为后一个的输入

示例如下

一个的多个输出作为下一个的输入

示例如下:

2. 多对多的依赖关系

一个的输出作为多个的输入,或者多个的输出作为1个的输入

示例如下:

3. 平行关系

多个之间完全平行,可以并行执行

示例如下:

和函数还是有一定的区别,函数可以在代码中多次调用,但是多次调用会有风险。下面的示意图中,stepA 运行两次,一次作为stepB的输入,一次作为stepC的输入。如果stepA的两次调用并行执行,当执行完之后,在传递给下一个task时,由于存在两个同名的stepA, stepB和stepC 就会无法正确接受参数。

中提供了解决方案,叫做, 为起一个别名,示例如下

在WDL脚本中, 理论上每个 只可以调用1次,如果希望多次调用,必须借助。

掌握以上几点,就可以理解一个脚本的整体框架了。在实际使用中,我们只要能理解整个的流向,会使用脚本就可以了。

运行脚本,需要两个文件

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180516G1J70J00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券