为什么我的带通配符的 snakemake 规则变成了本地规则?
Why is my snakemake rule with wildcards turned into a localrule?
所以,我制作了这个简单的 Snakefile,我想知道为什么我的规则被解释为 localrule
。通常这不是问题,但对于我需要提交给 SLURM 的运行来说是问题。我让它工作的唯一方法是在没有通配符的情况下显式编写规则。然后它没有被解释为localrule。但是后来我显然失去了通配符对我的规则的所有好处......我想我在这里缺少一些东西!
rule test:
output: "bla4_out.txt",
rule test_wild:
input: "bla{num}.txt",
output: "bla{num}_out.txt",
shell:
"""
touch {output}"
"""
这个:
snakemake -n -R test
导致
Building DAG of jobs...
Job stats:
job count min threads max threads
----- ------- ------------- -------------
test 1 1 1
total 1 1 1
[Mon May 9 13:02:41 2022]
localrule test:
output: bla4_out.txt
jobid: 0
resources: tmpdir=/tmp
Job stats:
job count min threads max threads
----- ------- ------------- -------------
test 1 1 1
total 1 1 1
This was a dry-run (flag -n). The order of jobs does not reflect the order of execution.
如果规则没有执行某些操作的指令,例如 shell
或 run
,则该规则被标记为本地。我想这是有道理的......尝试向你的规则 test
添加一个虚拟 shell
指令,看看会发生什么。
所以,我制作了这个简单的 Snakefile,我想知道为什么我的规则被解释为 localrule
。通常这不是问题,但对于我需要提交给 SLURM 的运行来说是问题。我让它工作的唯一方法是在没有通配符的情况下显式编写规则。然后它没有被解释为localrule。但是后来我显然失去了通配符对我的规则的所有好处......我想我在这里缺少一些东西!
rule test:
output: "bla4_out.txt",
rule test_wild:
input: "bla{num}.txt",
output: "bla{num}_out.txt",
shell:
"""
touch {output}"
"""
这个:
snakemake -n -R test
导致
Building DAG of jobs...
Job stats:
job count min threads max threads
----- ------- ------------- -------------
test 1 1 1
total 1 1 1
[Mon May 9 13:02:41 2022]
localrule test:
output: bla4_out.txt
jobid: 0
resources: tmpdir=/tmp
Job stats:
job count min threads max threads
----- ------- ------------- -------------
test 1 1 1
total 1 1 1
This was a dry-run (flag -n). The order of jobs does not reflect the order of execution.
如果规则没有执行某些操作的指令,例如 shell
或 run
,则该规则被标记为本地。我想这是有道理的......尝试向你的规则 test
添加一个虚拟 shell
指令,看看会发生什么。