和其他编程语法一样,WDL也存在不同版本间的语法差异,因此在使用WDL进行流程撰写时,需要明确参考的版本规范
所以后文语法如无特殊标准,本文想过内容均基于 WDL v1.0 版本。
示例Demo存档
可以看到WDL本身提供了比较充足的变量类型,但是由于wdl本身对于文本/变量的处理函数非常匮乏,因此无法像snakemake一样,在读取数据后进行自定义的数据处理构造需要的数据结构。因此针对wdl应用到生信检测过程时,一些复杂的逻辑关系需要提前梳理形成特定的数据结构,本文记录一些学习开发阶段,接触的复杂数据结构和 WDL 解析方式,以备后用。
项目结构
1 | docker/ # 镜像文件 |
样本文库下机数据多层依赖关系
最终生效的输入文件格式(json),通过wdl解析成object + 数组,实现多层结构实现。
单样本解析
输入的文本文件.json
1 | { |
解析脚本.wdl
1 | version 1.0 |
执行示例脚本
1 | [2023-02-09 20:13:43,87] [info] BackgroundConfigAsyncJobExecutionActor [70365163wf_echo.cancer_fastq:0:1]: echo L2FastqA1 L2FastqA2 |
批次多样本解析
wdl在解析json时,最外层总会强制解析成一个object(输入 list 也无法识别为Array进行scatter操作),所以顶层必须使用object。
1 | {"All_Sample":[{ |
解析脚本
1 | version 1.0 |