Использование среды Conda в SnakeMake на проблеме кластера SGE

Связано: Правило SnakeMake со скриптом Python, conda и кластером

Я пытался настроить свои конвейеры SnakeMake для работы на кластерах SGE (qsub). Нет проблем с использованием простых команд или инструментов, которые устанавливаются непосредственно на вычислительные узлы. Однако возникает проблема, когда я пытаюсь настроить SnakeMake для загрузки инструментов через Conda на узлах SGE.

Мой тестовый файл Snakefile:

rule bwa_sge_c_test:
    conda:
        "bwa.yaml"
    shell:
        "bwa > snaketest.txt"

Файл "bwa.yaml":

channels:
    - bioconda
dependencies:
    - bwa=0.7.17

Я запускаю SnakeMake командой:

snakemake -d "/home/<username>" --use-conda --cluster "qsub -cwd -q testing-nod08" --jobs 1

В результате я получаю такую ​​ошибку в вычислительном узле SGE:

/usr/bin/python3: No module named snakemake.__main__; 'snakemake' is a package and cannot be directly executed
touch: cannot touch '/home/krampl/.snakemake/tmp.7le8izvw/0.jobfailed': No such file or directory

Я попытался добавить snakemake = 5.2.2 к bwa.yaml (как предложил коллега), но ошибка осталась.

У меня следующие вопросы: что вызывает эту ошибку и как ее исправить, чтобы я мог запускать среды Conda из SnakeMake в кластерах SGE?


person user44697    schedule 10.09.2018    source источник


Ответы (1)


Вероятно, вам нужно отправить переменные среды в qsub.

snakemake -d "/home/<username>" --use-conda --cluster "qsub -V -cwd -q testing-nod08" --jobs 1

-V отправит все ваши переменные среды в задание qsub, включая ваш PATH. Чтобы отправить задание через SGE, я обычно создаю сценарий, который инкапсулирует мои задания:

sge.sh

#$ -cwd
#$ -V
#$ -e ./logs/
#$ -o ./logs/

{exec_job}

Конечно, вы можете использовать другие параметры, такие как -q, а затем использовать snakemake следующим образом:

snakemake --cluster "qsub" --jobscript sge.sh ....

(не забудьте создать папку журналов перед вызовом snakemake)

person Eric C.    schedule 10.09.2018