根据我对 Snakemake 文档的理解,如果我用重复注释规则的基准文件,它应该运行该规则特定的次数,以便了解计时和内存测量的可变性。但是,当我查看要分析的规则的基准文件时,只有记录的第一个测量结果似乎是准确的,并且前面的测量结果非常小,就好像该规则没有真正重新运行一样。我对重复注释的理解不正确还是这是 Snakemake 的一个错误?
这是我的 Snakemake 文件中的规则,我试图使用重复注释来分析它。
rule br:
input:
dicz = "output/br/{prefix}/{ref}/{prefix}.{ref}.br.dicz",
parse = "output/br/{prefix}/{ref}/{prefix}.{ref}.br.parse",
script = config["script"]
benchmark: repeat("benchmarks/br/{prefix}.{ref}.br.script.benchmark.txt", 3),
threads: 32,
params:
outprefix = "output/br/{prefix}/{ref}/{prefix}.{ref}.br"
output:
C = "output/br/{prefix}/{ref}/{prefix}.{ref}.br.C",
R = "output/br/{prefix}/{ref}/{prefix}.{ref}.br.R",
log = "output/br/{prefix}/{ref}/{prefix}.{ref}.br.log"
shell:
"""
module load gcc
{input.script} {params.outprefix} -t {threads}
"""
这是根据此规则生成的基准文件
s h:m:s max_rss max_vms max_uss max_pss io_in io_out mean_load cpu_time
468.4567 0:07:48 12440.35 12493.91 12432.10 12435.02 2039.47 2441.37 85.57 427.32
1.8935 0:00:01 15.63 105.46 9.15 10.48 0.00 0.00 9.00 0.26
0.9830 0:00:00 13.86 103.52 7.23 8.61 0.00 0.00 0.00 0.16
考虑脚本重新运行后会做什么。如果第一次运行的结果仍然存在,您可能需要删除它们。这里的问题是您丢失了输出,因此可能会将它们复制到新目录。
rule br:
input:
dicz = "output/br/{prefix}/{ref}/{prefix}.{ref}.br.dicz",
parse = "output/br/{prefix}/{ref}/{prefix}.{ref}.br.parse",
script = config["script"]
benchmark: repeat("benchmarks/br/{prefix}.{ref}.br.script.benchmark.txt", 3),
threads: 32,
params:
outprefix = "output/br/{prefix}/{ref}/{prefix}.{ref}.br"
output:
C = temp("output/br/{prefix}/{ref}/{prefix}.{ref}.br.C"),
R = temp("output/br/{prefix}/{ref}/{prefix}.{ref}.br.R"),
log = temp("output/br/{prefix}/{ref}/{prefix}.{ref}.br.log")
shell:
"""
module load gcc
{input.script} {params.outprefix} -t {threads}
"""