如何在不重跑整个Snakemake流程的情况下运行其中一部分?
解决Snakemake部分流程测试的问题
1. 绕开--rule的通配符限制
不要用--rule指定带通配符的规则,直接指定你要生成的具体输出文件路径,Snakemake会自动解析对应的规则和依赖链,只运行生成该文件所需的步骤:
snakemake results/sample1/your_target_output.txt
2. 解决“文件已存在但未正确生成”的问题
如果目标文件被Snakemake标记为已完成,但实际内容错误,不用删除全部输入文件,试试这几种方法:
- 强制重新生成单个目标文件:用
--force参数直接强制覆盖并重新生成指定文件:snakemake --force results/sample1/your_target_output.txt - 强制重新生成某条规则的所有输出:如果要测试的规则有多个通配符实例,用
--forcerule指定规则名,强制运行该规则的所有实例:snakemake --forcerule your_rule_name - 手动删除错误文件:只删除你要重新生成的错误输出文件,再运行指定目标的命令,Snakemake会自动重新构建:
rm results/sample1/your_target_output.txt snakemake results/sample1/your_target_output.txt
3. --allowed-rules的正确用法
--allowed-rules是限制流程只能使用指定规则,但如果目标文件已被标记为完成,Snakemake不会主动重新运行。可以结合--forcerule一起使用,强制在允许的规则范围内重新生成目标:
snakemake --allowed-rules your_rule_name --forcerule your_rule_name
内容的提问来源于stack exchange,提问作者dgode19
相关产品推荐
相关产品推荐

