WDL后续一系列学习笔记均来自官方文档
本讲主要分为:
- 1.1 初识WDL
- 1.2 Cromwell参数
- 1.3 Cromwell运行的两种模式
1.1 初识WDL
初步认识WDL,是 Workflow Description Language
的缩写,有时也写作 Workflow Definition Language
,是美国 Broad Institute 推出的工作流描述语言。它很好的规范了目前串写流程的弊端,使得写出来的pipeline比较规范而且易于看懂。此外它适合很多平台,移植性高,能出来大规模投递任务。但是弊端就是不够灵活和中文学习资料很少。
1.2 Cromwell参数
对WDL语言进行解析是Cromwell
, 用java撰写的一个jar,它可以投递和监控任务,说白了它是把撰写好的WDL描述的任务投递上去并进行监控,而且提供了丰富的API,对于Cromwell
, 我们先看看它相关的参数:
cromwell 29
Usage: java -jar /path/to/cromwell.jar [server|run] [options] <args>...
--help Cromwell - Workflow Execution Engine
--version
Command: server, 投递模式
Starts a web server on port 8000. See the web server documentation for more details about the API endpoints.
Command: run [options] workflow-source, 直接运行模式
Run the workflow and print out the outputs in JSON format.
workflow-source Workflow source file or workflow url , 输入写好的WDL文件
--workflow-root <value> Workflow root
-i, --inputs <value> Workflow inputs file, 一般记录输入文件
-o, --options <value> Workflow options file, 一般记录运行时候的参数
-t, --type <value> Workflow type, 就是'-t wdl'
-v, --type-version <value>, wdl的语言版本,目前程序忽略
Workflow type version.
-l, --labels <value> Workflow labels file.
-p, --imports <value> A zip file to search for workflow imports, 引用其他WDL
-m, --metadata-output <value>
An optional JSON file path to output metadata.
1.3 Cromwell运行的两种模式
类似我们经常写的sh
脚本,WDL也是分为投递server mode
和直接运行run mode
两种模式。
server mode
的优势:
- 可以并行处理多个 workflow,适用于生产环境
- 有 Call caching 等高级特性,优化 workflow 的执行
- 提供丰富的 workflow metadata,来展示 workflow 的执行过程
## 先命令启动一个 HTTP server
java -Dconfig.file=application.conf -jar cromwell.jar server
## 使用 RESTful API 提交工作流到 server 执行
java -jar cromwell.jar submit -t wdl -i input.json -o option.json -h http://localhost:8000
run mode
## 用来执行单个 WDL,适用于调试初期,快速执行一个WDL
java -jar cromwell.jar run echo.wdl --inputs input.json
网友评论