The Complete Guide to Molecular Docking: Tools, Workflow & Best Practices
Molecular docking is one of the most widely used techniques in computational drug discovery — but most tutorials assume you already know what you’re doing. This guide starts from scratch: what docking actually is, how to choose software, a step-by-step workflow, and the mistakes that trip up most beginners.
What is molecular docking?
Molecular docking is a computational method that predicts how a small molecule (the ligand — usually a drug candidate) binds to a protein target (the receptor). It outputs two things: the predicted binding pose (orientation and position of the ligand inside the protein) and a binding affinity score that estimates how tightly the two molecules interact.
In drug discovery, this matters enormously. Experimental screening of millions of compounds against a protein target is expensive and slow. Molecular docking lets you computationally screen hundreds of thousands of candidates first, filter down to the most promising hits, and only then run expensive wet-lab experiments on a much smaller set.
But docking isn’t just for drug discovery. Structural biologists use it to study enzyme-substrate interactions, understand protein function, and predict binding sites on newly resolved structures — including those predicted by AlphaFold.
How docking works: the algorithm
At its core, a docking algorithm has two components: a search algorithm that explores possible ligand poses, and a scoring function that evaluates how favorable each pose is.
The search problem
A ligand can rotate and translate inside a binding site in an astronomical number of ways. The search algorithm has to explore this conformational space efficiently. Different software uses different strategies: AutoDock Vina uses a gradient-based optimization method combined with random restarts; older AutoDock uses a genetic algorithm; Glide (Schrödinger) uses a funnel-shaped scoring hierarchy that progressively filters poses.
You define the search space by specifying a grid box — a region of 3D space around the binding site where the algorithm will explore. Getting this box right is one of the most important (and frequently botched) steps in the whole workflow.
The scoring function
Once poses are generated, a scoring function estimates the binding free energy — how strongly the ligand is predicted to bind. Most scoring functions are empirical, trained on experimental binding data, and account for:
- Steric interactions (shape complementarity between ligand and pocket)
- Hydrogen bonds between ligand and protein residues
- Hydrophobic contacts
- Electrostatic interactions
- Ligand flexibility (torsional entropy penalty)
The output is a binding affinity score in kcal/mol. More negative = predicted tighter binding. A score of −9 kcal/mol is generally considered promising; −5 or worse is typically not worth pursuing.
Which software should you use?
There are dozens of docking programs. For most grad students and academic researchers, the decision comes down to three options:
| Software | Cost | Accuracy | Speed | Best for |
|---|---|---|---|---|
| AutoDock Vina | Free | Good | Fast | General use, virtual screening, learning |
| GNINA | Free | Very good | Moderate | Higher accuracy, GPU available |
| Glide (Schrödinger) | Commercial | Excellent | Moderate | Industry/pharma, highest-quality results |
| rDock | Free | Good | Fast | Large-scale screening, RNA targets |
| SwissDock | Free (web) | Moderate | Slow (server) | Quick exploratory docking, no setup |
Recommendation for most readers: Start with AutoDock Vina. It’s free, fast, well-documented, has an enormous user community, and produces results good enough for the majority of academic research. Once you’re comfortable, consider GNINA for projects where accuracy matters more than speed.
The standard docking workflow
Here is the complete workflow for running a molecular docking experiment from scratch. Each step has its own detailed tutorial linked below — this section gives you the full picture.
config.txt looks like this:receptor = protein_prepared.pdbqt
ligand = ligand_prepared.pdbqt
center_x = 12.5
center_y = -8.3
center_z = 24.1
size_x = 20
size_y = 20
size_z = 20
exhaustiveness = 8
num_modes = 9
energy_range = 3
vina --config config.txt --out output.pdbqt --log output.log. Vina will generate up to num_modes binding poses ranked by score. Runtime is typically seconds to a few minutes per ligand on a modern laptop.How to interpret binding affinity scores
AutoDock Vina outputs binding affinity in kcal/mol. Here is a rough guide to interpreting these values in the context of early-stage drug discovery:
A few important caveats about these numbers. First, Vina scores are not directly comparable across different protein targets — what counts as “good” depends on the binding pocket size and chemistry. Second, the top-ranked pose is not always the correct one; always inspect poses 2 and 3 as well. Third, a great score on a poorly prepared protein is meaningless — garbage in, garbage out.
When comparing compounds in a virtual screening campaign, relative ranking matters more than absolute score. If compound A scores −10.2 and compound B scores −8.1 against the same target, A is the better candidate — but neither score tells you the actual experimental IC50.
Best practices and common mistakes
Things that catch most beginners
Not checking the protonation state of key residues. Histidine, aspartate, and glutamate have pH-dependent protonation states that dramatically affect docking results. Use a tool like H++ or PropKa to predict protonation at your target pH before preparing the receptor.
Grid box too large or poorly positioned. A box that’s too large includes irrelevant space and slows the search; one that’s too small may miss the real binding pose. If you’re targeting a known binding site, center the box on the co-crystallized ligand centroid from the original PDB structure. Aim for a box that extends ~10 Å in each direction beyond the largest dimension of your ligand.
Skipping validation. Always perform a self-docking validation before trusting any results. If your protocol can’t reproduce a known crystal structure pose, your results for novel ligands are unreliable.
Using a low exhaustiveness value. The default exhaustiveness = 8 is fine for quick tests, but for important results, increase it to 16 or 32. Higher exhaustiveness means more thorough conformational sampling at the cost of compute time.
Ignoring the other top poses. Vina returns up to 9 poses. The top-ranked pose is not always biologically relevant. Always inspect at least the top 3 poses visually, and prefer poses that place the ligand in a position consistent with known SAR or mutagenesis data.
Limitations of molecular docking
Molecular docking is a powerful tool, but it has real limitations that every practitioner needs to understand before trusting their results.
Protein flexibility is poorly handled. Standard docking treats the receptor as rigid. Real proteins breathe, flex, and undergo induced fit upon ligand binding — especially at binding sites. This is why docking sometimes misses good binders that require conformational change: the algorithm never explores those receptor states. Ensemble docking (docking against multiple receptor conformations) partially addresses this, but adds complexity.
Scoring functions are imperfect. The correlation between docking scores and experimental binding affinities is real but modest — roughly r = 0.5–0.7 across diverse compound sets. Docking enriches your hit rate; it doesn’t guarantee true positives or rule out false negatives.
Solvation and entropy are approximated. Water molecules in the binding site can make or break a binding interaction. Standard docking mostly ignores explicit solvent effects, which is a significant approximation. Water displacement and desolvation penalties are handled crudely in most scoring functions.
Covalent binding and metal coordination are handled poorly (or not at all). If you’re working with covalent inhibitors or metalloproteins, standard non-covalent docking is not appropriate. You need specialized tools for these cases.
The right way to think about docking
Molecular docking is a hypothesis generator, not a hypothesis tester. Use it to narrow a large chemical space down to a manageable set of candidates, then validate those candidates with more rigorous computational methods (MD, MM-GBSA) and ultimately with experiment.
Next steps
Now that you have the full picture of what molecular docking is and how it works, the natural next step is to run your first docking experiment. The tutorials below walk through each part of the workflow in detail, with exact commands, screenshots, and troubleshooting tips for the most common errors.
If you’re new to the tools, start with the installation guide and protein preparation tutorial before attempting the main Vina walkthrough. Setting up the files correctly is where most beginners spend the most time — getting that foundation right makes everything else much smoother.
Thanks for this, really helpful, awesome guide.