You need to enable JavaScript to run this app. 如何在不触发上游规则的前提下单独运行Snakemake的指定规则
优惠活动
大模型
产品
解决方案
定价
更多

如何在不触发上游规则的前提下单独运行Snakemake的指定规则

Snakemake从指定规则开始运行不触发上游的解决方案
  • 方案1:使用Snakemake 7.0+原生--from参数
    这个参数完全匹配你要的「从指定规则开始运行」的需求,只会执行指定规则及其所有下游规则,上游依赖的文件如果不存在直接报错,不会触发上游规则执行。
    执行命令示例:
    # 先执行dry run确认只有B、C会被执行
    snakemake --from B -n
    # 确认无误后实际运行
    snakemake --from B
    
  • 方案2:低版本Snakemake使用--allowed-rules参数
    手动指定允许执行的规则列表,不在列表里的规则完全不会被触发,上游文件缺失时直接报错:
    snakemake --allowed-rules B C -n
    snakemake --allowed-rules B C
    
  • 方案3:临时标记高成本规则为已完成
    如果你已经确认规则A的输出都存在,只是Snakemake误判需要重跑,可以先执行命令手动标记规则A的所有输出为最新状态,之后运行工作流就不会再触发规则A:
    snakemake -R A --touch
    

针对高成本规则容易被误触发的问题,可以在规则的输入中用ancient()修饰符修饰输入文件,示例如下:

rule A:
  input: ancient("{name}.in")
  output: "{name}.out"
  shell: "touch {input} {output}"

加了ancient()后,Snakemake只要检测到输出文件存在,就不会再检查输入文件的时间戳是否更新,直接判定规则不需要重跑,从根本上避免高成本规则被误触发。

内容的提问来源于stack exchange,提问作者Cornelius Roemer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 06:42:02