Documentation

Docs / IsoScore Methodology

IsoScore Methodology

LatticeZero's scoring engine evaluates protein-ligand interactions using a physics-based energy function computed entirely on the GPU. This page explains the scientific methodology behind IsoScore and IsoPose scoring.

Scoring Architecture

LatticeZero uses a grid-based scoring approach. During Target Prep, a 3D grid of pre-computed interaction energies is compiled for the binding pocket. At scoring time, each ligand atom's position is mapped to the grid and its contributions are evaluated in parallel using WebGPU compute shaders.

This architecture enables two distinct tools:

  • IsoPose (~3 sec/ligand) - Performs conformational search using a genetic algorithm, then scores each pose against the grid.
  • IsoScore (~4,000 lig/sec) - Skips pose search entirely. Takes pre-docked 3D coordinates as input and evaluates them against the grid. Approximately 1,000x faster.

Both tools use the same underlying scoring function.

Energy Function

The scoring function consists of 14 physics-based terms that capture the dominant forces governing non-covalent protein-ligand binding:

Category Terms What They Capture
Van der Waals E_disp, E_rep Attractive dispersion and steric repulsion
Electrostatics E_coul Coulombic charge-charge interactions with dielectric screening
Hydrogen bonding E_hbond, hbondGeo H-bond strength and geometric quality (angle/distance)
Desolvation E_desolv Penalty for stripping water from polar groups
Shape burial, depth, contactArea Ligand burial, pocket penetration, contact surface
Aromatic E_aromatic, aromaticBurial Pi-stacking, cation-pi, and aromatic ring burial
Quality E_clash, strain Steric clash severity and internal ligand strain
Metal E_metal Coordination with catalytic metal ions (Zn, Mg, etc.)

The total score is a weighted linear combination:

Score = Σ (wi × termi)   for i = 1..14

More negative scores indicate stronger predicted binding. See the Physics Reference for detailed descriptions of each term.

Scoring Profiles

Raw physics terms have different magnitudes and relative importance depending on the target. A scoring profile assigns a weight to each of the 14 terms, tuning the function for a specific target class.

For example:

  • Metalloenzymes (ACE, MMPs) upweight E_metal and E_coul, because metal coordination and electrostatics dominate binding.
  • Nuclear receptors (PPARG, AR) upweight burial and E_disp, reflecting deep hydrophobic binding pockets.
  • Kinases (CDK2, SRC) emphasize E_hbond and hbondGeo, reflecting the critical hinge hydrogen bonds.

LatticeZero uses three profile categories with different levels of target-specific optimization:

Understanding Scoring Profiles

1. Validated Demo Profiles (18 targets)

These profiles were iteratively refined using the LatticeZero physics engine against DEKOIS2 benchmark data. Weights were tuned to maximize active/decoy discrimination (AUC) for each specific target. They are validated with 5-fold cross-validation and Y-scramble null model testing.

2. Dock-Mode Profiles (8 targets)

These profiles are optimized specifically for IsoPose-generated poses using rank normalization to handle scale differences between physics terms. They represent end-to-end docking performance where IsoPose generates poses de novo (no external docking program required).

3. Class-Level Predictions (any target)

For targets without a validated profile, LatticeZero applies class-level physics recipes based on detected target family (kinase, protease, metalloenzyme, etc.). These require zero target-specific optimization. On a 5-target DUD-E holdout outside the development set, this untuned mode reached Silver-tier performance on PNPH (AUC 0.642).

See Scoring Profiles and the Profiles Library for available profiles and category details.

Geometric Features

In addition to physics energy terms, IsoPose evaluates 6 geometric features of each docked pose:

Feature Description
insideFrac Fraction of ligand heavy atoms inside the defined pocket volume
triadScore Quality of key pharmacophoric interactions (H-bond triads)
aromaticBurial Fraction of aromatic ring surface buried by the receptor
clashCount Number of severe ligand-receptor atom overlaps
keyguideScore Alignment with pharmacophore guide points (when defined)
waterAnchorFrac Fraction of conserved water-mediated contacts preserved

These features are used alongside the 14 physics terms by the full IsoPose scoring pipeline (23 features total). IsoScore in rescoring mode evaluates the 14 physics terms only, since geometric features require the full docking context.

Pose Quality Score (PQS)

Every scored pose receives a Pose Quality Score - a classification that assesses whether the pose is physically plausible:

Verdict Meaning Criteria
GOOD Physically plausible pose Low clashes, ligand inside pocket, acceptable strain
FIXABLE Minor issues that may be resolvable Moderate clashes or partial pocket occupancy
TRASH Physically unrealistic Severe clashes, ligand outside pocket, or extreme strain

PQS is computed from a combination of E_clash, E_rep, insideFrac, and strain. It serves as a quality gate - even if a pose has a favorable total score, a TRASH verdict flags it as unreliable.

