WDL中文教程

WDL中文教程

原文连接:https://github.com/openwdl/wdl/blob/main/versions/1.1/SPEC.md#workflow-description-language-wdl

该教程基于工作流描述语言(Workflow Description Language,WDL)1.1版本。相较于1.0版本,新增特性以✨符号标注。后续版本会移除的特征以🗑符号标注。

引言

工作流描述语言(Workflow Description Language),简称WDL,是一门开源的、标准化的以及人类可读写的用于描述任务和工作流的编程语言。WDL设计的初衷是作为一种通用的工作流程语言,但它在生物信息学领域应用最为广泛。WDL社区用户会在Dockstore上分享他们的工作流程实例。

该文档提供WDL的详细技术细节,WDL的新用户可能更适合类似learn-wdl这样更加友好的教程。

该部分展示一个WDL的简短例子,随后的章节为WDL用户提供介绍相关细节:

一个WDL工作流的例子

  task hello {
  input {
    File infile
    String pattern
  }
  command <<<
    egrep '~{pattern}' '~{infile}'
  >>>
  runtime {
    container: "my_image:latest"
  }
  output {
    Array[String] matches = read_lines(stdout())
  }
  }
  workflow wf {
  input {
    File infile
    String pattern
  }
  call hello {
    input: infile, pattern
  }
  output {
    Array[String] matches = hello.matches
  }
  }

上述WDL文件描述一个称为hellotask,和一个称为wfworkflow

  • task封装了一个Bash脚本和一个UNIX环境,并将它们表示为一个可复用的函数。

  • workflow封装用于指定任务调用的有向、无循环图,该图将输入数据转换为所需的输出。

workflows和tasks都能接收输入参数,也都能产生输出结果。例如,workflow wf有两个输入参数:File infileString pattern,有一个输出参数:Array[String] matches。这个简单的workflow调用task hello,该调用过程将workflow的输入传递为task的输入,并将call hello的调用结果作为workflow的输出结果。

执行一个WDL工作流

posted on 2022-04-11 22:43  葬花朴  阅读(1165)  评论(0编辑  收藏  举报