HIPPO Documentation
Hit Interaction Profiling for Progression 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.
Note
HIPPO is built primarily as a Python API to be used in interactive notebooks such as in JupyterLab, but where higher performance is needed several tasks are accessible via a cli which can be used in SLURM jobs.
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}"