Skip to content
Snippets Groups Projects
Commit 143ea897 authored by Rafal Gumienny's avatar Rafal Gumienny
Browse files

feat: SCHWED-3097 Add Singularity definition file

parent c44ee70d
No related branches found
No related tags found
No related merge requests found
OST Singularity
===============
.. note::
In order to run some singularity commands there might be a need to run them as root (sudo).
Build Singularity image
------------------
In order to build OST Singularity image:
.. code-block:: bash
cd <OST ROOT>/singularity
singularity build ost.img Singularity.1.7.1
One can chose any name for an image. For the purose of this file we will assume
that the image name is `ost.img`.
Run script using OST
--------------------
In order to run OST script do:
.. code-block:: bash
singularity run --app OST ost.img <SCRIPT NAME> [SCRIPT OPTIONS]
.. warning::
If script requires some external files eg. PDBs, they have to be located in the
path accessible via mounted volume. By default Singularity mounts $HOME and
goes to CWD. Thus this sould work as expected.
One can find a exemplary script (`test_docker.py`) in the <OST ROOT>/docker
directory. To run it do:
.. code-block::
cd <OST ROOT>/singularity
singularity run --app OST ost.img ../docker/test_docker.py
Available apps
--------------
TODO
BootStrap: docker
From: ubuntu:16.04
%post
##############################################################################
# POST
##############################################################################
# CHANGE DASH TO BASH
rm /bin/sh
ln -sf /bin/bash /bin/sh
# DEFINE SOME ENV VARS USED DURING THE IMAGE BUILD
##########################
export SRC_FOLDER="/usr/local/src"
export CPUS_FOR_MAKE=8
export PYTHONPATH="/usr/local/lib64/python2.7/site-packages:${PYTHONPATH}"
export OPENSTRUCTURE_VERSION="1.7.1"
export OPENSTRUCTURE_SHARE="/usr/local/share/ost"
export MSMS_VERSION="2.6.1"
export OPENMM_VERSION="7.1.1"
export DSSP_VERSION="2.2.1"
export OPENMM_INCLUDE_PATH=/usr/local/openmm/include/
export OPENMM_LIB_PATH=/usr/local/openmm/lib/
export JUPYTER_CONFIG_DIR="/usr/local/etc/jupyter"
export JUPYTER_PATH="/usr/local/share/jupyter"
export JUPYTER_RUNTIME_DIR="$JUPYTER_PATH/runtime"
export VIRTUALENV_DIR="/usr/local/share/ost_venv"
# INSTALL SYSTEM DEPS
#####################
apt-get update -y && apt-get install -y cmake \
sip-dev \
libtiff-dev \
libfftw3-dev \
libeigen3-dev \
libboost-all-dev \
libpng-dev \
python-all \
python2.7 \
python-qt4 \
qt4-qtconfig \
qt4-qmake \
libqt4-dev \
libpng-dev \
wget \
git \
gfortran \
python-pip \
tar \
libbz2-dev \
doxygen \
swig \
clustalw \
python-virtualenv
# SET UP VIRTUALENV
###################
virtualenv --system-site-packages $VIRTUALENV_DIR
. $VIRTUALENV_DIR/bin/activate
# INSTALL REQUIRED PYTHON PACKAGES
##################################
pip install --upgrade pip && pip install numpy==1.10.4 \
scipy==1.0.0 \
pandas==0.22.0 \
jupyter==1.0.0 \
nglview==1.0
# DOWNLOAD AND INSTALL MSMS
##############
cd ${SRC_FOLDER}
if [ ! -f msms_i86_64Linux2_${MSMS_VERSION}.tar.gz ]; then
mkdir -p msms
cd msms
wget http://mgltools.scripps.edu/downloads/tars/releases/MSMSRELEASE/REL${MSMS_VERSION}/msms_i86_64Linux2_${MSMS_VERSION}.tar.gz
tar -xvzf msms_i86_64Linux2_${MSMS_VERSION}.tar.gz
cp -v ${SRC_FOLDER}/msms/msms.x86_64Linux2.${MSMS_VERSION} /usr/local/bin/msms
cp -v ${SRC_FOLDER}/msms/pdb_to_xyzr /usr/local/bin/pdb_to_xyzr
cp -v ${SRC_FOLDER}/msms/pdb_to_xyzrn /usr/local/bin/pdb_to_xyzrn
fi
# COMPILE OPENMM FROM SOURCES. INSTALL TO /usr/local
############################
cd ${SRC_FOLDER}
if [ ! -f openmm-${OPENMM_VERSION}.tar.gz ]; then
wget -O openmm-${OPENMM_VERSION}.tar.gz -nc https://github.com/pandegroup/openmm/archive/${OPENMM_VERSION}.tar.gz
mkdir ${SRC_FOLDER}/openmm-${OPENMM_VERSION}
tar xf openmm-${OPENMM_VERSION}.tar.gz -C ${SRC_FOLDER}/openmm-${OPENMM_VERSION} --strip-components=1
mkdir -p ${SRC_FOLDER}/openmm-${OPENMM_VERSION}/build && cd ${SRC_FOLDER}/openmm-${OPENMM_VERSION}/build
cmake .. && make -j $CPUS_FOR_MAKE && make install
cd ${SRC_FOLDER}/openmm-${OPENMM_VERSION}/build/python && python setup.py build && python setup.py install
fi
# COMPILE AND INSTALL DSSP
##############
cd ${SRC_FOLDER}
if [ ! -f dssp-${DSSP_VERSION}.tgz ]; then
wget ftp://ftp.cmbi.ru.nl/pub/software/dssp/dssp-${DSSP_VERSION}.tgz
tar -xvzf dssp-${DSSP_VERSION}.tgz
cd dssp-${DSSP_VERSION}
make -j ${CPUS_FOR_MAKE}
make install
fi
# INSTALL OST
#############
cd ${SRC_FOLDER}
if [ ! -f openstructure-${OPENSTRUCTURE_VERSION}.tar.gz ]; then
# copy ost release
wget -O openstructure-${OPENSTRUCTURE_VERSION}.tar.gz -nc https://git.scicore.unibas.ch/schwede/openstructure/repository/${OPENSTRUCTURE_VERSION}/archive.tar.gz
mkdir openstructure-${OPENSTRUCTURE_VERSION}
tar xf openstructure-${OPENSTRUCTURE_VERSION}.tar.gz -C ${SRC_FOLDER}/openstructure-${OPENSTRUCTURE_VERSION} --strip-components=1
mkdir -p ${SRC_FOLDER}/openstructure-${OPENSTRUCTURE_VERSION}/build && cd ${SRC_FOLDER}/openstructure-${OPENSTRUCTURE_VERSION}/build
# cmake ost
cmake .. -DPYTHON_LIBRARIES=/usr/lib/x86_64-linux-gnu/libpython2.7.so \
-DOPTIMIZE=ON \
-DENABLE_MM=ON \
-DCOMPILE_TMTOOLS=1 \
-DUSE_NUMPY=1 \
-DOPEN_MM_LIBRARY=$OPENMM_LIB_PATH/libOpenMM.so \
-DOPEN_MM_INCLUDE_DIR=$OPENMM_INCLUDE_PATH \
-DOPEN_MM_PLUGIN_DIR=$OPENMM_LIB_PATH/plugins \
-DENABLE_GFX=ON \
-DENABLE_GUI=ON
# Build chemdict_tool
make -j ${CPUS_FOR_MAKE} chemdict_tool
# get the compound library
wget ftp://ftp.wwpdb.org/pub/pdb/data/monomers/components.cif.gz
stage/bin/chemdict_tool create components.cif.gz compounds.chemlib pdb
stage/bin/chemdict_tool update modules/conop/data/charmm.cif compounds.chemlib charmm
mkdir -p $OPENSTRUCTURE_SHARE
chmod a+rw -R $OPENSTRUCTURE_SHARE
mv compounds.chemlib $OPENSTRUCTURE_SHARE
# Build and install OST
cmake .. -DPYTHON_LIBRARIES=/usr/lib/x86_64-linux-gnu/libpython2.7.so \
-DOPTIMIZE=ON \
-DENABLE_MM=ON \
-DCOMPILE_TMTOOLS=1 \
-DUSE_NUMPY=1 \
-DOPEN_MM_LIBRARY=$OPENMM_LIB_PATH/libOpenMM.so \
-DOPEN_MM_INCLUDE_DIR=$OPENMM_INCLUDE_PATH \
-DOPEN_MM_PLUGIN_DIR=$OPENMM_LIB_PATH/plugins \
-DENABLE_GFX=ON \
-DENABLE_GUI=ON \
-DCOMPOUND_LIB=$OPENSTRUCTURE_SHARE/compounds.chemlib
# Build chemdict_tool
make -j ${CPUS_FOR_MAKE}
make check
make install
fi
# SETUP JUPYTER
###############
mkdir -p /usr/local/share/ipython
mkdir -p $JUPYTER_PATH
mkdir -p $JUPYTER_RUNTIME_DIR
mkdir -p $JUPYTER_CONFIG_DIR
mkdir -p $JUPYTER_PATH/kernels/ost-kernel
chmod a+rw -R /usr/local/share/ipython
chmod a+rw -R $JUPYTER_PATH
chmod a+rw -R $JUPYTER_CONFIG_DIR
chmod a+rw -R $JUPYTER_RUNTIME_DIR
cat > $JUPYTER_PATH/kernels/ost-kernel/kernel.json <<EOF
{
"display_name": "OST",
"language": "python",
"argv": [
"python",
"-m", "ipykernel",
"-f", "{connection_file}",
"--InteractiveShellApp.exec_PYTHONSTARTUP=False",
"--InteractiveShellApp.exec_files=['/usr/local/lib64/python2.7/site-packages/ost/ost_startup.py']"
],
"env": {
}
}
EOF
jupyter nbextension enable nglview --py --sys-prefix
# GO HOME
#########
cd /home
%environment
##############################################################################
# ENVIRONMENT
##############################################################################
export OST_ROOT="/usr/local"
export PYTHONPATH="/usr/local/lib64/python2.7/site-packages:${PYTHONPATH}"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib64"
export QT_X11_NO_MITSHM=1
export IPYTHONDIR="/usr/local/share/ipython"
export JUPYTER_CONFIG_DIR="/usr/local/etc/jupyter"
export JUPYTER_PATH="/usr/local/share/jupyter"
export JUPYTER_RUNTIME_DIR="$JUPYTER_PATH/runtime"
export VIRTUALENV_DIR="/usr/local/share/ost_venv"
%apprun ChemdictTool
##############################################################################
# CHEMDICT TOOL APP
##############################################################################
. $VIRTUALENV_DIR/bin/activate && $OST_ROOT/bin/chemdict_tool "$@"
%apprun lDDT
##############################################################################
# lDDT APP
##############################################################################
. $VIRTUALENV_DIR/bin/activate && $OST_ROOT/bin/lddt "$@"
%apprun Molck
##############################################################################
# MOLCK APP
##############################################################################
. $VIRTUALENV_DIR/bin/activate && $OST_ROOT/bin/molck "$@"
%apprun OST
##############################################################################
# OST APP
##############################################################################
$OST_ROOT/bin/ost "$@"
%appenv Notebook
##############################################################################
# NOTEBOOK ENV
##############################################################################
export BIN_DIR=$OST_ROOT/bin
export XDG_RUNTIME_DIR=""
. $OST_ROOT/libexec/openstructure/ost_config
%apprun Notebook
##############################################################################
# NOTEBOOK APP
##############################################################################
. $VIRTUALENV_DIR/bin/activate && jupyter notebook --NotebookApp.iopub_data_rate_limit=10000000 --no-browser "$@"
%runscript
##############################################################################
# RUNSCRIPT
##############################################################################
cat << EOF
Singularity container for OST $OPENSTRUCTURE_VERSION.
This container includes the following apps:
* OST - OpenStructure binary
* lDDT - The Local Distance Difference Test
* Molck - Molecular checker
* Notebook - A Jupyter notebook palyground with OST and nglview
  • Should be "playground" Btw: sublime has a built-in spell checker (View/Spell Check). I advice to use it on any text that should be English... ;-)

  • Please register or sign in to reply
To see the help for each individual app run:
$ singularity run --app APP
EOF
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment