如何将默认脚本添加到奇点容器内的 运行?

How to add default script to run inside a singularity container?

我正在尝试基于预先构建的 anaconda2 映像构建一个奇点容器,例如:

singularity build --sandbox hmmhc.sif library://shahzebmsiddiqui/easybuild/anaconda2:5.2.0
singularity exec hmmhc.sif python --version
Python 2.7.15 :: Anaconda, Inc.

基于此,我使用 singularity shell 安装了 hmmhc 程序。我想知道如何在内部激活程序,例如运行 图像内部的以下行:

source ~/anaconda2/etc/profile.d/conda.sh
conda activate hmmhc

这样我就可以将其执行为:

singularity exec hmmhc.sif hmmhc-predict --help

如果您使用 Singularity definition file,则只能 add/edit 默认 运行 选项。我推荐此选项是为了可重复性,但在这种情况下并不是严格要求的。

假设您按照 github 中的安装说明进行操作,您为该包创建了一个新的 conda 环境。问题是因为 conda 环境不是默认环境。相反,您可以将软件包安装到 base/default conda 环境中,然后它将可用于 singularity exec

# in singularity shell
conda config --prepend channels bioconda
conda install ghmm=0.9 'icu=58.*'
pip install git+https://github.com/artyomovlab/hmmhc#egg=hmmhc

# check the image works as expected
singularity exec hmmhc.sif/ hmmhc-predict --help