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:
- Initialization - Generate an initial population of random poses within the pocket volume
- Scoring - Evaluate each pose using the 14-term scoring function on the GPU
- Selection - Keep the best-scoring poses
- Crossover & Mutation - Generate new poses by combining and perturbing survivors
- Convergence - Repeat until the population converges, early stopping triggers, or max generations reached
- Multi-restart - Run multiple independent GA searches to escape local minima
- PoseRepair - Relax clashes in top poses via gradient-free perturbation
- 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
- Navigate to Workbench > IsoPose
- Select target - choose from your project's prepared targets, or enter a PDB code to fetch from RCSB
- Upload ligands - drag & drop SDF/MOL2, or enter a SMILES string and click Prep to generate 3D coordinates
- 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)
- Click Launch Docking
Custom Target Path
You can dock against any PDB structure without pre-preparation:
- Enter a PDB code (e.g.,
1AQ1) - IsoPose fetches the structure from RCSB - Review the receptor analysis (atom count, chains, waters, co-crystallized ligands)
- The preparation checklist flags issues: missing hydrogens, bulk waters, metal sites
- Water analysis classifies near-pocket waters as conserved or bulk
- Metal detection identifies catalytic or structural metal ions
- Select a target class and scoring profile (auto-suggested based on pocket analysis)
- 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:
- Scout (1 restart, 80 gens, ~0.3s) - tries a quick search first
- Standard (3 restarts, 100 gens + auto-policy, ~6–30s) - if scout doesn't find good poses
- 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 calledpose0_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 betrue).
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://gpufor 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