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. oracle profile 概要文件

    Profile文件概述: Profile是Oracle安全策略的一个组成部分,当Oracle建立数据库时,会自动建立名称为Default的Profile文件. 创建用户的时候,如果没有指定profil ...

  2. java笔记--关于多线程如何查看JVM中运行的线程

    查看JVM中的线程 --如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3890280.html "谢谢-- ThreadGrou ...

  3. 使用Membership,您的登录尝试不成功。请重试"的解决方法

    提示信息是标准Login控件产生的,打开数据库,检查aspnet_Membership表,检查IsLockedOut字段的值是否为False, 如果为True,表示这个用户锁定了,把它改成False即 ...

  4. System.Web.Optimization对脚本和样式表的操作

    这个也是本章重点向描述的部分,首先我们可以使用VS2012RC来新建一个MVC4.0项目,版本可以为4.0或4.5.在Global.asax文件代码中,我们发现已经把过滤器,路由器,以及对样式表和脚本 ...

  5. Azure Document DB Repository 的实现

    阅读 需要大约  5 分钟. 前景: Azure Cosmos DB 由 Microsoft 提供,是全球分布式多模型数据库. 通过 Azure Cosmos DB 跨任意数量的 Azure 地理区域 ...

  6. UIWindow的windowLevel详解

    UIWindow的windowLevel详解

  7. web虎所用2个64位驱动:到底在build时要生成几个版本?

    更准确的问法是: 是否需要根据wdk+目标os不同,根据组合生成不同的多组驱动: 1.wdk10:生成windows10和windows2016+的驱动 2. wdk8和wdk8.1:生成window ...

  8. python pandas dataframe 操作记录

    从数据看select出数据后如何转换为dataframe df = DataFrame(cur.fetchall()) 如何更改列名,选取列,进行groupby操作 df.columns = ['me ...

  9. 微信小程序 置顶/取消置顶

    wxml <view wx:for="{{confirmlist}}" wx:for-item="confirm" wx:for-index=" ...

  10. React 入门学习笔记2

    摘自阮一峰:React入门实例教程,转载请注明出处. 一.获取真实的DOM节点 组件并不是真实的 DOM 节点,而是存在于内存之中的一种数据结构,叫做虚拟 DOM (virtual DOM).只有当它 ...