在Nextflow中执行奇点容器时激活conda环境

时间:2019-06-04 14:43:35

标签: conda singularity-container

我正在使用奇点容器来运行Nextflow工作流管理系统中的命令。我在Singularity内部有一个conda环境,当我将其装入容器时可以激活它

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(pcgr)。我尝试过

%run
 source activate pcgr 

%post
 source activate pcgr

但这对我不起作用

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

我看不到这是怎么做的,但是我认为这很容易,而且我在很大程度上忽略了某些东西!

帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

以奇异的外壳在特殊环境中运行,因此对.bashrc的标准conda修改不起作用。相反,您需要修改$SINGULARITY_ENVIRONMENT变量。奇点定义文件中的以下几行应该可以正常工作:

# 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步骤中这样做。