Documentation

Docs / Tools / IsoPose

IsoPose

IsoPose is LatticeZero's GPU-accelerated molecular docking engine. It performs full pose search using a genetic algorithm optimizer, producing 3D binding poses with physics-based scores - all running in your browser via WebGPU.

Overview

Property Value
Speed ~3–8 seconds per ligand (preset-dependent)
Pose search Genetic algorithm (GA) with multi-restart
Scoring 14-term physics-based function
Output Ranked poses with per-term decomposition
GPU requirement WebGPU-capable browser

How It Works

IsoPose uses a genetic algorithm to explore ligand conformations within the binding pocket:

  1. Initialization - Generate an initial population of random poses within the pocket volume
  2. Scoring - Evaluate each pose using the 14-term scoring function on the GPU
  3. Selection - Keep the best-scoring poses
  4. Crossover & Mutation - Generate new poses by combining and perturbing survivors
  5. Convergence - Repeat until the population converges, early stopping triggers, or max generations reached
  6. Multi-restart - Run multiple independent GA searches to escape local minima
  7. PoseRepair - Relax clashes in top poses via gradient-free perturbation
  8. Refinement - Local optimization of the best poses

The scoring function evaluates dispersion, electrostatics, hydrogen bonds, desolvation, strain, and other physics terms. See the Physics Reference for details on all 14 terms.

Using IsoPose

Prerequisites

  • A prepared target with compiled scoring grid (see Target Prep), or a PDB code to fetch directly
  • Ligand files in SDF or MOL2 format, or a SMILES string

Running a Docking Job

  1. Navigate to Workbench > IsoPose
  2. Select target - choose from your project's prepared targets, or enter a PDB code to fetch from RCSB
  3. Upload ligands - drag & drop SDF/MOL2, or enter a SMILES string and click Prep to generate 3D coordinates
  4. Configure options (optional):
    • Scoring profile - select a target-class-specific profile or use the default
    • Accuracy preset - controls thoroughness vs. speed (see Accuracy Presets)
    • Local mode - run docking in your browser via WebGPU (vs. server-side compute)
  5. Click Launch Docking

Custom Target Path

You can dock against any PDB structure without pre-preparation:

  1. Enter a PDB code (e.g., 1AQ1) - IsoPose fetches the structure from RCSB
  2. Review the receptor analysis (atom count, chains, waters, co-crystallized ligands)
  3. The preparation checklist flags issues: missing hydrogens, bulk waters, metal sites
  4. Water analysis classifies near-pocket waters as conserved or bulk
  5. Metal detection identifies catalytic or structural metal ions
  6. Select a target class and scoring profile (auto-suggested based on pocket analysis)
  7. Enter your ligand SMILES, click Prep, then dock

Accuracy Presets

IsoPose offers five accuracy presets that trade speed for thoroughness:

Preset Restarts Generations Population Conformers Approx. Speed
Fast 1 60 15 1 ~2 sec/lig
Balanced Fast 2 80 20 2 ~4 sec/lig
Balanced 3 100 20 3 ~8 sec/lig
High 5 150 30 5 ~20 sec/lig
Exhaustive 8 200 40 5 ~45 sec/lig

Higher presets also enable additional features like auto-policy routing, policy ensemble, and chemical state enumeration (see below).

Advanced Features

Auto-Policy Routing

IsoPose analyzes the binding pocket to automatically select the best search strategy:

  • Baseline - default for most targets
  • Aggressive - for kinases, GPCRs, and deeply buried pockets (larger perturbations, faster convergence)
  • Conservative - for metalloenzymes and tight pockets (smaller steps, more restarts)
  • Exploratory - for PPI interfaces and shallow grooves (wider initial search)

The policy engine examines pocket volume, charged-atom fraction, buriedness, and metal presence to choose. Enabled by default in Balanced and higher presets.

Conformer Ensemble

Instead of docking a single ligand conformation, IsoPose generates multiple diverse 3D conformers (via RDKit ETKDGv3) and docks each independently. The best pose across all conformers is reported.

This breaks the "steric veto ceiling" - if the input conformation has a clash that prevents correct placement, alternative conformers can still find the right binding mode.

Ligand Size Conformers
Small (≤8 rotatable bonds) 3
Medium (≤12 rotatable bonds) 2
Large (>12 rotatable bonds) 1
Metal pocket Capped at 2

Chemical State Enumeration

Many drug-like molecules have ionizable groups (amines, carboxylic acids, phenols) whose protonation state affects binding. IsoPose can enumerate plausible protonation states and tautomers, dock each, and keep the best.

  • Enabled at Balanced and higher presets (3–5 states)
  • Prioritized over conformer ensemble to control compute cost
  • Typical overhead: 1.4–1.7x (much cheaper than conformer ensemble)

TopK Pose Extraction

Instead of returning only the single best pose, IsoPose can return the top K poses per ligand, diversity-filtered by RMSD clustering:

Preset TopK
Fast 1
Balanced 3
High 5

Multiple poses help identify alternative binding modes and give downstream analysis more options.

Metal Auto-Detection

IsoPose automatically detects catalytic and structural metal ions (Zn, Mg, Ca, Fe, Cu, Co, Ni, Mn) in the receptor. When metals are found:

  • Metal anchor scoring is enabled (penalizes poses that ignore the metal coordination site)
  • Conformer count is capped at 2 to avoid wasting compute on a tight pocket
  • A "Metal anchor" badge appears in the quality stack

GA Early Stopping

