fpocket
Open-source pocket-detection tool. Uses α-shape Voronoi tessellation (Edelsbrunner) to find concave protein cavities, ranks them by druggability descriptors (volume, polarity, hydrophobicity, depth). Distinct from Halgren SiteMap (commercial Schrödinger) but follows the same physical idea: enumerate cavities, score by druggability proxy.
Reference: Le Guilloux V et al. 2009 BMC Bioinformatics 10:168.
What It Does
- Detects pockets via Voronoi-based α-spheres (radius 3.0–6.0 Å by default)
- Outputs ranked pocket list with: volume, hydrophobic density, polarity score, druggability score, residue lining
- Per-pocket PDBs and a global
_info.txtsummary - Companion
mdpocket— pocket detection along an MD trajectory (we don’t use)
Install
brew install fpocket # macOS arm64; package = fpocket 4.xVerified 2026-04-26: installs cleanly via Homebrew at /opt/homebrew/bin/fpocket. The binary calls qvoronoi (qhull 2015.2) under the hood.
⚠ Status on M5 Max (2026-04-26)
BROKEN. Reproducible qhull error on every input file tested, including reference PDB 3GBI from RCSB:
QH6047 qhull input error: use upper-Delaunay('Qu') or infinity-point('Qz') with Delaunay('d') or Voronoi('v')
While executing: rbox D3 | qvoronoi p i Pp Qz Qt
The error occurs immediately at the qvoronoi pipeline stage, before fpocket even reads pocket descriptors. Likely a Homebrew packaging mismatch between the bundled qhull and fpocket’s expected qvoronoi flags. Not worth debugging — switched to a Python-side replacement.
Replacement: Halgren SiteMap-style Python grid burial estimator
When fpocket fails, we use ~/STRC/hypotheses/h01-pharmacochaperone/scripts/phase8h_lite/druggability_score.py — a 100-line grid scanner that reproduces the core SiteMap descriptors (V, hydrophobic enclosure, hydrophilic enclosure) by:
- Sampling a regular grid around a target residue NZ
- Excluding grid points inside protein (< 1.6 Å from any heavy atom) or in bulk solvent (> 4.0 Å from any heavy atom)
- Burial filter: keep only points with protein hits in ≥4/6 cardinal rays within 8 Å (drops surface concavity)
- Phobic / philic enclosure: nearest residue’s Eisenberg sign per pocket point
This reproduces what fpocket+druggability would compute, controllable, no qhull. ~15 s runtime on M5 Max for a 1k-residue protein.
Caveat: the absolute Halgren Dscore from this estimator is not Halgren-calibrated (his SiteMap algorithm caps grid points differently). The profile (V, phobic, philic) is comparable to Halgren’s published druggable-pocket benchmarks; the composite Dscore is not.
STRC Research Usage
- Phase 8h-lite #1 druggability profile (STRC h01 Phase 8h-lite Light Computational Evidence Package 2026-04-26) — fpocket attempted, failed, replaced by
druggability_score.py. Result: K1141 pocket V 1145 ų, phobic 0.61, philic 0.39, V_pocket/V_lig 2.75 — fits Halgren druggable benchmark.
Known Limitations
- Homebrew binary on macOS arm64 fails on every input — tracked here, not in upstream issue tracker yet
- Even when working, fpocket Dscore is calibrated against ~50-protein training set; tail behavior on disorder-rich or membrane-embedded proteins is uncertain
- Replacement Python estimator does NOT include the burial-depth term that distinguishes deep druggable pockets from shallow surface concavities — the 4/6-ray heuristic is a rough proxy
Connections
[applies-to]h01-pharmacochaperone[see-also]APBS[see-also]STRC Computational Scripts Inventory[ref]Halgren 2009 J Chem Inf Model 49:377 — SiteMap druggability formula