snakemake temp()导致不必要的规则重新运行

时间:2019-02-13 07:48:47

标签: snakemake

我正在使用snakemake v 5.4.0,并且遇到了temp()问题。在一个假设的情况下:

Rule A --> Rule B1 --> Rule C1
     |
      --> Rule B2 --> Rule C2 

where Rule A generates temp() files used by both pathways 1 (B1 + C1) and 2 (B2 + C2).

如果我运行管道,则在两个路径中使用完后,RuleA生成的temp()文件将被删除,这是我所期望的。但是,如果我随后要重新运行Pathway 2,则必须重新创建RuleA的temp()文件,这将触发整个管道的重新运行,而不仅仅是Pathway2。对于长管线,这在计算上变得非常昂贵。除了不使用temp()(在我的情况下,这将需要大量TB的额外硬盘空间)之外,还有什么好方法可以防止这种情况发生?

1 个答案:

答案 0 :(得分:0)

您可以根据路径2的输出是否已经存在(并满足某些健全性检查)来动态创建规则dimension = "type"或第一个调用规则的输入文件列表。

all

但是,这在一定程度上抵制了使用snakemake的观点。如果必须重新创建路径1的输入,那么如何确定其输出仍是最新的?