WDL教程-解析Hello world
与一些小坑
新的学期 再接再厉
上一篇介绍了一个初次运行的例子,但是即便是Hello world中我们也是有一些东西可以展开聊一聊的。在这一篇当中,我们重点说说几个细节。
01
WDL文件解析
workflow Whello{String abc call hello{ input: abc=abc } call gzip{ input: txt=hello.echo_out_file }}task hello { String abc command { echo ${abc} >a.txt } output { File echo_out_file = "a.txt" }}task gzip { File txt command { gzip -c ${txt} >a.txt.gz } output { File gzip_out="a.txt.gz" }}
在这个WDL中,首先定义了一个workflow,"Whello",它有一个输入,字符串“abc”,它一共call了两个tasks,“hello”和“gzip”。task “hello”的输入是workflow的输“abc”,task “gzip”的输入是一个文件,是来自task “hello”的“echo_out_file”。
在task hello中,定义了输入字符串“abc”,与workflow的adc相比,类似于全局变量与局部变量概念。它的command是执行echo命令,输出则是定义了“a.txt”
在task gzip中,定义了输入文件“txt”,它的command是gzip压缩输出文件。
细心的话,可以注意到,workflow叫“Whello”,有个task叫“hello”,除了能看出来我取名字的随意程度之外,不难想到workflow与task不能同名。
02
json文件解析
{ "Whello.abc": "abc"}
workflow中的变量可以通过这个json格式的输入文件来传入。
json文件的格式为"workflow名字.workflow变量名":"变量的值"。
如果你习惯在workflow和task取名的时候使得“.”符号的话,请尽快改掉这个习惯吧。
记得检查json的逗号……
03
输出目录解析运行结束会在当前目录生成cromwell-executions和cromwell-workflow-logs两个文件夹。
cromwell-executions目录结构为cromwell-executions//<随机码job id>//executions,所有的输入会在这里
cromwell-executions/>/<随机码job id>/>/inputs,在这里文件夹中是每一个task的输入。
这里额外强调一下,每一步的File类型的input都会保存在这里,不管task是流程的第几步,都是如此。默认是硬链接。平时大家软链可能用的多一些,硬链虽然看上去像是普通文件,du查看也占存储空间,但实际上并不会浪费空间。
以上就是cromwell的安装、与初运行。后面我们将对一些细节进行补充说明。
过往教程:
WDL教程-基本概念篇
WDL教程-cromwell篇
本文所有内容,包括文字、图片、音频、视频、软件、程序、以及网页版式设计等均在网上搜集。欢迎转发,转载请注册出处。