Приоритеты Snakemake: один образец завершается до начала следующего

Я использую довольно большой файл змейки, чтобы вызвать мутации для 30 пациентов. Первым этапом рабочего процесса является выравнивание. Проблема, с которой я сталкиваюсь, заключается в том, что планировщик змейки, кажется, сначала выполняет первый шаг (то есть выравнивание) для всех 30 пациентов. Это, в свою очередь, требует огромного (временного) дискового пространства (›› 10 ТБ). Это совершенно неэффективно, потому что после завершения рабочего процесса один пациент занимает менее 1 ГБ (только файлы vcf).

Итак, мой вопрос в том, есть ли способ заставить snakemake завершить обработку одного пациента перед началом выравнивания (первый шаг) для нового пациента, при этом все еще распределяя все параллельно.

Я попробовал вариант --prioritize, чтобы установить приоритет последнего правила рабочего процесса, но, похоже, это не помогло.

Любая помощь высоко ценится!

Ваше здоровье!


person nhaus    schedule 30.04.2021    source источник
comment
Отвечает ли это на ваш вопрос? Snakemake: Tranverse DAG в глубину?   -  person Maarten-vd-Sande    schedule 30.04.2021


Ответы (1)


Это, в свою очередь, требует огромного (временного) дискового пространства.

Я думаю, что вы можете установить disk_mb ресурс таким образом, чтобы змейка не превысила его.

Например, у вас есть 100 ГБ дискового пространства, и каждое выравнивание занимает (максимум) 30 ГБ, следующее должно ограничивать snakemake запускать не более 3 выравниваний одновременно (и предполагая, что для следующих шагов потребуется незначительное пространство - отредактируйте при необходимости) :

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

Беги как:

snakemake --resources disk_mb=100000 ...

Ответ на Snakemake: Tranverse DAG depth-first? должен работать, но тогда у вас будет для запуска по одному заданию за раз, даже если заданиям требуется мало места на диске.

person dariober    schedule 30.04.2021