我在snakemake中创建了一个工作流程,当我只想运行一个规则时遇到了问题。事实上,它为我运行规则,其中输出是我规则的输入,即使这些规则之前已经创建。
例子 :
rule A:
input A
output A
rule b:
input b = output A
output b
rule c:
input c = output b
output c
Run Code Online (Sandbox Code Playgroud)
我怎样才能只运行规则 C?
小智 7
您可以使用 --allowed-rules 选项。
snakemake --allowed-rules c
Run Code Online (Sandbox Code Playgroud)
如果上游规则的输出文件已更改(包括如果它们已重新创建但内容尚未更改),Snakemake 将尝试重新运行由输入/输出链链接到下游规则的上游规则改变)。这种行为使 Snakemake 具有可重复性,但如果您尝试调试管道的特定部分并且不想运行所有中间步骤,则可能不希望这样做。
请参阅此讨论: https://bitbucket.org/snakemake/snakemake/issues/688/execute-specified-rule-only-and-not
如果存在依赖关系,我发现只有--until在您想运行规则 C just run时才有效snakemake -R --until c。如果存在假定的依赖关系,例如共享输入或输出路径,它将强制您运行上游规则而不使用--until. 始终先运行并-n进行空运行。
你只需运行:
snakemake -R b
Run Code Online (Sandbox Code Playgroud)
提前看看这会做什么:
snakemake -R b -n
Run Code Online (Sandbox Code Playgroud)
-R 选择一个规则(以及它的所有依赖规则!),-n 进行“试运行”,它只是打印没有 -n 时会执行的操作。
| 归档时间: |
|
| 查看次数: |
5187 次 |
| 最近记录: |