Snakemake内存限制

bap*_*ors 6 memory resources snakemake

Snakemake中,我有 5 条规则。对于每个选项,我都设置了内存限制resources mem_mb。它看起来像这样:

rule assembly:
     input:
         file1 = os.path.join(MAIN_DIR, "1.txt"), \
         file2 = os.path.join(MAIN_DIR, "2.txt"), \
         file3 = os.path.join(MAIN_DIR, "3.txt")
     output:
         foldr = dir, \
         file4 = os.path.join(dir, "A.png"), \
         file5 = os.path.join(dir, "A.tsv")
     resources:
         mem_mb=100000
     shell:
         " pythonscript.py -i {input.file1} -v {input.file2} -q {input.file3} --cores 5 -o {output.foldr}  "
Run Code Online (Sandbox Code Playgroud)

Snakefile我想通过执行以下操作来限制整体的内存使用:

snakamake --snakefile mysnakefile_snakefile --resources mem_mb=100000
Run Code Online (Sandbox Code Playgroud)

因此,并非所有作业都会使用100GB每个作业(如果我有 5 个规则,即500GB内存分配),但它们的所有执行都将是最大的100GB(5 个作业,100 GB分配总数?)

Joh*_*ter 7

命令行参数设置总限制。Snakemake调度程序将确保对于正在运行的作业集,资源总和mem_mb不会超过总限制。

我想这正是你想要的,不是吗?您只需在规则本身中设置每个作业的预期内存即可。请注意,Snakemake 不会为您测量这一点。您必须在规则中自己定义该值。例如,如果您希望您的作业使用 100MB 内存,请输入mem_mb=100该规则。