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]

  • 相关阅读:
    PostgreSQL 9.6.2版本在centOS下的安装和配置
    postgreSQL 创建user表时引发的表名大写与双引号问题
    Go JSON嵌套解析失败
    面试杂谈:面试程序员时都应该考察些什么?<转>
    Golang bash脚本自动创建一个go工程
    iOS Debug心得 (持续更新)
    iOS 上传APP到AppStore 卡在 Authenticating with the iTunes store 提示
    iOS 应用打包 设备兼容性问题(Build Active Architecture Only)
    Go 使用自定义包(package)
    Go 连接PostgreSQL数据库
  • 原文地址:https://www.cnblogs.com/lyyao/p/9799280.html
Copyright © 2011-2022 走看看