首页 > 解决方案 > 一个样本在下一次开始之前完成的 Snakemake 优先级

问题描述

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

所以我的问题是,是否有一种方法可以“强制”snakemake 在开始对新患者进行对齐(第一步)之前完成对一名患者的处理,同时仍然使所有内容并行化。

我尝试了--prioritize优先考虑工作流的最后一条规则的选项,但这似乎没有奏效。

任何帮助深表感谢!

干杯!

标签: pythonworkflowsnakemake

解决方案


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

认为您可以设置disk_mb 资源以使蛇形不会超过它。

例如,您有 100 GB 的磁盘空间,每个对齐(最多)占用 30 GB,以下应该限制 snakemake 最多同时运行 3 个对齐(假设接下来的步骤需要的空间可以忽略不计 - 根据需要进行编辑) :

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

运行为:

snakemake --resources disk_mb=100000 ...

Snakemake的答案:Tranverse DAG 深度优先?应该可以工作,但是即使作业需要很少的磁盘空间,您也必须一次运行 1 个作业。


推荐阅读