spock — Standardize, Prepare, Dock
spock is a Python toolkit for structure-based drug design. It bundles a unified
molecule/protein storage layer, ligand standardization and preparation
pipelines, several docking engines, interaction-fingerprint descriptors, a
graph/GNN stack, and an interactive PyMOL GUI — so a target can go from a
raw sequence to docked, scored and visualised poses in one place.
Status: active development / beta.
Features
| Area | What's included |
|---|---|
| Storage | Unified SpockStorage for ligands, proteins and docked poses, built on the QSPRpred storage interfaces. Per-target stores, compressed pose serialization. |
| Docking engines | AutoDock Vina (CPU) — multi-core parallel; Vina (CPU, local) — lightweight single-process; Vina-GPU — via the andriusbern/vina-gpu Docker image (NVIDIA runtime). Vina scoring function. |
| Standardization | Papyrus standardizer and a permissive NaiveStandardizer, with InChI-based identifiers. |
| Ligand preparation | Dimorphite-DL protonation/tautomer enumeration; Schrödinger LigPrep wrapper. |
| Descriptors | PLIP protein–ligand interaction fingerprints (PLIPIFP) as a QSPRpred DescriptorSet. |
| Graphs / GNN | Molecular & complex graph featurizers; PyTorch-Geometric dataset bridge and models ([gnn] extra). |
| De novo generation | Target-conditioned ligand generation via PCMol from inside the GUI. |
| Data sources | One-click download of bioactivity data and targets from Papyrus; PDB structure fetching. |
| GUI | PyMOL-embedded interface for browsing targets, fetching structures, managing ligands, docking, and inspecting poses & interactions (see below). |
| Parallelism | pebble-based parallel docking, preparation and dataframe pipelines. |
Installation
Requires Python ≥ 3.10. PyMOL (open-source or incentive build) and AutoDock
Vina are expected from the environment — the recommended route is conda/micromamba:
# 1. create an environment with the native deps that don't ship cleanly on PyPI
micromamba create -y -n spock -c conda-forge \
python=3.11 pymol-open-source pyqt pyqtgraph rdkit openbabel plip
# 2. install spock (editable)
git clone https://github.com/CDDLeiden/spock.git
cd spock
micromamba run -n spock pip install -e .
Optional extras:
pip install -e ".[vina]" # AutoDock Vina Python bindings (CPU docking)
pip install -e ".[gnn]" # torch, torch_geometric, wandb, ...
pip install -e ".[pymol]" # GUI helper stack (pypdb, meeko, docker, plip, ...)
pip install -e ".[dev]" # linting / tests (pre-commit, ruff, pytest)
For Vina-GPU, an NVIDIA Docker runtime is required; see setup_nvidia_docker.sh.
The GUI
Launch the GUI (it runs on PyMOL's own Qt thread) with the installed console script:
spock
or load it as a PyMOL plugin:
pymol spock/gui/addon.py
The interface is organised around a selected target:
| Panel | Capabilities |
|---|---|
| Targets | Browse and fuzzy-search protein targets; download bioactivity data from Papyrus. |
| Structures | Fetch and load PDB structures for the active target. |
| Ligands | Add / delete / save / load ligands, download from Papyrus, hover cards with computed properties (incl. SA score). |
| Docking | Pick a binding-site box ("Get coordinates") and run docking; live progress. |
| Poses | Per-pose bar with scores, crosshair score plots, load stored poses into the viewer. |
| Interactions | PLIP protein–ligand contacts rendered directly in PyMOL with a contacts table. |
| Generator | Load a PCMol model and generate target-conditioned ligands. |
All results (structures, ligands, poses, scores) are persisted to the per-target
SpockStorage, so closing and reopening a target restores its state.
Tutorials
The tutorial/ folder contains notebooks covering storage creation, standardization,
ligand preparation and docking benchmarks.
License & citation
See pyproject.toml for authors and project metadata. Part of the CDD Leiden
software stack alongside QSPRpred.
Metadata
Release files for dock 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| dock-0.1.0.tar.gz | 5.9 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| dock-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 6.3 MB
Release files / dock-0.1.0.tar.gz
| Download URL | dock-0.1.0.tar.gz |
|---|---|
| Size | 5.9 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
11a24d4d4998e57a07a460f50f25509f2a8e08c1df2b99f021e6695577844f7f
|
|
BLAKE2b-256 checksum How to use checksums |
e56594cff8e3e18bb3ee4deb6bac4353c8050f1b00b13f90c4869f18f45ee990
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.15
|
Release files / dock-0.1.0-py3-none-any.whl
| Download URL | dock-0.1.0-py3-none-any.whl |
|---|---|
| Size | 384.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0fcd2fb113baecdfd6b12658e1a3ad9a5820f69b7783808d7c5a3486c0dbb2df
|
|
BLAKE2b-256 checksum How to use checksums |
a003179e49aa36c5e0ed85da435f585df1f0a4fb8a2142888fb1f1df36459b52
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.15
|