Snakemake:如果一个规则的输出文件已经生成了会怎样?

Snakemake: What will happen if the output file of a rule is already generated?

我是 snakemake 的新手,我从 github 下载了一个使用 snakemake 的软件包,我设法 运行 它一次,但由于我的数据太大,它花了 27几个小时来完成整个事情,但大约 99% 的时间花在了执行 1 条规则上,所以当该规则的输出文件已经存在时,我想跳过该特定规则。如果该规则的输出文件列在 rule all 部分中,snakemake 是否会自动跳过该规则?否则,我该怎么做才能跳过它?

从你描述的方式来看,是的,如果它的输出已经存在并且输出比输入更新,snakemake 将跳过那个 long-运行ning 规则。如果不满足第二个条件,snakemake 将再次 运行 规则。这是有道理的,对吧?如果输入已更新,则输出已过时,需要重做。请注意,snakemake 检查的是时间戳而不是文件的内容。

实际上,您可以使用 --dry-run 选项执行 snakemake 以确认它不会再次 运行 该规则。另请查看 --summary 选项以了解为什么 snakemake 要执行某些规则并跳过其他规则。

(有疑问,请复制 long-运行ning 规则的输出,以防万一...)