美文网首页
【WDL】5. 实践与建议

【WDL】5. 实践与建议

作者: 生物信息与育种 | 来源:发表于2022-05-11 23:54 被阅读0次

    WDL开发工具IDE介绍

    语法校验:WOMtool

    https://cromwell.readthedocs.io/en/stable/WOMtool/

    脚本实践

    应用示例

    实践:WES简易流程编写

    从fastq质控到call SNP的流程?

    • 要点1:在WDL中添加判断语句,使数据达到某一标准后才执行bwa及后续步骤(fastp会输出fastq评价结果);

    • 要点2:bam index(samtools index),输出哪种类型的结果?

    • 要点3:如何实现多样本运行及vcf合并?

    一些建议

    程序粒度的切分

    • 基于Docker平台在作业运行中,涉及镜像的拉取,因此在编写流程时,尽量避免镜像重复使用;

    • 但把所有软件安装在一个镜像中会使得计算节点的资源占用过高;

    • 如果在command中使用管道,需用set -o pipefail;

    • 在task command中加入退出输出有助于排查错误原因。

    输入输出问题

    • 做到凡是task或workflow,必有输出(易排错);

    • 当流程中有分支时,应合理应用WDL自带函数,保证流程的弹性;

    • 合理使用select_first函数。

    合理使用sub-workflow

    • 使用子流程,不但可以保证代码可读性,还可更好地实现代码复用;

    • 但前提是,需要对输入输出有较好的命名规则。

    一些问题

    • WDL作为语法标准存在多种解析器,Cromwell作为其解析器的一种,对WDL官方语法支持不全面。如scatter嵌套(Cromwell支持,但官方文档中没有)。
    # can do this in cromwell 
    workflow foo{
        Map[String, Int] map
        scatter(pair in map){
            String key = pair.left
            Int value = pair.right
        }
        
        output{
            # automatically gathered from inside the scatter:
            Array[String] keys = key
            Array[Int] values = value
        }
    }
    
    • WDL应用场景还有一定限制(并非WDL本身额外难题,而是一些主流应用还在过渡期),如CellRanger,Pacbio的一系列应用。

    • 尽量充分的注释,以保证代码可维护性。

      参数的注释:{"## wgs.bam": "/path/to/sample.bam"}


    往期:
    【WDL】1. 语言介绍
    【WDL】2. 基础结构
    【WDL】3. 变量类型
    【WDL】4. 内置函数

    Ref
    http://www.xtaohub.com/WDL-Intro/WDL-lesson5.html
    http://www.xtaohub.com/WDL-Intro/WDL-lesson6.html

    相关文章

      网友评论

          本文标题:【WDL】5. 实践与建议

          本文链接:https://www.haomeiwen.com/subject/udzjurtx.html