Molecular Docking Basics

Lesson 9 of 12 · 11 min

Interpreting Poses and Ranking

A finished Vina run leaves you with one output file that holds every pose it found, stored as separate MODEL blocks and already sorted from the best to the worst predicted affinity. Each pose carries a REMARK VINA RESULT line, and your job now is to read that ranking, pick a pose you can defend, and confirm the setup is trustworthy.

bash
# count the poses (one MODEL block each) and list their scores
grep -c "^MODEL" redock_out.pdbqt
grep "REMARK VINA RESULT" redock_out.pdbqt
9
REMARK VINA RESULT:     -9.2      0.000      0.000
REMARK VINA RESULT:     -8.7      1.983      2.774
REMARK VINA RESULT:     -8.5      2.115      3.630
REMARK VINA RESULT:     -8.1      3.402      5.118
REMARK VINA RESULT:     -7.9      2.044      2.881
REMARK VINA RESULT:     -7.6      4.117      6.502
REMARK VINA RESULT:     -7.4      2.560      3.994
REMARK VINA RESULT:     -7.1      3.889      5.771
REMARK VINA RESULT:     -6.8      4.203      7.010

The first number on each line is the predicted affinity in kcal/mol, where more negative means a tighter predicted binder, and the other two are RMSD lower and upper bounds giving that pose's distance from mode 1, which is why the top pose reads 0.000 and 0.000. The lower bound re-matches every atom to the nearest atom of the same element, so it stays optimistically small, while the strict atom-for-atom upper bound is larger. A large jump in these values from one mode to the next means a genuinely different binding orientation rather than a minor shift of the same pose.

Do not report mode 1 on faith, because Vina's scoring function has an error of roughly two to three kcal/mol, so any poses within about one kcal/mol of each other are effectively tied. Open the top few in a viewer such as PyMOL and keep the pose that fits the pocket without clashes and reproduces the contacts you expect, such as a hinge hydrogen bond in a kinase or a salt bridge to a catalytic residue. Score narrows the field, but pocket fit and known interactions decide the winner.

Split and validate

bash
# write each pose to its own file
vina_split --input redock_out.pdbqt
ls redock_out_ligand_*.pdbqt
redock_out_ligand_1.pdbqt  redock_out_ligand_2.pdbqt  redock_out_ligand_3.pdbqt
redock_out_ligand_4.pdbqt  redock_out_ligand_5.pdbqt  redock_out_ligand_6.pdbqt
redock_out_ligand_7.pdbqt  redock_out_ligand_8.pdbqt  redock_out_ligand_9.pdbqt

To trust the protocol on unknown ligands, first prove it on a known one by redocking. Take the ligand from a solved crystal complex, dock it back into the same receptor with the identical search box and parameters, then measure how far the top pose landed from the crystal position. Because both molecules already sit in the same receptor frame you compare them in place, with no re-superposition, which is exactly what obrms from OpenBabel does when it reports a symmetry-aware heavy-atom RMSD.

bash
# heavy-atom RMSD of the top redocked pose against the crystal ligand
obrms native_ligand.pdbqt redock_out_ligand_1.pdbqt
RMSD native_ligand.pdbqt:redock_out_ligand_1.pdbqt 1.36

Try it yourself: Split your own redock_out.pdbqt with vina_split, then load ligand_1 through ligand_3 onto the receptor in PyMOL. For each pose, note its affinity from the REMARK line, check whether it makes the key interaction you expect, and run obrms against the native ligand. Decide which pose you would actually report and justify it in one sentence using fit and interactions, not score alone. An RMSD under about 2 A against the native ligand tells you the whole setup is reproducing the experiment.