Активировать среду conda при выполнении контейнера Singularity в Nextflow - PullRequest
0 голосов
/ 04 июня 2019

Я использую контейнеры Singularity для запуска команд из системы управления рабочим процессом Nextflow. У меня есть среда conda внутри Singularity, которую я могу активировать, когда заливаю в контейнер

singularity pull shub://brucemoran/Singularity:pcgr.centos7
singularity shell brucemoran-Singularity-pcgr.centos7.img
#<inside container>
source activate pcgr

Когда Nextflow выполняется, я определил source activate pcgr, который, я думаю, должен активировать conda env. Но я получаю unbound variable HOST предупреждение. Я думаю, что это относится к неактивации и последующему использованию переменных, которые должны быть определены, если env был активирован (?).

Я бы хотел, чтобы контейнер активировал env (pcgr) всякий раз, когда он выполняется. Я пробовал с

%run
 source activate pcgr 

и

%post
 source activate pcgr

но это не работает для меня

singularity exec pcgr.img which pcgr.py
which: no pcgr.py in ...

Я не могу понять, как это сделать, но предположить, что это легко, и я что-то упускаю из виду!

Помощь оценена.

1 Ответ

1 голос
/ 07 июня 2019

Оболочка в единственном числе работает в специальной среде, поэтому стандартные модификации conda для .bashrc не работают.Вместо этого вам нужно изменить переменную $ SINGULARITY_ENVIRONMENT .Что-то вроде этих строк в вашем файле определения Singularity должно работать:

# set to whatever your conda path is, I usually install to /opt
echo "source /opt/conda/etc/profile.d/conda.sh" >> $SINGULARITY_ENVIRONMENT
echo "conda activate pcgr" >> $SINGULARITY_ENVIRONMENT

Таким образом, среда conda будет автоматически активирована.Если вы предпочитаете активировать его вручную в своих шагах, вы можете пропустить вторую строку и сделать это в ваших %run шагах.

...