The distribution of PQS verdicts across a scoring run is a useful diagnostic: a high fraction of GOOD poses suggests well-prepared inputs, while many TRASH poses may indicate problems with the receptor preparation or pocket definition.

Theoretical Foundation

Theoretical Foundation

LatticeZero's scoring function computes protein-ligand interaction energies from first-principles physics modeling, not empirical force field fitting.

<h6>Parameter Sources</h6>
<table class="table table-sm">
  <tbody>
    <tr>
      <td><strong>Van der Waals radii</strong></td>
      <td>Bondi, A. (1964). "Van der Waals Volumes and Radii."
      <em>J. Phys. Chem.</em> 68(3), 441-451.</td>
    </tr>
    <tr>
      <td><strong>Partial charges</strong></td>
      <td>Gasteiger, J. & Marsili, M. (1980). "Iterative partial equalization
      of orbital electronegativity." <em>Tetrahedron</em> 36(22), 3219-3228.</td>
    </tr>
    <tr>
      <td><strong>H-bond geometry</strong></td>
      <td>Standard donor-H...acceptor criteria: D-A distance &lt; 3.5 &Aring;,
      D-H-A angle &gt; 120&deg;, based on crystallographic survey statistics.</td>
    </tr>
    <tr>
      <td><strong>Metal coordination</strong></td>
      <td>Ideal Zn-N/O distances (2.0-2.2 &Aring;) and tetrahedral geometry from
      Cambridge Structural Database (CSD) metal complex surveys.</td>
    </tr>
  </tbody>
</table>

<h6>How This Differs from Conventional Scoring</h6>
<p>Conventional docking tools (Glide, AutoDock Vina, GOLD) define energy terms
as features and fit numerical weights to experimental binding data or benchmark
performance. The fitted coefficients <em>are</em> the scoring function.</p>
<p>LatticeZero computes interaction energies directly from physical models.
Scoring profiles define which physics modules to include and how to aggregate
them for a target class - they are not regression weights trained on binding
affinity data.</p>
<p>A detailed methods paper describing the full theoretical framework is
in preparation.</p>

Parameter Provenance

IsoScore and IsoPose do not load a black-box force-field file (for example OPLS/AMBER parameter packs). The production kernels use an in-house HBQ/dcoul pairwise model in rft_atomic.scoring, with constants and heuristics versioned in code.

Van der Waals + Lennard-Jones Terms

Atomic VDW radii used for dispersion and repulsion are defined in structures.py and mirrored in dock_objective.py:

Element Radius (A) Element Radius (A)
H 1.20 C 1.70
N 1.55 O 1.52
S 1.80 P 1.80
F 1.47 Cl 1.75
Br 1.85 I 1.98

Common receptor metals are explicitly included in code defaults: Zn 1.39, Mg 1.73, Ca 1.97, Fe 1.56, Cu 1.40, Mn 1.61 A. Unknown elements fall back to 1.70 A (carbon-like). The repulsion table in repulsion.py documents Bondi (1964) and Rowland & Taylor (1996) as source references.

E_disp = -0.5 * sum((sigma/r)^6)
E_rep =  0.1 * sum((sigma/r)^12)

where sigma = R_i + R_j (sum of element radii). Close-contact stability is handled with softcore/cap controls (softcore.py, api.py), including optional softcore repulsion, default vdw_cutoff = 8.0 A, and ratio cap sigma/r <= 1.5 in docking-compatible dcoul scoring.

Electrostatics + Partial Charges

Electrostatics are Coulombic:

E_coul = k_coul * sum(q_i q_j / (eps_r * r_eff))

HBQ defaults in code are eps_r = 4.0, coul_cutoff = 8.0 A, and optional damping with r_eff = sqrt(r^2 + delta^2) for short-range softening.

Partial charges are computed with RDKit Gasteiger (AllChem.ComputeGasteigerCharges) when an RDKit molecule is available. If charge assignment fails or RDKit input is missing, the code falls back to explicit element-based heuristic charges (charges.py, hbq_score.py).

Hydrogen Bond Parameters

Hydrogen-bond typing is also code-defined:

  • Primary path: RDKit SMARTS donor/acceptor matching
  • Fallback path: element heuristics (donors = N/O/S with bonded H; acceptors = N/O/S)

HBQ geometric defaults:

Parameter Value Description
H...A distance (max) 3.0 A Maximum donor-H to acceptor distance
H...A distance (opt) 2.5 A Optimal donor-H to acceptor distance
D-H...A angle (min) 120° Minimum donor-hydrogen-acceptor angle

Energy is computed from distance and angle factors scaled by k_hb = -2.5 kcal/mol.

