zoukankan      html  css  js  c++  java
  • GATK --- wdl 语言

    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]

  • 相关阅读:
    ASP.NET Cookies的使用
    How to trigger editing of elements inside a reorderlist?
    Not in 的LinQ实现
    .Net中TextBox回车捕捉
    多个TermQuery或一个MultiFieldQueryParser构建BooleanQuery多个域的检索学习实例代码
    ASP.NET的异常处理
    一些有用的API 之 飛信發短信
    C# lock 避免多人同时操作
    一個人性化的“Error 404”,不要錯過!
    SQL索引系列(四)
  • 原文地址:https://www.cnblogs.com/lyyao/p/9799280.html
Copyright © 2011-2022 走看看