GATK的pipeline使用WDL进行编写

WDL是一种流程管理语言,内置的支持并行,适合编写pipeline

运行wdl脚本需要两步:第一步编辑参数列表对应的json文件,第二步直接运行Cromwell.jar

eg

workflow helloWorld{
call myTask;
} task myTask{
commond{
echo "hello world"
} output {
String out = read_string(stdout())
}
}

对于一个WDL脚本,有5个核心结构:

1,workflow

2, task:代表任务,读取输入文件,执行相应的commond,然后输出output。task中可以有参数。

3, call

4, commond

5, output

一个脚本包括1个workflow,一个workflow由多个task构成,并在workflow中通过call调用。每个task在workflow代码块之外单独定义。包括多个commond

如:task中的参数:

task task_1{
File ref
File in
String id commond{
do_stuff R = ${ref} I=${in} O=${id}.ext
} output{
File out = "${id}.ext"
}
}

workflow 中的参数,传递参数给task时,直接传变量名

task 之间具有多种关系。理论上每个task 只可以调用1次,若调用多次,需要借助task alias。例如:

workflow taskAlias{
File firstInput
File secondInput
call stepA as firstSample {
input: in=firstInput
}
call stepA as secondSample{
input: in = secondInput
}
call stepB{input: in=firstSample.out}
call stepC{input: in=secondSample.out}
} task stepA{
File in
commond{ programA I=${in} O=outputA.ext}
output{File out="outputA.ext"}
} task stepB{
File in
commond{ programA I=${in} O=outputB.ext}
output{File out="outputB.ext"}
} task stepA{
File in
commond{ programA I=${in} O=outputC.ext}
output{File out="outputC.ext"}
}

运行WDL脚本,需要:

1,cromwell.jar

2,womtools.jar

第一步是得到输入的参数列表:用json格式存储,这一步知识一个模板,需要编辑这个文件,将对应的参数替换成实际需要的参数

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

第二步,运行脚本

java -jar Cromwell.jar run myWorkflow.wdl -inputs myWorkflow_inputs.json

[转载:https://www.jianshu.com/p/42f377e20ff7]

GATK --- wdl 语言的更多相关文章

  1. GATK使用说明-GRCh38(Genome Reference Consortium)(二)

    Reference Genome Components 1. GRCh38 is special because it has alternate contigs that represent pop ...

  2. 16、GATK使用简介 Part1/2

    转载:http://blog.sina.com.cn/s/blog_6721167201018fyw.html GATK (全称The Genome Analysis Toolkit)是Broad I ...

  3. WDL学习笔记

    WDL是什么? WDL是由Broad Institute开发的一种流程开发语言,全称workflow description language,官方链接如下:https://software.broa ...

  4. C语言 · 高精度加法

    问题描述 输入两个整数a和b,输出这两个整数的和.a和b都不超过100位. 算法描述 由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储.对于这种问题,一般使用数组来处理. 定义一个数组A ...

  5. Windows server 2012 添加中文语言包(英文转为中文)(离线)

    Windows server 2012 添加中文语言包(英文转为中文)(离线) 相关资料: 公司环境:亚马孙aws虚拟机 英文版Windows2012 中文SQL Server2012安装包,需要安装 ...

  6. iOS开发系列--Swift语言

    概述 Swift是苹果2014年推出的全新的编程语言,它继承了C语言.ObjC的特性,且克服了C语言的兼容性问题.Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在 ...

  7. C语言 · Anagrams问题

    问题描述 Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的.例如,"Unclear"和"Nuclear ...

  8. C语言 · 字符转对比

    问题描述 给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一: 1:两个字符串长度不等.比如 Beijing 和 Hebei 2:两个字符串不仅长度相 ...

  9. JAVA语言中的修饰符

    JAVA语言中的修饰符 -----------------------------------------------01--------------------------------------- ...

随机推荐

  1. redis 命令clear、set、get、del、rename、keys *、exists、type、expire、expireat、persist、ttl、move、select

    清屏 clear 新增/修改set 查询get 删除del 修改key rename old new 查询所有的key keys *查询一个key是否存在 exists,有返回1,没有返回0查询值的类 ...

  2. oracle 中的角色

    conn sys as sysdba;create role testrole;grant create session, create table, unlimited tablespace to ...

  3. 数组转换list集合问题

    1问题的起因: 项目总要使用一个方法把数组转换成list集合,百度说有这个方法Arrays.asList可以实现 2结果报错 抛出java.lang.UnsupportedOperationExcep ...

  4. python读取shp

    sf = shapefile.Reader("res2_4m.shp") records = sf.records() print sf.fields for record in ...

  5. h5调用微信分享

    https://blog.csdn.net/qq_39562787/article/details/79217386

  6. numpy深入理解剖析

    http://www.scipy-lectures.org/advanced/advanced_numpy/index.html

  7. Linux下卸载安装mysql

    1.卸载命令:# rpm -qa |grep -i mysql # yum remove mysql-community mysql-community-server mysql-community- ...

  8. java vector的多线程安全是否有用

    在网上搜了不少文章,发现有不少没讲清楚的,也有不少好文,本文希望更易懂地描述该问题.如有不对的地方,请多多指正~~ vector的使用主要有如下两种场景:(1)vector所谓的多线程安全,只是针对单 ...

  9. NSCopying简析

    NSCopying简析 用到NSCopying的时候并不多,但还是有必要知道最基本的用途,比方说数组的拷贝操作,需要注意的是,数组的拷贝操作并不是执行了 copy 方法,而是需要执行 initWith ...

  10. IDL创建泰森多边形

    结果图: 附加源码: PRO testVoronoi idx = 0 ; 创建离散点 CASE idx OF ; 随机离散点 0: BEGIN N = 36 X = RANDOMN(seed, N) ...