WDL 代码片段按维度组织:每个 snippet 只提供一个主框架,不同应用场景以注释形式并列,按需取消注释即可。语法基于 WDL v1.0;默认组合为 runtime docker + command <<< >>>。
段末注释:WDL(Workflow Description Language)是 Broad Institute 推出的工作流描述语言。
1. 配置方式
全局 User Snippets(已配置),任意项目均可使用:
| 编辑器 | 路径 |
|---|---|
| Cursor | ~/Library/Application Support/Cursor/User/snippets/ |
| VS Code | ~/Library/Application Support/Code/User/snippets/ |
| 文件 | 前缀 |
|---|---|
wdl.code-snippets |
wdl-file / wdl-workflow / wdl-task / wdl-structure / wdl-tooling |
snakemake.code-snippets |
Snakemake 片段(见 Snakemake 模板) |
WDL 语法高亮需安装 WDL 插件。
修改片段:命令面板 → Snippets: Configure User Snippets → 选择 wdl.code-snippets。
工具链:womtool validate / womtool inputs / cromwell run,详见 开发应用环境配置。
2. 片段速查
| 前缀 | 维度 | 说明 |
|---|---|---|
wdl-file |
完整脚本 | 文件头 + import + workflow |
wdl-workflow |
流程编排 | 文件头 + import task/subworkflow + call 链 |
wdl-task |
计算任务 | command + runtime;Docker 默认启用 |
wdl-structure |
数据结构 | struct / Array / Map / Object / Pair |
wdl-tooling |
工具命令 | womtool 校验、inputs 生成、Cromwell 投递 |
3. 主框架预览
3.1 wdl-task — 计算任务
1 | task align { |
3.2 wdl-structure — 数据结构
适用于 structs/*.wdl,默认展开三层 struct;复合类型、读写与 scatter 以注释提供。
1 | version 1.0 |
详见 变量的数据结构。
3.3 wdl-workflow — 流程编排
1 | version 1.0 |
import 引用规则:
| 类型 | 语法 | call 示例 |
|---|---|---|
| 外部 task | import "tasks/align.wdl" as align_lib |
call align_lib.align as align |
| 外部 subworkflow | import "subworkflow/variant.wdl" as variant_lib |
call variant_lib.variant_call |
| 引用输出 | — | align.bam(call 别名 + output 变量名) |
3.4 wdl-file — 完整脚本
与 wdl-workflow 相同文件头 + import,workflow 内 call 外部 task/subworkflow(不含内联 task 定义;task 放 tasks/*.wdl)。
4. snippets JSON
全局配置文件路径见 §1。完整 JSON 如下(备份 / 迁移用):
1 | { |
5. 场景切换说明
| 维度 | 默认 | 注释备选 |
|---|---|---|
| 数据结构 | struct 三层嵌套 | primitive、Array、Map、Object、Pair、?、+ |
| command | <<< >>>(v1.0) |
{ } 花括号(draft-2 兼容) |
| runtime | 含 docker |
仅 cpu / memory(本地或无容器后端) |
| workflow 编排 | 线性 call 链(align.bam 引用上游输出) |
as 别名、scatter/if + select_first、import 子流程 |
| 数据输入 | workflow input | read_tsv / read_json(见 内置函数) |
嵌套 scatter 完整案例见 demo示例。