Snakemake规则配置与断点续跑 - SpiralKernel/bioinfo-wiki GitHub Wiki

Snakemake规则配置与断点续跑

更新:2026-10-14;状态:可用;验证范围:人工基因案例与实际工具输出核对;具体已测范围见正文。

将输入、输出、参数和资源声明为规则,让工作流按依赖执行并明确需要交付的产物。

规则是产物契约

每条rule声明input、output和执行动作;目标反向确定所需依赖。配置保存可变路径与参数,shell中的路径用:q引用。资源声明只帮助调度,不保证工具绝不会超用内存。

本轮实际Snakemake9.27.0、Python3.14.8、本地单核;见官方入门、配置、规则。没有执行集群、云或容器调度。

为什么all要列出交付文件

本例有build_database、annotate、intervals、report四条计算规则。若all只要求已存在的summary,缺失的中间表不一定触发重建;这不是“任何文件少了都会自动恢复”。因此all还显式列出注释VCF、后果表和需要交付的区间表。

实际验证:首次运行四条计算规则;无变化重跑没有计算;删除交付表consequences.tsv后,只重跑annotate和report,数据库与区间结果复用,表内容校验值与原来一致。

恢复的边界

本轮验证的是缺失输出恢复,不是所有崩溃、中断和数据损坏情形。工作流通常依赖时间戳与元数据判断变化,不应假定自动校验每个内容位。本例报告阶段额外核对输入SHA和数据库SHA,拒绝混用旧结果。

完整操作见最小注释工作流与Snakemake恢复。失败时先保留日志、判断部分输出是否可信,再选择重新运行方式。