Skip to main content

Lacuna

Cryptic binding pocket discovery via conformational ensemble analysis.

PyPI License: MIT DOI bioRxiv Run on Tamarind Bio Run on Neurosnap

Adenosine kinase breathing along its lowest normal mode; as the interdomain cleft opens, a cryptic pocket (blue) is revealed and a ligand docks into it

A protein breathes through Lacuna's conformational ensemble, and a cryptic pocket appears. Adenosine kinase along its lowest normal mode (Lacuna's NMA backend): as the interdomain cleft opens, the substrate pocket (blue) is exposed and 2-fluoroadenosine (orange, the crystallographic ligand from holo 2PKK) docks into it. The motion is Lacuna's own mode-0 ensemble; the ligand is shown at its bound pose.

Most protein structure predictors return one static conformation. But many disease-relevant proteins are called undruggable not because they are biologically intractable, but because no pocket is visible in their ground state. K-Ras was considered undruggable for thirty years until a transient cryptic pocket was found beneath its switch-II region. That pocket now backs sotorasib and adagrasib.

Lacuna finds those pockets. It generates a conformational ensemble from any input structure, detects pockets in every conformer, clusters them across the ensemble to surface sites that appear only transiently, and ranks them with a fitted model.

lacuna discover kras.pdb --conformers 20 --emit-boltz-constraints --emit-vina-boxes

Install

pip install lacuna-pockets

Optional extras, for better conformational sampling or the sequence-assisted ranker:

pip install "lacuna-pockets[openmm]"   # 100ps implicit-solvent MD
pip install "lacuna-pockets[plm]"      # PLM-assisted ranker (PyTorch, ESM-2)
pip install "lacuna-pockets[boltz]"    # Boltz-2 diffusion sampling (experimental, GPU)
pip install "lacuna-pockets[all]"      # everything

Requires Python 3.10+. The default backend needs no GPU, no force field and no model weights.

A Lacuna-detected cryptic pocket on apo BCL-XL, in blue, overlapping the ABT-737 binding site

Apo BCL-XL (1LXL): a Lacuna-detected pocket (blue) opening onto the groove where ABT-737 (orange, from the holo structure 2YXJ) binds, a site never shown to the detector. With --detector surface-fusion this site is recovered at rank 2, Jaccard 0.36, centroid 5.6 Å. The default alpha detector places it third and does not clear the size-robust bar, which is the specialisation this release is about.

Quick start

lacuna discover protein.pdb --conformers 20

Writes a ranked pocket_report.json plus, on request, Boltz YAML constraints and AutoDock Vina boxes ready for docking. Full options in docs/USAGE.md.

How it works

  1. Ensemble generation. N conformers from elastic-network normal mode analysis (default), OpenMM implicit-solvent MD, or Boltz-2 diffusion sampling.
  2. Pocket detection. Grid-based alpha-point analysis per conformer: distance transform, local maxima in the 1.4-5.5 A interaction zone, clustered into candidates.
  3. Cross-ensemble clustering. Greedy centroid merging matches corresponding pockets across every conformer, turning transient cavities into persistent sites with their own statistics.
  4. Druggability scoring. Gaussian volume reward centred at 300 A³, plus enclosure, hydrophobicity and aromaticity (Halgren 2009), scored per conformer.
  5. Ranking. A fitted linear model over 23 geometric and ensemble-derived features orders the sites. Each also carries a continuous crypticity score.

Documentation

Usage CLI, Python API, backends, output formats, worked example
Ranking Ranking strategies, the fitted model, crypticity
Benchmarks Full results, head-to-head comparisons, negative results
Paper Analysis, per-candidate data, and scripts that regenerate every figure

Results

On CryptoBench's designated test fold, Lacuna recovers 55.6% of known cryptic sites in its top five with the zero-dependency default and 66.1% with the optional PLM-assisted ranker, and the true site is present in the candidate set for up to 92% of structures.

Recovery by configuration

Cryptic-pocket recovery on CryptoBench's held-out test fold, under the size-robust criterion (Jaccard >= 0.25, or centroid within 4 A of the site).

Configuration Top-5 recovery Site found (coverage)
Default (CPU-only, zero-dependency) 55.6% 73.7%
+ PLM reranker 66.1% 73.7%
surface-fusion detector 73.9%¹ 86.4%¹
Union across detectors n/a 92.2%

