Snakemake内存限制

时间:2018-01-31 12:33:53

标签: 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}  "

但我想要的是通过做某事来限制整个Snakefile的内存使用:

snakamake --snakefile mysnakefile_snakefile --resources mem_mb=100000

因此,并非所有作业都会使用100GB(如果我有5条规则,即500GB内存分配),但所有作业都将最大100GB(5个作业,总共100 GB分配?)

1 个答案:

答案 0 :(得分:2)

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

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