Citations

  1. Bondi, A. "Van der Waals Volumes and Radii." J. Phys. Chem. 1964, 68(3), 441-451.
  2. Rowland, R.S.; Taylor, R. "Intermolecular Nonbonded Contact Distances in Organic Crystal Structures." J. Phys. Chem. 1996, 100(18), 7384-7391.
  3. Gasteiger, J.; Marsili, M. "Iterative Partial Equalization of Orbital Electronegativity." Tetrahedron 1980, 36(22), 3219-3228.

Validation Protocol

This section documents how profile weights are optimized and checked for overfitting.

Model Complexity + Data Regime

Primary physics profiles optimize 14 weights (one per physics term). DEKOIS2 targets in the benchmark registry are typically:

Metric Value
Tunable parameters 14
Active compounds 40
Decoy compounds ~1,150 to 1,200 (full sets)
Total compounds ~1,194 to 1,240
Parameter-to-data ratio ~1:85 to 1:89 (full sets)

For smaller demo subsets (for example 40 actives + 200 decoys), the ratio is still 1:17. The validation battery also enforces a feature-budget guardrail (validation_protocol.py): recommended max features are tied to active count, with a hard cap of 14 for datasets with <45 actives.

5-Fold Cross-Validation

Published physics_cv AUC values use stratified 5-fold cross-validation:

  1. Split data into 5 folds while preserving the active/decoy ratio
  2. Optimize weights on 4 folds (80%)
  3. Evaluate on the held-out fold (20%)
  4. Repeat for all 5 folds
  5. Report mean ± standard deviation of tie-corrected AUC

In the validation battery, CV standard deviation >= 0.10 is flagged as UNSTABLE.

Y-Scramble Control

Y-scramble is the null-model control:

  1. Randomly permute the active/decoy labels
  2. Re-optimize weights on the scrambled data
  3. Recompute AUC
  4. Expected behavior: AUC near 0.50

Current published outcomes include:

  • CATL: 0.523 (PASS)
  • HMGR: 0.529 (PASS)
  • ADRB2: MARGINAL
  • COX2: FAIL (no usable physics signal in the current feature set)

Holdout Validation (Web Optimizer)

The web-based optimizer (accessible from the Workbench) implements an additional 80/20 holdout validation:

  1. Stratified split: 80% training, 20% holdout (seeded for reproducibility)
  2. Optimize: Find best weights using only the training set
  3. Evaluate: Apply best weights to the holdout set
  4. Overfit alarm:
    • OK: train-holdout gap ≤ 0.05
    • MODERATE: 0.05 < gap ≤ 0.10
    • HIGH: gap > 0.10

In validation_protocol.py, a holdout gap > 0.10 is an explicit UNVERIFIED condition.

Development vs. Validation Targets

:::warning The energy functional forms (vdW, Coulomb, H-bond kernels) are fixed by code and physics assumptions, but profile weights are optimized and validated on DEKOIS2. This is strong per-target validation, not a fully independent external-target holdout. Prospective validation outside DEKOIS2 is still in progress. :::

Comparison to Other Methods

LatticeZero occupies a specific niche in the molecular docking landscape:

Aspect LatticeZero AutoDock Vina Glide SP/XP GOLD
Scoring 14-term physics-based Semi-empirical (5 terms) Empirical + physics (GlideScore) PLP/GoldScore/ChemScore
Speed ~4K lig/sec (rescore) ~10-50 lig/hr (dock) ~50-200 lig/hr (dock) ~10-50 lig/hr (dock)
Execution Browser (WebGPU) Local CPU Local CPU (license) Local CPU (license)
Profile tuning Per-target weight profiles Fixed function Limited (SP vs XP) Score function selection
Infrastructure Zero install, browser-based Binary install Schrodinger suite CCDC suite

Quantitative Performance Comparison

Head-to-head comparison on shared DEKOIS2 targets (tie-corrected AUC, 5-fold CV):

Metric LatticeZero IsoPose Glide SP
Mean AUC (22 shared targets) 0.821 0.741
Targets won 16 (73%) 5 (23%)
Ties 1 (4%) -

LatticeZero outperforms Glide SP on the majority of tested targets, with particular strength on kinases and proteases. Glide shows advantages on select targets including AR, ESR1, and PARP1. See full comparison: Benchmark Results.

Glide SP values from Wu et al., Chemical Science, 2025. Methodological differences (scoring protocols, conformer generation) may affect direct comparability.

Strengths: Massively parallel rescoring throughput, zero-install deployment, customizable per-target profiles, transparent physics terms with interpretable weights.

Limitations: Grid-based scoring does not capture induced-fit effects. No implicit/explicit solvent treatment beyond desolvation penalties. Pose search (IsoPose) is slower than IsoScore rescoring. Current validation is on rigid-receptor benchmarks. See Known Limitations for a complete discussion.

Further Reading