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}"