HIPPO Documentation
Hit Interaction Profiling for Procurement Optimisation (HIPPO) is a chemical database and python toolkit to expedite fragment-based drug discovery.
Installation
On Mac OS and Linux it is recommended to install from PyPI using Conda/Miniconda.
Chemicalite is not supported on Windows, but there is a workaround described in the Windows installation instructions.
The hippo python module can be obtained from PyPI:
$ pip install --upgrade hippo-db
You will also need chemicalite which is an extension to SQLite for cheminformatics:
$ conda install -c conda-forge chemicalite=2024.05.1
N.B. Compatibility between rdkit and chemicalite versions is quite strict, and database files created with a certain version pair may not be interoperable with others.
See also Installation Snippets.
Getting started
HIPPO uses an sqlite database with several inter-connected tables and Python-class representations thereof, the core concepts are explained in Definitions and units. Once familiar you can try Getting started with HIPPO.
Core concepts
HIPPO uses an sqlite database with several inter-connected tables (see Database). In both the database and the python API the following core objects are defined:
Compound
A Compound represents a ligand/small molecule with stereochemistry removed and no atomic coordinates. I.e. it represents the chemical structure. It’s name is always an InChiKey. If a compound is an elaboration it can have a Compound.scaffold() property which is another Compound. Compound objects are target-agnostic and can be linked to any number of catalogue entries (Quote) or synthetic pathways (Reaction).
Pose
A Pose is a particular conformer of a Compound within a protein environment. A pose will have its own (stereochemical) smiles string, and must have a path to a coordinate file. Poses can have inspirations that can be used to trace fragment-derived scaffolds in merges and expansions.
Reaction
A Reaction is a simplified representation of a synthetic pathway to create a product Compound. Reactants (also Compound objects) as well as a reaction type are required.
See Definitions and units for more detail.
Installation Snippets
If the above fails in your existing software environments, try this:
mamba create --name py312 python=3.12
mamba activate py312
pip install hippo-db syndirella typer neo4j black gemmi
mamba install chemicalite=2024.05.1 pdbfixer
python -c "import mrich; mrich.patch_rich_jupyter_margins()"
Additionally, this Dockerfile can be used to create a container with a Jupyter Notebook server:
FROM quay.io/jupyter/minimal-notebook:2025-04-14
LABEL authors="Max Winokan"
# Upgrade pip and install JupyterLab
RUN pip install --upgrade pip && pip install hippo-db syndirella typer neo4j black gemmi
RUN mamba install --yes \
chemicalite=2024.05.1 pdbfixer && \
mamba clean --all -f -y && \
fix-permissions "${CONDA_DIR}" && \
fix-permissions "/home/${NB_USER}"
# patch rich
RUN python -c "import mrich; mrich.patch_rich_jupyter_margins()"
# notebooks
USER 0
RUN mkdir "/home/code" && chown ${NB_USER} "/home/code" && \
sudo apt update && sudo apt install screen -y
USER ${NB_USER}
# HIPPO dev branch
WORKDIR "/home/code"
RUN git clone https://github.com/mwinokan/HIPPO
WORKDIR "/home/code/HIPPO"
RUN git checkout dev && pip install -e . --no-deps
EXPOSE 8888
WORKDIR "/home/${NB_USER}"