SnakeMake не активирует среду conda - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть простой Snakefile, и у меня есть правило, которое использует среду Conda, определенную в файле конфигурации YAML.

Однако при запуске этого Snakefile Snakemake не активирует среду Conda и возвращает эту ошибку:

Error in rule read_file:
        jobid: 0
        conda-env: /data/projects/testproject/.snakemake/conda/805d8d2a

RuleException:
CalledProcessError in line 5 of /data/projects/testproject/scripts/snake/process.snake:
Command 'source activate /data/projects/testproject/.snakemake/conda/805d8d2a; set -euo pipefail;  emirge ' returned non-zero exit status 2
  File "/data/projects/testproject/scripts/snake/process.snake", line 5, in __rule_read_file
  File "/usr/lib/python3.5/concurrent/futures/thread.py", line 55, in run
Shutting down, this might take some time.
Exiting because a job execution failed. Look above for error message

Я попытался активировать среду Conda (созданную SnakeMake) вручную, используя source activate 805d8d2a и conda activate 805d8d2a, но безуспешно (сообщение об ошибке означает, что нет среды с указанным именем, однако, conda info --envs перечисляет ее как существующий). Для дальнейшего тестирования функциональности Conda я вручную создал среду Conda и смог активировать ее с помощью последней команды (команда source activate testenv не работает).

У меня вопрос: как мне автоматически активировать среду Conda из моего скрипта SnakeMake?

Конда версия: 4.5.11

SnakeMake версия: 5.2.4

Snakefile:

rule my_rule:
    conda:
        "emirge.yaml"
    shell:
        "emirge"

Emirge.yaml:

channels:
- bioconda
dependencies:
- emirge=0.61.1

Edit:

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

snakemake --use-conda

1 Ответ

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

Вы должны указать snakemake использовать conda в командной строке:

snakemake --use-conda

Состояние документа:

CONDA:
--use-conda
Если определено в правиле, запустите задание в среде conda.Если этот флаг не установлен, директива conda игнорируется.

Ошибка, которую вы имеете в том, что ваша команда оболочки не существует.
Snakemake выполняет команду

source activate /data/projects/testproject/.snakemake/conda/805d8d2a; set -euo pipefail;  emirge

Я думаю, что ваша среда правильно создана и активирована, но команда emirge не найдена.

...