¹ Held-out surface-fusion evaluation at 5 conformers (n=184); the other rows use the 20-conformer cohort (n=180).

Full results, including head-to-head comparisons and where Lacuna loses →

The more interesting result is not Lacuna's score. Across five candidate-generation methods evaluated in six configurations, coverage (whether a qualifying candidate is proposed at all) spans 14.5 points, while conversion (whether a method's own coverage reaches the top five) spans 36.7. fpocket has the highest coverage at 73.7% but the lowest top-5 recovery at 43.6%, while P2Rank converts 95.8% of the sites it covers. Two Lacuna rankers operating on the exact same candidate set differ by 10.6 points of top-5 recovery, isolating ranking directly.

Union coverage saturates at 92.2%, rising to 98.6% for annotated sites containing at least eight residues. Candidate competition is also causal: adding synthetic competitors while holding the true site, real candidate set, and ranker fixed reduces top-5 recovery by 16.8 points on the training folds and 17.0 points on the held-out test fold. Detector consensus provides no measurable gain at a budget of five candidates, but gains 11.8 points at a budget of twenty.

Moore CW. Cryptic binding sites are detected but not ranked: coverage, conversion, and the limits of detector consensus. bioRxiv 2026. doi:10.64898/2026.08.11.743381

Citation

If you use Lacuna, please cite the software paper:

@article{moore2026lacuna,
  author  = {Moore, Clayton W.},
  title   = {Lacuna: Cryptic Binding Pocket Discovery
             via Conformational Ensemble Analysis},
  journal = {bioRxiv},
  year    = {2026},
  doi     = {10.64898/2026.08.14.744956}
}

If you use the benchmark data or the coverage/conversion decomposition, please also cite the accompanying analysis:

@article{moore2026coverage,
  author  = {Moore, Clayton W.},
  title   = {Cryptic binding sites are detected but not ranked:
             coverage, conversion, and the limits of detector consensus},
  journal = {bioRxiv},
  year    = {2026},
  doi     = {10.64898/2026.08.11.743381}
}

To cite a specific software version, the archived releases carry their own DOIs under the concept DOI 10.5281/zenodo.20533638, which always resolves to the newest.

Acknowledgements

Lacuna is measured against, and builds on, work released openly by others: fpocket (Le Guilloux et al. 2009), P2Rank (Krivák & Hoksza 2018), IF-SitePred (Carbery et al. 2024) and MDpocket (Schmidtke et al. 2011). Evaluation uses the CryptoBench (Škrhák et al. 2025) and PocketMiner (Meller et al. 2023) datasets. Method credits: ANM (Atilgan et al. 2001), SiteMap druggability (Halgren 2009), enclosure scoring (Schmidtke & Barril 2010), ESM-2 (Lin et al. 2023).

License

MIT, free to use, study, modify, share, and embed in closed-source or commercial work, with no copyleft obligation.

Versions 0.2.0 through 0.3.1 were released under AGPL-3.0 and remain available under those terms. MIT applies from 1.0.0 onward. Lacuna moved back to a permissive license because its central recommendation is to combine several detectors, and copyleft makes that combination harder for exactly the people the work is aimed at.

Metadata

Release files for lacuna-pockets 1.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for lacuna-pockets 1.2.0
File Size Uploaded
lacuna_pockets-1.2.0.tar.gz 36.0 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for lacuna-pockets 1.2.0
File Interpreter ABI Platform
lacuna_pockets-1.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 37.0 MB

Release files / lacuna_pockets-1.2.0.tar.gz

Download URL lacuna_pockets-1.2.0.tar.gz
Size 36.0 MB
Tags Source
SHA-256 checksum
How to use checksums
b3d25c43f082cfa1a8960aa24abe13dbc80412610e972d289295b5d5d6a13aa0
BLAKE2b-256 checksum
How to use checksums
7ffa54bca43da204b7c471e592c62be282ce05d208ac3bfb698dc201d3ff9476
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.

Transparency log

Release files / lacuna_pockets-1.2.0-py3-none-any.whl

Download URL lacuna_pockets-1.2.0-py3-none-any.whl
Size 989.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6ed3759342d82e81894603903c8f8df851b18f2ba59e9e99399fccc5b5ec9b4e
BLAKE2b-256 checksum
How to use checksums
b9c53d0ef0d5f13a9e4838dc8e737a77f21d9bbb33f9cbbe4002366556a80bbf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.2.0 This release

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page