Molecular Docking Basics

Lesson 12 of 12 · 11 min

Wrap-Up and Where to Go Next

Recapping The Pipeline

You started from a target structure, cleaned it, and added polar hydrogens and charges to build a receptor.pdbqt. You then defined a search box around the binding site, prepared each ligand, and ran AutoDock Vina to sample and score poses. Vina returned a ranked list of poses scored by an empirical estimate of binding free energy in kcal/mol, and you inspected the top pose for sensible contacts.

Where Docking Falls Short

Those scores rest on strong simplifying assumptions. Vina holds the receptor rigid, uses an approximate additive scoring function, and treats solvent only implicitly, so it ignores explicit waters, protonation changes, and conformational dynamics. A more negative score does not reliably mean tighter binding, and the rank order can be wrong even when the pose geometry looks plausible.

A Vina affinity is a rough ranking signal, not a measured binding free energy. Never quote a docking score as a Kd or IC50, and treat differences smaller than about 1 kcal/mol between two compounds as noise.

Rescore Your Best Poses

bash
smina \
  --receptor receptor.pdbqt \
  --ligand best_pose.pdbqt \
  --score_only \
  --scoring vinardo
Using scoring function: vinardo
Affinity: -8.21 (kcal/mol)
Intramolecular energy: -1.94
Term values, before weighting:
##  gauss(o=0,w=0.8,c=8)          52.417
##  repulsion(o=0,c=8)             1.086
##  hydrophobic(g=0.5,b=1.5,c=8)  18.902
##  non_dir_h_bond(g=-0.7,b=0,c=8) 2.331

Flexible And ML Docking

bash
# Split the receptor into a rigid core plus flexible side chains
pythonsh prepare_flexreceptor4.py -r receptor.pdbqt -s receptor:A:ARG221_TYR224

# Redock with those side chains free to move
vina \
  --receptor receptor_rigid.pdbqt \
  --flex receptor_flex.pdbqt \
  --ligand ligand.pdbqt \
  --config box.txt \
  --exhaustiveness 16 \
  --out flex_poses.pdbqt

From here you can rescore whole ensembles with Smina or run GPU docking with AutoDock-GPU to screen large libraries fast, then refine your best complexes with molecular dynamics in GROMACS or OpenMM to relax the receptor and add explicit water. Deep-learning methods such as DiffDock generate poses directly from the protein structure and ligand graph and can rival classical search on standard benchmarks, though they generalize unevenly to novel targets and sometimes return physically strained poses, so validate their poses the same way you would a docking run. For reading and benchmarks, start with the AutoDock Vina 1.2.0 paper, the DiffDock paper, and datasets such as PDBbind for affinities and the DUD-E and DEKOIS decoy sets for validation.

Try it yourself: before trusting any result, redock a ligand from a known co-crystal structure into the same receptor, then compute the heavy-atom RMSD between your top pose and the crystal pose. An RMSD under 2 angstroms means your box, scoring, and preparation can reproduce a real binding mode, so you can have more confidence in novel predictions.