【问题标题】:Prevent rules from rerunning when intermediate file is updated防止更新中间文件时重新运行规则
【发布时间】:2022-08-06 12:16:28
【问题描述】:

假设我的蛇形文件中有两条规则

  1. 第一条规则获取远程文件并制作临时本地副本
  2. 第二条规则使用本地文件并执行昂贵的任务

    现在假设我完成了这个管道,我想添加第三条规则并重新运行管道。

    1. 第三条规则使用相同的本地文件并执行不同的任务

    有没有一种方法可以在不重新运行规则 #2 的情况下运行这个更新的管道?问题是当我尝试完成规则 #3 时,规则 #1 被触发,然后规则 #2 想要重新运行,因为中间本地文件已更新。

    我知道存在使用touchancient 之类的技术,但我不确定它们如何或是否可以在这里应用。有没有办法专门将规则#1标记为不是进行更新?

    标签: python snakemake directed-acyclic-graphs orchestration


    【解决方案1】:

    将规则 2 和 3 的输入文件包装在 ancient 中应该可以防止它们对文件更新做出反应。像这样的东西:

    rule a:
         output: 'a.txt'
         shell: 'curl some_url > {output}'
    
    rule b:
         input: ancient('a.txt')
         # do something
    
    rule c:
         input: ancient('a.txt')
         # do something
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-07
      • 2015-01-18
      • 2021-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多