• 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版本测试会比较快
  • 相关阅读:
    springcloud生态图
    redis持久化机制之AOF与RDB
    关键字的理解
    Java IO6 :IO总结
    Java IO5:管道流、对象流
    Java IO4:字符流进阶及BufferedWriter、BufferedReader
    Java IO3:字节流
    Java IO2:RandomAccessFile
    Java IO1:IO和File
    java学习笔记
  • 原文地址:https://www.cnblogs.com/raisok/p/11151430.html
Copyright © 2020-2023  润新知