WDL是什么?

  • WDL是由Broad Institute开发的一种流程开发语言,全称workflow description language,官方链接如下:https://software.broadinstitute.org/wdl/

WDL的编写

  • WDL有自己的语法规范,它是一种描述性语言,可读性很高。
  • 每种语言都有自己的hello world,WDL也不例外,示例如下图
workflow helloworld{
call hello{}
}
task hello{
String name="brother"
command{
echo "hello world" ${name}
}
}

WDL可以分为两个部分taskworkflow,而task部分主要由command和定义的部分组成,command用来写你要运行的命令,定义的部分是一些你会用到的变量,变量包括不同的类型和数据结构,后面会详细的介绍;workflow部分是用来调用写好的task模块,这里可以通过定义不同的输入,设置不同的输出来建立自己需要的工作流程,写好的wdl流程文件一般以.wdl后缀结束。
程序的运行需要用到两个不同的jar包运行命令如下:

java -jar womtool-31.jar inputs xxx.wdl > xxx.wdl.json
java -jar cromwell-31.jar run xxx.wdl -i xxx.wdl.json

WDL的变量

  • String: 字符串类型,例如String ABC=“test”
  • Float : 浮点型数字,for example 3.1459 (can be negative too).
  • Int: 整型的数字, for example 16 (can be negative too).
  • Boolean : 布尔类型 for example true or false.
  • File: 文件类型的对象一个文件名命名的对象
  • Array : 数组 for example [A,B,C,D] is an array of strings or Array[String] where we can pick the B element by taking the second element (index position 1 since WDL arrays are 0-indexed).
  • Map: 字典 for example {"color": "blue", "size": "large"} is a map of strings to strings or Map[String, String] where we can ask what is the color of our object.
  • Object : 对象,这个用的比较少

WDL的元件

  • basename
    basename与shell的语法一样,用来得到一个路径的文件名
  • call
    call 主要用于workflow中调用写好的task模块
  • command
    command 在这个模块里面写好需要运行的命令,是task的一部分
  • meta
    meta 可以写一些描述信息
  • output
    output 定义task的输出部分,可以是任何类型,也可以不写这个部分
  • parmeter_meta
    parameter_meta 用于存放参数的一些描述信息
  • runtime
    runtime 用来定义在不同的平台运行时的一些变量,在集群运行时需要编写一个配置文件用来定义一些投递任务的属性
  • task
    task 任务模块,是需要调度的每一个模块
  • variables
    variables 用来定义一些变量
  • workflow
    workflow 用来调用写好的task模块,生成相应的工作流

WDL的工作流类型

WDL会有不同的工作流格式,这里列举一下官网的不同工作流

WDL的注意事项

  1. WDL如果在集群测试时,如果是自己来控制工作流程,需要将标准输出和标准错误输出输出至文件,这样输出到屏幕的返回值才能被正常的获取到
  2. WDL的local版本测试会比较快
 
 
 
 

最新文章

  1. HTTP协议详解(转)
  2. C#学习笔记---Dispose(),Finalize(),SuppressFinalize
  3. 用javascript简单封装AJAX
  4. September 26th 2016 Week 40th Monday
  5. OC基础--内存管理中的@property关键字以及其参数
  6. go liteIDE
  7. Delphi 使用之函数
  8. Eclipse管理Java工程(j2se/j2ee/maven)
  9. HDU 5823 (状压dp)
  10. ssh-keygen
  11. Linux 简单字符设备驱动程序 (自顶向下)
  12. DataTable.DataRow的复制
  13. Mysql数据库建立索引的优缺点有哪些?
  14. python functools.lru_cache做备忘功能
  15. (2018 Multi-University Training Contest 3)Problem D. Euler Function
  16. MacOS 10.12 Sierra 安全性与隐私没有任何来源选项解决方法
  17. springcloud feign传输List的坑
  18. java-Calendar类
  19. SpringMVC环境搭建和详解
  20. .net升级到4.0之后,出现;System.Windows, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798

热门文章

  1. Java 日期工具类(日期,月份加减等)--转
  2. (26)打鸡儿教你Vue.js
  3. 常用命令备忘 lsof
  4. SQL数据清洗
  5. js判断是不是在微信浏览器打开?
  6. Dockers安装nginx
  7. 作业要求2018092609-2 选题 Scrum立会报告+燃尽图 05
  8. OpenMP基本概念【转】
  9. 图片旋转 1. cv2.getRotationMatrix2D(获得仿射变化矩阵) 2. cv2.warpAffine(进行仿射变化)
  10. JEECG hibernate.hbm2ddl.auto