The genetic algorithm monitors improvement across generations. If the best score hasn't improved for 15 consecutive generations (after a minimum of 20 generations), the search terminates early. This can save 20–40% of compute time on easy cases without affecting pose quality.

PoseRepair-Lite

After the GA search, the top poses undergo PoseRepair - a clash-resolution step that applies small random perturbations to reduce steric overlap. This is enabled by default and typically improves 95%+ of poses.

Adaptive Budget Escalation

For server-side docking jobs, IsoPose can automatically escalate compute budget based on difficulty:

  1. Scout (1 restart, 80 gens, ~0.3s) - tries a quick search first
  2. Standard (3 restarts, 100 gens + auto-policy, ~6–30s) - if scout doesn't find good poses
  3. Deep (3 conformers × 3 restarts × 150 gens, ~30–90s) - for the hardest cases

Easy ligands finish at the scout stage, saving significant time in large-scale screens.

Understanding Results

Each docked ligand receives:

  • Total Score - the weighted sum of all scoring terms (more negative = better)
  • Per-term decomposition - individual contributions from each physics term
  • 3D Pose - the predicted binding geometry, viewable in the 3D viewer
  • RMSD (if reference pose provided) - deviation from a known binding mode
  • Quality indicators - badges for active features (PoseRepair, metal anchor, auto-policy, etc.)

Results Table Columns

Column Description
Rank Position by total score
Ligand Molecule name from input file
Score Total docking score (kcal/mol-like units)
E_disp Dispersion (van der Waals attraction)
E_rep Repulsion (steric clashes)
E_coul Electrostatic interactions
E_hb Hydrogen bond score
n_hbonds Number of hydrogen bonds detected
insideFrac Fraction of ligand atoms inside the pocket
min_dist Minimum protein-ligand distance
... Additional terms (see Physics Reference)

Docking Distance Metrics

After docking, each pose includes distance metrics in dock_stats:

Metric What It Measures Typical Value Use For
pocket_distance Distance from pocket center to pose centroid 2–15 Å Verifying poses land in the binding site
in_pocket Whether the pose is within 1.5× pocket radius true/false Quick pass/fail check
input_displacement Distance from input ligand coords (origin) to docked pose 30–80 Å Confirming the GA moved the ligand to the pocket
pocket_center The [x,y,z] pocket center used for docking varies Reference point for pocket_distance
pocket_radius Radius of the docking sphere 8–15 Å Context for pocket_distance

Important: input_displacement (also called pose0_centroid_distance) measures how far the ligand moved from its input coordinates to the docked position. Since input coordinates from SMILES are generated near the origin [0,0,0], this value is typically 30–80 Å - this is expected and does not mean the pose is far from the pocket. To check if a pose is in the pocket, use pocket_distance (should be < pocket_radius) or in_pocket (should be true).

Scoring Profiles

IsoPose uses a scoring profile to weight the 14 physics terms. The default profile works well for most targets, but you can improve accuracy by selecting a target-class-specific profile:

  • Kinase profiles - emphasize hinge hydrogen bonds and hydrophobic burial
  • Protease profiles - weight catalytic residue interactions
  • Metalloenzyme profiles - include zinc-binding group and metal coordination terms
  • Nuclear receptor profiles - prioritize aromatic burial and shape complementarity

See Scoring Profiles for the full list and customization options.

Performance Tips

  • Choose the right preset - Use Fast or Balanced Fast for interactive exploration, Balanced for production, High for critical pose predictions.
  • Batch size - IsoPose processes one ligand at a time. For large libraries (>100 ligands), consider using IsoScore for initial screening, then IsoPose for top hits.
  • GPU matters - Discrete GPUs (NVIDIA RTX, AMD RX) are significantly faster than integrated graphics.
  • File format - SDF files with 3D coordinates dock faster than SMILES-only input (avoids conformer generation step).
  • Pocket size - Smaller, well-defined pockets produce faster and more accurate results.
  • Metal targets - If your target has a catalytic metal, ensure it's present in the receptor file for best results.

Comparison with IsoScore

Feature IsoPose IsoScore
Pose search Yes (GA) No (uses input poses)
Speed ~3–8 sec/lig ~4,000 lig/sec
Best for Pose prediction, binding mode analysis Library rescoring, virtual screening
Input SDF/MOL2/SMILES (2D or 3D) SDF with 3D poses
Output New poses + scores + physics terms Scores only
Conformer ensemble Yes No
Metal detection Automatic Manual

Troubleshooting

Docking is slow (>15 sec/ligand)

  • Check that WebGPU is active (not falling back to CPU)
  • Close other GPU-intensive tabs
  • Try the Fast or Balanced Fast preset
  • For large ligands (>12 rotatable bonds), expect longer times

Poor poses (high scores / clashes)

  • Verify your pocket definition covers the binding site
  • Check that the grid compilation completed without warnings
  • Try a target-class-specific scoring profile
  • Enable PoseRepair if not already active

"WebGPU not available" error

  • Update your browser to Chrome 113+ or Edge 113+
  • Check chrome://gpu for WebGPU status
  • Ensure hardware acceleration is enabled in browser settings

Metal site not detected

  • Ensure the metal ion is present as a HETATM record in your PDB file
  • Common metals detected: Zn, Mg, Ca, Fe, Cu, Co, Ni, Mn, Cd, Mo
  • Calcium atoms (CA) in HETATM records are distinguished from alpha carbons (CA) in ATOM records

Ligand stuck at origin (0,0,0)

  • This usually means the pocket center was not set correctly
  • If using a custom PDB, ensure co-crystallized ligands or HETATM atoms are present for pocket detection
  • Manually specify the pocket center if auto-detection fails