更新时间:2021-03-18 GMT+08:00
分享

示例

本节通过一个简单的示例说明Cromwell的使用方法。

步骤1:WDL流程文件编写

使用Cromwell首先编写WDL流程文件,定义任务如何工作。Cromwell引擎使用WDL文件描述任务执行流程,WDL的语法规则请参见1.0 specification

下面是一个简单示例WDL流程示例“example.wdl”。详细解释如下:

  • 这个流程一共有3个步骤stepa、stepb、stepc,首先执行stepa,stepa使用firstInput 作为输入,且指定并发数为3;然后执行stepb,stepb使用stepa的输出stepa.out作为输入;然后执行stepc,stepc使用stepb的输出stepb.out作为输入。
  • 最后将stepc.out作为最终输出结果。
  • stepa、stepb、stepc中都定义了runtime运行时,指定了使用“swr.cn-north-1.myhuaweicloud.com/op_svc_gcs_container/cromwell:1.5.8”这个镜像,且指定了使用的资源大小为1核2G。
workflow example{
  File firstInput
  scatter (idx in range(3)) {
    call stepa { input: in=firstInput }
  }
  call stepb { input: in=stepa.out }
  call stepc { input: in=stepb.out }
  output {
    File result = stepc.out
  }
}
task stepa {
  File in
  command { cat ${in} > outputa.txt && cat outputa.txt}
  output { File out = "outputa.txt" }
  runtime {
    docker: "swr.cn-north-1.myhuaweicloud.com/op_svc_gcs_container/cromwell:1.5.8"
    cpu: "1"
    memory: "2G"
  }
}
task stepb {
  Array[File] in
  command { cat ${write_lines(in)} > outputb.txt && cat outputb.txt}
  output { File out = "outputb.txt" }
  runtime {
    docker: "swr.cn-north-1.myhuaweicloud.com/op_svc_gcs_container/cromwell:1.5.8"
    cpu: "1"
    memory: "2G"
  }
}
task stepc {
  File in
  command { cat ${in} > outputc.txt && cat outputc.txt}
  output { File out = "outputc.txt" }
  runtime {
    docker: "swr.cn-north-1.myhuaweicloud.com/op_svc_gcs_container/cromwell:1.5.8"
    cpu: "1"
    memory: "2G"
  }
}

上面流程定义了一个输入文件File firstInput,输入文件使用“.inputs”文件定义,如下“example.inputs”文件所示,example.firstInput使用“obs://gcs-tool-cn-north-1/example.txt”这个文件作为输入。

{
  "example.firstInput": "obs://gcs-tool-cn-north-1/example.txt",
}

步骤2:准备Cromwell环境

  • 定义了流程后,需要准备Cromwell环境,Cromwell环境创建方法请参见创建Cromwell引擎
  • example.wdl使用了“swr.cn-north-1.myhuaweicloud.com/op_svc_gcs_container/cromwell:1.5.8”这个镜像,这个镜像是公共镜像,可以直接使用。在其他流程中使用镜像,您需要先制作好镜像,然后上传到华为云容器镜像服务中,然后再使用。
  • example.inputs使用了OBS桶中的文件,“obs://gcs-tool-cn-north-1/example.txt”是一个公共可读文件,可以直接使用。在其他流程中使用文件,您可以先上传到OBS中,然后再使用。

步骤3:投递任务

环境准备好后,就可以投递任务了。

当前Cromwell引擎可以通过命令行和SDK两种方式使用。

  • SDK的使用方法请参见Python SDK参考。初始化后调用Cromwell相关接口即可投递任务。
  • 命令行使用方法请参见命令参考。安装命令行工具后,使用gcs sub wdl即可投递Cromwell任务。

这里使用命令行工具作为示例投递任务,如下所示。

gcs sub wdl example.wdl -i example.inputs -s gcs-env-test

gcs sub wdl是命令,example.wdl是流程文件,-example.inputs为输入文件,gcs-env-test是步骤2:准备Cromwell环境中创建的Cromwell环境的名称。

回显内容如下。
current environment is gcs-env-test
create wdl succeed
{
"id":
"aa215e0b-c896-4138-865e-6cf7921246b6",
"status": "Submitted",
"message": ""
}

步骤4:查看执行结果

任务投递后,您可以在基因容器控制台中实时查看任务的执行过程(包括执行结果热力图)、数据、状态、结果等信息。您还可以使用命令行直接查看,具体请参见gcs get wdl

图1 执行结果

相关文档