GATK --- wdl 語言

GATK的pipeline使用WDL進行編寫java

WDL是一種流程管理語言,內置的支持並行,適合編寫pipelinejson

運行wdl腳本須要兩步:第一步編輯參數列表對應的json文件,第二步直接運行Cromwell.jarspa

egcode

workflow helloWorld{
    call myTask;
}

task myTask{
    commond{
        echo "hello world"
    }
    
    output {
        String out = read_string(stdout())
    }
}

對於一個WDL腳本,有5個核心結構:blog

1,workflowip

2, task:表明任務,讀取輸入文件,執行相應的commond,而後輸出output。task中能夠有參數。input

3, callworkflow

4, commondstring

5, outputpip

一個腳本包括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]

相關文章
相關標籤/搜索