所有规则和“rules.rule_A.output.output_X”语法的解决方法

Workaround for all rule and `rules.rule_A.output.output_X` syntax

最新版本的 snakemake 允许(并鼓励)规则访问其他规则的输出,例如 rules.rule_A.output.ouput_1。这会大大减少重复和错误。但是,这种方法不适用于 all 规则,因为它必然首先存在于 Snakefile 中,因此无法访问尚未定义的规则。

作为一种解决方法,我找到了一种解决方法,其中 all 规则有一个输入 checkpoint 和一个 checkpoint 规则,它位于Snakefile 并枚举所需的最终输出 rules.rule_X.output.output_Y。但是,我发现此解决方法有些人为设计(导致未触及检查点但其输入被触及的问题)并且我很好奇是否有人有更好的方法。也可以修补 Snakemake,使 all 规则可以驻留在 Snakefile 的 end 处,尽管我不确定这是否可行。

这里的人对是否有像我讨论过的那样更清洁的环境有任何建议吗?或者 Snakemake 的补丁是否可以解决这个问题?

all规则确实可以存在于Snakefile的末尾。你只需要调用 snakemake -- all.