Activate conda environment on execution of Singularity container in Nextflow

僤鯓⒐⒋嵵緔 提交于 2020-02-23 08:34:02

问题


I am using Singularity containers to run commands from Nextflow workflow management system. I have a conda environment inside Singularity which I can activate when I shell into the container

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

When Nextflow executes I have defined to source activate pcgr which I think should activate the conda env. But I get an unbound variable HOST warning. I think that relates to the non-activation and subsequent use of variables that should be defined if the env was activated(?).

I would like the container to activate the env (pcgr) whenever it is executed. I tried with

%run
 source activate pcgr 

and

%post
 source activate pcgr

but this doesn't work for me

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

I cannot see how this is done, but presume it is easy and I am massively overlooking something!

Help appreciated.


回答1:


The shell in singularity runs in a special environment, so the standard conda modifications to the .bashrc do not work. Instead, you need to modify the $SINGULARITY_ENVIRONMENT variable. Something along these lines in your Singularity definition file should work:

# 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

This way the conda environment will automatically be activated. If you prefer to activate it manually in your steps, you can leave out the second line and do so in your %run steps.



来源:https://stackoverflow.com/questions/56446195/activate-conda-environment-on-execution-of-singularity-container-in-nextflow

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!