Singularity¶
We do not provide a “standalone” Singularity image, but rather bootstrap from a Docker image.
Change to the directory containing the Singularity file (<PROMOD3_CHECKOUT>/container) and build the image with:
sudo singularity build promod.img Singularity
Available apps¶
- This container includes the following apps:
OST - OpenStructure executable
PM - ProMod3 executable
IPython - OST/ProMod3-powered iPython shell
Notebook - A Jupyter notebook playground with OST, ProMod3 and nglview
lDDT - The Local Distance Difference Test
Molck - Molecular checker
ChemdictTool - Creating or update a compound library
To see the help for each individual app run:
singularity run-help --app <APP NAME> <PATH TO PROMOD IMAGE>
Eg.:
singularity run-help --app PM promod.img
To list all available ProMod3 modelling actions:
singularity run --app PM promod.img help
So you can either run an action with:
singularity run --app PM promod.img build-model [options]
or an arbitrary Python script using OpenStructure / ProMod3 with:
singularity run --app PM promod.img my_script.py [options]
The Notebook app provides a jupyter notebook playground with OST, ProMod3, and nglview available. You can fire it up with:
singularity run --app Notebook promod.img
connect to the notebook, start a new OST kernel and test it with the following code snippet:
from ost import io
from promod3 import loop
import nglview
# generate backbone with dihedrals of a helix and store it
sequence = "HELLYEAH"
bb_list = loop.BackboneList(sequence)
io.SavePDB(bb_list.ToEntity(), "test.pdb")
# display stored file
view = nglview.show_file("test.pdb")
view
The Compound Library¶
You’ll have the exact same problem with outdated compound libraries as in the raw Docker image. You can find more information on that matter in the Docker section of the documentation: The Compound Library.
The same trick of mounting an up to date compound library from the local host into the container applies. The two relevant commands for Singularity are building a new library and mount it.
Build a new library:
singularity run --app ChemdictTool <IMAGE> create components.cif.gz \
compounds.chemlib
Run some script with an updated compound library from localhost:
singularity run \
-B <COMPLIB_DIR_LOCALHOST>/compounds.chemlib:<COMPLIB_DIR_CONTAINER>/compounds.chemlib \
--app PM <IMAGE> my_script.py
Same as for the Docker, if you didn’t meddle with the original Dockerfile, <COMPLIB_DIR_CONTAINER> should be /usr/local/share/openstructure. <COMPLIB_DIR_LOCALHOST> is the directory that contains the compound lib with the name compounds.chemlib that you created before. Make sure that everything works as expected by executing the exact same lines of Python code as described in the Docker documentation: The Compound Library.