Binding Site Druggability Prediction, Honestly Read
Binding site druggability prediction explained: how geometric pocket detection works, what the score means, and a real CovaFold run on KRAS G12C that.
Oliver Kraft
CovaSyn

You have a structure and no ligand. Somebody needs to know whether this target is worth a screening campaign, and where a docking box should sit. Pocket detection answers the second question reasonably well and the first question only partly, and the gap between those two is where projects get burned.
What a pocket detector actually does
Geometric detectors like fpocket place alpha spheres in the space between atoms, keep the ones whose radius falls in a range typical of a small-molecule cavity, cluster neighbouring spheres, and call each cluster a pocket. From the cluster they derive a centre, a volume, and the list of lining residues. No ligand, no energy function, no evolution. Purely the shape of the surface as deposited or as predicted.
The druggability score sits one layer above: a bounded 0 to 1 score fitted on descriptors of the cluster such as apolar fraction, volume and enclosure, trained on curated sets of pockets known to bind drug-like ligands versus pockets that are not. It is a similarity statement - this cavity looks like cavities that historically bound drugs. It is not a probability that your project succeeds.
covafold_binding_sites runs this on either a predicted structure from a fold session or a raw PDB string you supply. It is a CPU tool, seconds not minutes.
A real run: KRAS G12C, ligand removed
To make the "no ligand yet" scenario honest, we took PDB 6OIM, the KRAS G12C complex with sotorasib, and kept only the protein atoms of chain A: no inhibitor, no GDP, no magnesium, no waters. 1,336 atoms, residues 1 to 169. Verbatim output from covafold_binding_sites (live run, 2026-07-25, top_n=5):
| Field | Value |
|---|---|
n_sites | 1 |
druggability_score | 1.0 |
volume | 2150.0 A^3 |
center | [4.8, 1.08, 8.85] |
| lining residues | 43, including P-loop residues 10, 11, 15, 16 and 17 |
plddt_in_pocket | 18.39 |
At face value this looks clean: one pocket, top-of-scale druggability, a big cavity, P-loop residues sitting right around position 12 where the G12C mutation lives. Three things are wrong with reading it that way.
The score is saturated, not confident.
1.0 is the ceiling of the scale. A saturated score carries no ranking information: if three pockets all return 1.0, the tool has told you nothing about which one to attack. Treat 1.0 as "passes the geometric filter", not as "best pocket".
2150 A^3 is a merged cavity, not a binding site.
A typical drug-sized pocket is roughly 300 to 600 A^3. A 2150 A^3 cluster spanning 43 residues has almost certainly fused several adjacent sub-pockets and interior channels into one object. Its centroid is therefore a geometric average of things a ligand cannot occupy at once.

