一个样本在下一次开始之前完成的Snakemake优先级

2022-04-02 00:00:00 python snakemake workflow

问题描述

我正在使用一个相当大的Snakemade文件来为30名患者调用突变。工作流程的第一步是对齐。我遇到的问题是,Snakemaker调度程序似乎首先为所有30名患者执行第一步(即比对)。这又需要大量(临时)磁盘空间(>;>;10TB)。这是非常无效的,因为当工作流完成时,一个患者只占用不到1 GB(仅VCF文件)。

所以我的问题是,是否有一种方法可以在开始对新患者进行配对(第一步)之前完成对一个患者的处理,同时仍然并行处理所有事情。

我尝试了--prioritize选项来确定工作流的最后一个规则的优先级,但似乎没有效果。

如有任何帮助,不胜感激!

干杯!


解决方案

这又需要大量(临时)磁盘空间

我我认为您可以设置disk_mbresource,使Snakemaker不会超过它。

例如,您有100 GB的磁盘空间,而每次对齐(最多)占用30 GB,以下应将Snakemake约束为同时最多运行3个对齐(并假设下一步需要的空间可以忽略不计-根据需要进行编辑):

rule align:
    input: 
        ...
    output: 
        ...
    resources:
        disk_mb=30000
    ...

运行方式:

snakemake --resources disk_mb=100000 ...

Snakemake: Tranverse DAG depth-first?处的答案应该有效,但是即使作业只需要很少的磁盘空间,您也必须一次运行一个作业。

相关文章