WDL學習筆記


WDL是什么?

  • WDL是由Broad Institute開發的一種流程開發語言,全稱workflow description language,官方鏈接如下:https://software.broadinstitute.org/wdl/

WDL的編寫

  • WDL有自己的語法規范,它是一種描述性語言,可讀性很高。
  • 每種語言都有自己的hello world,WDL也不例外,示例如下圖
workflow helloworld{
    call hello{}
}
task hello{
    String name="brother"
    command{
        echo "hello world" ${name}
    }
}

WDL可以分為兩個部分taskworkflow,而task部分主要由command和定義的部分組成,command用來寫你要運行的命令,定義的部分是一些你會用到的變量,變量包括不同的類型和數據結構,后面會詳細的介紹;workflow部分是用來調用寫好的task模塊,這里可以通過定義不同的輸入,設置不同的輸出來建立自己需要的工作流程,寫好的wdl流程文件一般以.wdl后綴結束。
程序的運行需要用到兩個不同的jar包運行命令如下:

java -jar womtool-31.jar inputs xxx.wdl > xxx.wdl.json
java -jar cromwell-31.jar run xxx.wdl -i xxx.wdl.json

WDL的變量

  • String: 字符串類型,例如String ABC=“test”
  • Float : 浮點型數字,for example 3.1459 (can be negative too).
  • Int: 整型的數字, for example 16 (can be negative too).
  • Boolean : 布爾類型 for example true or false.
  • File: 文件類型的對象一個文件名命名的對象
  • Array : 數組 for example [A,B,C,D] is an array of strings or Array[String] where we can pick the B element by taking the second element (index position 1 since WDL arrays are 0-indexed).
  • Map: 字典 for example {"color": "blue", "size": "large"} is a map of strings to strings or Map[String, String] where we can ask what is the color of our object.
  • Object : 對象,這個用的比較少

WDL的元件

  • basename
    basename與shell的語法一樣,用來得到一個路徑的文件名
  • call
    call 主要用於workflow中調用寫好的task模塊
  • command
    command 在這個模塊里面寫好需要運行的命令,是task的一部分
  • meta
    meta 可以寫一些描述信息
  • output
    output 定義task的輸出部分,可以是任何類型,也可以不寫這個部分
  • parmeter_meta
    parameter_meta 用於存放參數的一些描述信息
  • runtime
    runtime 用來定義在不同的平台運行時的一些變量,在集群運行時需要編寫一個配置文件用來定義一些投遞任務的屬性
  • task
    task 任務模塊,是需要調度的每一個模塊
  • variables
    variables 用來定義一些變量
  • workflow
    workflow 用來調用寫好的task模塊,生成相應的工作流

WDL的工作流類型

WDL會有不同的工作流格式,這里列舉一下官網的不同工作流

 

WDL的注意事項

  1. WDL如果在集群測試時,如果是自己來控制工作流程,需要將標准輸出和標准錯誤輸出輸出至文件,這樣輸出到屏幕的返回值才能被正常的獲取到
  2. WDL的local版本測試會比較快

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM