Использование среды Conda в SnakeMake на кластерной проблеме SGE - PullRequest
0 голосов
/ 10 сентября 2018

Похожие: Правило 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?

1 Ответ

0 голосов
/ 10 сентября 2018

Возможно, вам нужно отправить переменные окружения в 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)

...