如何在Snakemake中只运行一条规则

时间:2019-04-24 14:00:48

标签: snakemake

我已经在snakemake中创建了一个工作流程,当我只想运行一条规则时遇到了一个问题。确实,对于我来说,它运行的是规则,其中输出是规则的输入,即使之前已经创建过这些规则。

示例:

rule A:
 input A
 output A

rule b:
 input b = output A
 output b

rule c:
 input c = output b
 output c

如何仅运行规则C?

3 个答案:

答案 0 :(得分:3)

如果存在依赖关系,我发现如果要运行规则C,只需运行--until,只有snakemake -R --until c可以工作。如果假设存在依赖性,例如共享的输入或输出路径,它将迫使您运行上游规则,而无需使用--until。总是先运行-n进行空运行。

答案 1 :(得分:1)

您刚刚运行:

snakemake -R b

要提前查看此操作,

snakemake -R b -n

-R选择一个规则(以及它的所有相关规则!),-n执行“空运行”,它只是打印不使用-n会执行的操作。

答案 2 :(得分:1)

您可以使用--allowed-rules选项。

snakemake --allowed-rules c

如果上游规则的输出文件已更改(包括是否已重新创建但内容已包含在内),Snakemake将尝试重新运行由输入/输出链链接到下游规则的上游规则。没有改变)。这种行为使Snakemake具有可重现性,但是如果您要调试管道的特定部分并且不想运行所有中间步骤,则可能不希望这样做。

请参阅以下讨论: https://bitbucket.org/snakemake/snakemake/issues/688/execute-specified-rule-only-and-not