【问题标题】:Snakemake: What will happen if the output file of a rule is already generated?Snakemake:如果规则的输出文件已经生成,会发生什么?
【发布时间】:2021-07-09 12:28:23
【问题描述】:

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

【问题讨论】:

    标签: snakemake


    【解决方案1】:

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

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

    (如有疑问,请复制长期运行规则的输出,以防万一......)

    【讨论】:

    • 嗨@dariober,--dry-run 和--summary 帮了大忙!我发现了一个问题,即规则接受的输入可能在我每次运行蛇文件时都会更新,因此尽管我已经拥有上一次运行的输出文件并且没有更改任何内容,但它并没有被跳过。可能是开发人员的一个错误,我通过添加一个条件语句来绕过它,如果指定的文件已经存在,则建议不要运行该规则。非常感谢您的帮助!
    • @AndreasAdinatha 查看ancient 标志以忽略输入的时间戳。
    猜你喜欢
    • 2021-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多