The centre is 14 A away from where the drug actually binds.
We measured this directly on 6OIM. The sotorasib contact shell, defined as residues with any atom within 5.0 A of the ligand, is 22 residues: Val9, Gly10, Ala11, Cys12, Gly13, Lys16, Pro34, Thr58, Ala59, Gly60, Gln61, Glu62, Glu63, Arg68, Asp69, Met72, Asp92, His95, Tyr96, Gln99, Ile100, Val103. That is the switch-II pocket. The returned pocket centre lies 14.1 A from the sotorasib centroid and 11.3 A from the GDP centroid. The residue lists overlap at the P-loop (9, 10, 11, 16) and at Thr58, but His95, Tyr96, Gln99, Arg68, Asp69 and Met72 - the residues that define the actual drugged pocket - are absent from the returned list.
So the detector found the nucleotide region and the interior cavity next to it, and did not resolve the pocket a marketed drug occupies - in a structure where that pocket is physically open because the drug was crystallised in it. Pocket detection told us KRAS has a large, apolar, geometrically druggable cavity. It did not tell us where sotorasib binds.
Why the switch-II pocket is the hard case
KRAS was called undruggable for decades for exactly this reason. The switch-II pocket is cryptic: in the GDP-bound ground state it is largely collapsed, and it opens through side-chain and loop rearrangement when a covalent binder engages Cys12. Detectors that score a single static conformation see the collapsed state and score it low, or as here, fold it into a neighbouring cluster and lose it. Practical consequences:
- A single-conformation run under-reports cryptic sites. Absence of a pocket is not evidence of undruggability.
- Detection on an ensemble - multiple crystal forms, MD snapshots, or several predicted models - finds more real sites than detection on one structure.
- A pocket that only appears in one member of an ensemble is a hypothesis, not a finding.
Reading `plddt_in_pocket` correctly
The field is named for the common case: when the input is a CovaFold model, the B-factor column carries per-residue pLDDT, so averaging it over the pocket residues gives a local confidence number. A pocket with local pLDDT below about 70 is defined by coordinates the folding model itself is unsure about, and the geometry inherits that uncertainty.
When the input is a crystal structure, that same column carries the crystallographic B-factor in A^2, and the tool averages it blindly. The 18.39 above is not a confidence score. It is a B-factor, and a good one: our own recomputation over those 43 residues gives a mean B of 20.29 A^2 against 24.31 A^2 for the whole chain, so the pocket lining is better ordered than average. Useful, but a different quantity. Anyone quoting "in-pocket pLDDT 18" from a PDB input has misread their own output.
For reference, our own covafold_fold run on the 189-residue KRAS G12C construct returned a global pLDDT of 94.61 with an MSA depth of 7,513 under the OpenDDE engine (the previous ESMFold engine scored 83.1 on the same construct). Global fold confidence and local pocket confidence are separate numbers; a 94.61 fold can still have a poorly resolved loop over the site you care about.
How to use the output anyway
Pocket detection is still worth running. Just use it for what it is good at.
1. Triage, not decision. It separates "this target has at least one drug-sized apolar cavity" from "this surface is flat and featureless". That distinction is real and it is cheap.
2. Take the residues, not the centroid. Define a docking box from the subset of lining residues you believe form one site, not from the centre of a merged cluster.
3. Anchor on biology when you have it. If the mutation is Gly12Cys and you want a covalent warhead, build the box around Cys12 and its 5 A shell. The detector's job was to confirm a cavity exists there, not to pick the site.
4. Run more than one conformation. Ensemble in, ensemble out.
5. Sanity-check with a known binder. Docking a reference ligand back into your box is the cheapest validation available. Here covadock_dock returns -10.35 kcal/mol for sotorasib against 6OIM with 61 interactions in the switch-II site - a non-covalent ranking score on the crystal structure, not a binding affinity.
What this method does not tell you
- Not affinity. No pocket score predicts a Kd, an IC50 or a hit rate.
- Not selectivity. The pocket may be conserved across the whole family. Detection is single-structure and blind to paralogues.
- Not ligandability in practice. Geometry says nothing about whether synthesisable chemical matter exists that fits.
- Not cryptic sites. Static detection systematically misses pockets that only open on binding, as shown above.
- Not a ranking, when scores saturate. Multiple 1.0 scores are ties, not a shortlist.
- Not a substitute for experiment. Fragment screening, HDX-MS, NMR chemical shift perturbation and crystallography are what tell you a site is real.
This is triage output for prioritising work, not a validated result, and it does not go into a regulatory filing.
Frequently asked questions
What is binding site druggability prediction?
It is the computational identification of cavities on a protein surface, followed by scoring each cavity for how closely it resembles pockets known to bind drug-like small molecules. Geometric methods such as fpocket place alpha spheres between atoms, cluster them into pockets, and score each pocket on volume, apolar fraction and enclosure. The result is a triage signal about shape, not a prediction of binding affinity or project success.
What does a druggability score of 1.0 mean?
It means the pocket sits at the top of a bounded 0 to 1 scale on descriptors like hydrophobicity, volume and enclosure. It does not mean certainty. Because the score saturates, several pockets in the same protein can all return 1.0, in which case the score provides no ranking at all. Use it to filter out flat, polar surfaces, then choose the site using biology and known chemical matter.
Can pocket detection find cryptic pockets?
Not reliably from a single structure. Cryptic pockets are closed in the ground state and open only on ligand binding, so a static detector scores them low or merges them into a neighbouring cavity. In our live run on ligand-stripped KRAS G12C, the tool returned one 2150 A^3 pocket whose centre sat 14.1 A from where sotorasib actually binds. Run an ensemble of conformations to improve coverage.
How do I turn a detected pocket into a docking box?
Do not use the reported centroid directly if the pocket volume is large, because large clusters merge several sub-pockets and their centre may be unreachable. Instead take the list of lining residues, select the subset that forms the site you care about, and build the box around those. If a reference ligand or a known key residue exists, such as Cys12 in KRAS G12C, anchor the box on that instead.
What does plddt_in_pocket mean if my input is a crystal structure?
Nothing useful. The field averages the B-factor column over the pocket residues. For a CovaFold model that column holds per-residue pLDDT, so the average is a genuine local confidence figure and values below roughly 70 should make you distrust the pocket geometry. For a deposited crystal structure the same column holds the crystallographic B-factor in A^2, which measures atomic disorder, not model confidence.
Is a druggable pocket enough to start a campaign?
No. Druggability from geometry is one input among several: available chemical matter, tractability of the chemistry, selectivity against close paralogues, target biology and validation status. Pocket detection is cheap enough to run on every candidate structure and should sit at the front of the funnel, filtering out clearly featureless surfaces, rather than at the point where you commit budget.
Related reading
- Co-folding vs docking: which question are you asking
- What a -10 kcal/mol docking score does and does not mean
Run covafold_binding_sites on your own structure on the CovaSyn free tier and check the residue list against the biology before you build a docking box.
- AlphaFold3 Alternatives in 2026: An Honest Comparison
Tools for this topic
Use these in your AI agent right away.
- CovafoldProtein folding and structure prediction.
