# Molecular Docking

> Molecular docking pipeline using AutoDock Vina for structure-based drug discovery. Triggers on docking, AutoDock Vina, receptor preparation, ligand preparation, PDBQT, grid box, virtual screening, binding affinity, pose prediction, structure-based virtual screening, "redocking RMSD", "Vina score", "docking pose", "prepare receptor", "ligand library screening".

- Skill: `awslabs/molecular-docking` (Agent Skill)
- Install (CLI): `npx skillmds@latest add awslabs/molecular-docking`
- Raw SKILL.md: https://api.skillmd.com/api/skills/awslabs/molecular-docking/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Product & Planning
- Author: awslabs (https://skillmd.com/u/awslabs)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/awslabs/molecular-docking

---


# Molecular Docking — Pipeline Skill (Thin Scaffold)

## Overview

Adds decision logic for receptor/ligand preparation tool selection, grid box sizing, exhaustiveness tuning, and validation protocol. Focuses on gotchas that produce silently wrong poses.

## Usage

- Activate when choosing preparation tools (obabel vs ADFR/meeko) for a docking campaign
- Activate when defining grid box dimensions or placement
- Activate when validating docking setup via redocking

## Core Concepts

## Decision Logic

```
Receptor preparation tool:
├── Quick exploration / single ligand → obabel (-d, reduce, -xr)
└── Production virtual screen → prepare_receptor (ADFR) or meeko
    └── Handles altlocs, metals, non-standard residues correctly

Ligand preparation:
├── Single ligand from SMILES/SDF → obabel --gen3d -h
├── Large library (>100 ligands) → meeko (mk_prepare_ligand.py)
└── Stereocenters undefined? → Enumerate explicitly BEFORE docking

Grid box placement:
├── Co-crystal ligand available → Center on ligand centroid
└── No co-crystal → Use pocket predictor (fpocket, P2Rank, SiteMap)

Grid box sizing:
└── Ligand longest diameter + 10–15 Å padding per axis
    └── Typical: 20–30 Å per side for drug-like molecules

Exhaustiveness:
├── Quick exploration → 8 (Vina default)
├── Production / ranking → 32
└── Large/flexible ligands (>8 rotatable bonds) → 64+
```

**Validation gate (MUST pass before trusting screen results):**
Redock co-crystal ligand → RMSD < 2 Å against crystallographic pose. If fails, fix preparation or grid before screening.

## Critical Parameters

| Parameter | Recommended | When to change |
|-----------|-------------|----------------|
| `exhaustiveness` | 32 | 64+ for >8 rotatable bonds |
| `num_modes` | 10 | Increase for ensemble analysis |
| `energy_range` | 3 kcal/mol | Widen to capture diverse poses |
| Box padding | +10–15 Å | Larger for allosteric sites |
| Protonation pH | 7.0 (reduce default) | Use PROPKA/H++ for acidic pockets (e.g., aspartyl proteases pH 4.5) |

**Score interpretation:**
- Vina scores are only comparable within the SAME receptor + grid setup
- Typical drug-like hits: -7 to -12 kcal/mol
- Scores are NOT transferable across different targets or grid configurations

## Common Mistakes

- **Wrong:** Leaving crystallographic waters in the receptor
  **Right:** Strip HOH/WAT residues before PDBQT conversion (unless explicit-water docking)
  **Why:** Waters block the binding site and produce unphysical poses

- **Wrong:** Using default pH 7 protonation for all binding sites
  **Right:** Use PROPKA or H++ for acidic/basic pockets
  **Why:** Wrong protonation alters H-bond networks and produces incorrect poses

- **Wrong:** Grid box barely enclosing the binding site
  **Right:** Ligand diameter + 10–15 Å padding per axis
  **Why:** Under-padding clips the site and biases poses toward box center

- **Wrong:** Default `exhaustiveness = 8` for large/flexible ligands
  **Right:** Use 32+ for production; 64+ for >8 rotatable bonds
  **Why:** Low exhaustiveness misses global minima, unreliable rankings

- **Wrong:** Skipping redocking validation before screening
  **Right:** Redock co-crystal ligand, verify RMSD < 2 Å
  **Why:** RMSD ≥ 2 Å means preparation or grid is wrong; screen results untrustworthy

- **Wrong:** Using `obabel -xr` PDBQT for production virtual screens
  **Right:** Use `prepare_receptor` (ADFR) or meeko for production
  **Why:** obabel may miss altlocs, metals, or non-standard residues

- **Wrong:** Running `obabel --gen3d` on SMILES with undefined stereocenters
  **Right:** Provide isomeric SMILES or enumerate stereoisomers explicitly
  **Why:** Undefined stereocenters resolved arbitrarily — may dock wrong enantiomer

- **Wrong:** Comparing Vina affinities across different receptors or grid configs
  **Right:** Only compare within same receptor + grid; re-rank when changing either
  **Why:** Scores are context-dependent, not transferable

## Response Format

- Lead with the command or code the user needs — explain after
- Structure as: confirm inputs → working code → key parameters explained → gotchas
- One complete working example per task; do not show every alternative
- Keep code comments minimal and functional (what, not why-it-exists)
- Target: 50-100 lines of code with brief surrounding explanation

