HIPPO Documentation

Hit Interaction Profiling for Progression Optimisation (HIPPO) is a chemical database and python toolkit to expedite fragment-based drug discovery.

Installation

Install from PyPI:

$ pip install --upgrade xchem-hippo

For local development, HIPPO uses Docker Compose to provide PostgreSQL with the RDKit cartridge. See the project README for Docker setup instructions.

SQLite is also supported for lightweight local use (no Docker required).

See also Installation Snippets.

Getting started

HIPPO uses a database (PostgreSQL with RDKit cartridge, or SQLite for local development) 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.

Core concepts

HIPPO uses a 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 xchem-hippo

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 packages
RUN pip install --upgrade pip && pip install xchem-hippo

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