Snakemake 代码片段按维度组织:每个 snippet 只提供一个主框架,不同应用场景以注释形式并列,按需取消注释即可。默认组合为 container(Docker)+ shell。
配合 snakemake介绍、参数扩展实例 使用。
段末注释:User Snippets 是 VS Code / Cursor 的用户自定义代码片段,输入前缀后按
Tab展开。
1. 配置方式
全局 User Snippets(已配置),任意项目均可使用:
| 编辑器 | 路径 |
|---|---|
| Cursor | ~/Library/Application Support/Cursor/User/snippets/ |
| VS Code | ~/Library/Application Support/Code/User/snippets/ |
| 文件 | 前缀 |
|---|---|
snakemake.code-snippets |
smk-pipeline / smk-rule / smk-cluster / smk-run |
wdl.code-snippets |
wdl-file / wdl-workflow / wdl-task / wdl-tooling |
语言关联(User Settings):
1 | "files.associations": { |
修改片段:命令面板 → Snippets: Configure User Snippets → 选择对应文件。修改后 Reload Window 生效。
2. 片段速查
| 前缀 | 维度 | 说明 |
|---|---|---|
smk-pipeline |
流程骨架 | 文件头 + include 外部 rule + rule all |
smk-rule |
计算规则 | input/output/资源;执行体与运行环境可切换 |
smk-cluster |
集群投递 | cluster.yaml + SGE 投递命令 |
smk-run |
本地运行 | 常用 snakemake 命令 |
3. 主框架预览
3.1 smk-rule — 计算规则
1 | rule align: |
3.2 smk-pipeline — 流程骨架
1 | # version 1.0 |
include 引用规则: rule 定义在 rules/*.smk 中;主流程通过 include 引入,下游 rule 的 input 路径匹配上游 output 建立依赖;具体 rule 体用 smk-rule 展开。
4. snippets JSON
全局配置文件路径见 §1。完整 JSON 如下(备份 / 迁移用):
1 | { |
5. 场景切换说明
| 维度 | 默认 | 注释备选 |
|---|---|---|
| pipeline 编排 | config 校验 + include + rule 链 + rule all | 分支控制 Analysis/UnAnalysis、运行日志 |
| rule 引用 | input 路径匹配上游 output | rules.<name>.output.<key> 显式引用 |
| 执行体 | shell |
script(外部脚本)、run(内联 Python) |
| 运行环境 | container(Docker) |
singularity(sif 或 docker://)、conda |
| 辅助 | log + benchmark | priority、protected() 输出 |
Singularity 挂载详见 使用容器-singularity。