[英]How to limit usage of disk space in Snakemake?
我使用 8 个双端 fastq 文件,每个文件 150 GB,这些文件需要由具有空间要求的子任务的管道处理。 我尝试了几个选项,但磁盘空间仍然不足:
我使用以下执行将我的磁盘空间使用限制为 500GB,但显然这不能保证并且超过了 500GB。 如何将磁盘使用限制为固定值以避免磁盘空间不足?
snakemake --resources disk_mb=500000 --use-conda --cores 16 -p
rule merge:
input:
fw="{sample}_1.fq.gz",
rv="{sample}_2.fq.gz",
output:
temp("{sample}.assembled.fastq")
resources:
disk_mb=100000
threads: 16
shell:
"""
merger-tool -f {input.fw} -r {input.rv} -o {output}
"""
rule filter:
input:
"{sample}.assembled.fastq"
output:
temp("{sample}.assembled.filtered.fastq")
resources:
disk_mb=100000
shell:
"""
filter-tool {input} {output}
"""
rule mapping:
input:
"{sample}.assembled.filtered.fastq"
output:
"{sample}_mapping_table.txt"
resources:
disk_mb=100000
shell:
"""
mapping-tool {input} {output}
"""
Snakemake
没有限制资源的功能,但只能以尊重资源限制的方式安排作业。
现在, snakemake
使用resources
来限制并发作业,而您的问题具有累积性。 看一下这个答案,解决这个问题的一种方法是引入priority
,以便下游任务具有最高优先级。
在您的特定文件中,似乎为mapping
规则添加priority
就足够了:
rule mapping:
input:
"{sample}.assembled.filtered.fastq"
output:
"{sample}_mapping_table.txt"
resources:
disk_mb=100_000
priority: 100
shell:
"""
mapping-tool {input} {output}
"""
您可能还希望在最初启动规则时要小心(以避免用merge
的结果填满磁盘空间)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.