Protein-Protein Binding Affinity: PRODIGY & MM/GBSA
Skip to content

How to Calculate Protein-Protein Binding Affinity

How to Calculate Protein-Protein Binding Affinity

Upload the docked complex to the PRODIGY web server, name the two interactors by chain ID, and it returns a predicted binding free energy in kcal/mol plus a dissociation constant at your chosen temperature. For per-residue detail, run the same complex through the HawkDock MM/GBSA module, which decomposes the energy residue by residue.

This is the step that stops most students cold. ClusPro, HDOCK or HawkDock hands back ten poses with scores like -1043.2 or -287.6, and nothing in the output says which pose binds tightly or whether the interaction is nanomolar or millimolar. Those numbers are not binding affinities and they were never meant to be. This guide, written by the StemSkills Lab team from 10+ years in sequence and structural bioinformatics, drug discovery and design, and multiscale molecular modeling, shows you how to get a real dG and Kd out of a docked complex, how to read the per-residue breakdown, and where each number stops being trustworthy. If you are still deciding what to learn in what order, our computational biology skills roadmap places affinity prediction after docking and before molecular dynamics.

Why is a docking score not a binding affinity?

A docking scoring function has one job: rank poses of the same pair of proteins so the near-native one floats to the top. It is optimised for discrimination inside a single job, not for comparing across systems. That is why an HDOCK score of -287 for one complex tells you nothing about a second complex scoring -240, and why the units are arbitrary rather than kcal/mol.

The gap between the two tasks is an old and well documented problem. Kastritis and Bonvin laid it out in Are Scoring Functions in Protein-Protein Docking Ready To Predict Interactomes? Clues from a Novel Binding Affinity Benchmark (Journal of Proteome Research, 2010, 9, 2216 to 2225), the paper that also produced the structure-based affinity benchmark that later methods are trained and tested on. The practical consequence for your project is simple. If a reviewer or supervisor asks “how tight is this interaction”, the docking score is not an answer, and quoting it as one is the fastest way to lose credibility.

A binding affinity predictor is a different kind of tool. It takes a complex that already exists as a 3D structure and estimates the free energy of association for that structure. It does not search poses and it does not care how the pose was produced, which is exactly why you run it after docking rather than instead of it.

How do you predict binding affinity with the PRODIGY web server?

PRODIGY (PROtein binDIng enerGY prediction) is the fastest credible route. It is free, needs no install, and runs in seconds because the underlying model is a linear regression on counted contacts rather than a simulation. The server lives at wenmr.science.uu.nl/prodigy and is maintained by the Bonvin group in Utrecht.

The method comes from Vangone and Bonvin, Contacts-based prediction of binding affinity in protein-protein complexes, published in eLife in 2015. Their finding, in their own words, is that “the network of inter-residue contacts (ICs) between two interacting proteins is a good descriptor for the BA”. The model counts inter-residue contacts across the interface within a 5.5 angstrom cutoff, splits them into six classes by the polarity and charge of the residue pair (charged/charged, charged/polar, charged/apolar, polar/polar, polar/apolar, apolar/apolar), and combines them with two properties of the non-interacting surface: the percentage of apolar and of charged residues that are not at the interface. On a cleaned set of 81 complexes with reliable experimental affinities, drawn from an original 122, that combination reached a correlation of 0.73 (p < 0.0001) with an RMSE of 1.89 kcal/mol, better than every published method it was benchmarked against.

The submission, step by step

  1. Take one docked pose, not all ten. Pick the top-ranked model from your docking run, or the pose you have independent evidence for (a crosslink, a mutagenesis hotspot, a known epitope).
  2. Open the PRODIGY server and either upload the file (PDB or mmCIF are both accepted) or type a four-character PDB ID if you are scoring an experimental structure.
  3. Fill in Interactor 1 and Interactor 2 with chain IDs. A single chain per side is just A and B. If one side is multi-chain, give it as a comma-separated list. The server’s own example is Interactor 1 = P and Interactor 2 = L,H, which is the standard antigen versus antibody light-plus-heavy split.
  4. Set the temperature. The dissociation constant is calculated at 25 degrees Celsius by default, and you can change it to any value. If you are comparing against an SPR or ITC measurement made at 37 degrees, match it.
  5. Submit. A two-chain complex returns in well under a minute.

How do you read the PRODIGY output?

The results page gives you five things worth recording in your lab notebook:

  • Predicted binding affinity (dG) in kcal/mol. More negative means tighter.
  • Dissociation constant (Kd) at the temperature you set, in molar.
  • Number of intermolecular contacts (ICs) within 5.5 angstrom, broken out by contact property. This is the raw signal behind the prediction.
  • Percentage of charged and apolar non-interacting surface (NIS%).
  • A downloadable residue contact table and a PyMOL script that selects the interface for you.

The dG and Kd are two views of the same number, linked by dG = RT ln(Kd). At 25 degrees Celsius, RT is 0.592 kcal/mol, so a predicted dG of -10.0 kcal/mol corresponds to a Kd of roughly 47 nM, and -8.0 kcal/mol to roughly 1.4 micromolar. Notice what that means for error bars: 2 kcal/mol, which is close to PRODIGY’s own RMSE of 1.89, moves the Kd by about thirty-fold. Report dG as your primary number and treat Kd as an order-of-magnitude statement.

Download the contact table even if you never open it in a paper. When a prediction looks wrong, the contact count is where you find out why, and it is also the input for a sensible interface figure back in your molecular docking write-up.

Can you run PRODIGY from the command line?

Yes, and you should the moment you have more than about five complexes. The Bonvin group ships it as a Python package:

pip install prodigy-prot
prodigy complex.pdb --selection A B

Useful flags documented in the haddocking/prodigy repository include --temperature to set the Kd temperature, --distance-cutoff to change the 5.5 angstrom contact threshold, --contact_list to write out every contact, --pymol_selection to generate the interface script, and -q to print only the predicted affinity, which is what you want inside a shell loop over a directory of poses. The tool also accepts a directory or a multi-model PDB directly, so scoring an NMR ensemble or a full docking output folder is one command.

Want the guided, hands-on version?

Our live Molecular Modeling & MD Simulations cohort bootcamp takes you from zero to running real docking and MD workflows, with a portfolio project for your grad-school applications.

Join the waitlist (free) →

What does HawkDock MM/GBSA add that PRODIGY does not?

PRODIGY gives you one number for the whole interface. HawkDock gives you the number split across residues, which is what you need when the real question is “which mutation should I make next”.

HawkDock is hosted at cadd.zju.edu.cn/hawkdock and was published by Weng and colleagues in Nucleic Acids Research in 2019 (47, W322 to W330), combining the ATTRACT rigid-body docking algorithm, the HawkRank scoring function and MM/GBSA free energy decomposition. Version 2, from Zhang and colleagues in Nucleic Acids Research in 2025 (53, W306 to W315), describes the layout you will meet today: “HawkDock server consists of two primary modules: the HawkDock module for protein-protein docking and the MM/GBSA module for key residue identification, binding pose selection, and amino acid mutation analysis.”

That second module is the one you want if you already have a complex. It takes a single Input Complex (PDB file or PDB ID) plus a Chain ID of Receptor and a Chain ID of Ligand, and offers a choice of MM/GBSA or VD-MM/GBSA. The docking module instead wants two separate structures, an Input Receptor and an Input Ligand, with the instruction to “submit the larger protein as the receptor (< 1000 AA)”, and lets you re-rank the top 10 poses by MM/GBSA, VD-MM/GBSA or none.

Two numbers from the version 2 paper are worth knowing before you choose settings. The deep-learning docking option, GeoDock, reached a 63% success rate on the apo Docking Benchmark 5 set against 51% for the original HawkDock protocol, so it is the better default when your inputs are unbound structures. And VD-MM/GBSA reached a Pearson correlation of 0.734 on highly charged interfaces where conventional MM/GBSA managed 0.611, which is the case that most often goes wrong in practice.

Which method should you use, and when?

MethodInputOutputTypical runtimeBest forMain limitation
PRODIGYOne complex, chain IDsdG (kcal/mol), Kd, contact counts, NIS%SecondsA defensible affinity estimate; batch scoring by CLIRigid single structure, no per-residue breakdown, RMSE 1.89 kcal/mol
HawkDock MM/GBSA moduleOne complex, receptor and ligand chain IDsBinding free energy plus per-residue decomposition, rankedMinutes to hours (queued)Finding hotspot residues, planning mutantsAbsolute values are not experimental affinities; sensitive to charge
HawkDock docking moduleTwo separate structuresTop 100 poses, top 10 re-rankedHours (queued)Docking and scoring in one submissionReceptor limited to under 1000 residues
Docking score (ClusPro, HDOCK)Two structuresArbitrary-unit scoreMinutes to hoursRanking poses of one systemNot comparable across systems, not an affinity

The workflow that survives scrutiny is all three in order. Dock, keep the top pose, run PRODIGY for the headline dG and Kd, then run the HawkDock MM/GBSA module on that same pose for the residue-level story. Each tool answers a question the previous one cannot.

How do you report these numbers without overclaiming?

Write the sentence the way a structural biologist would read it. “PRODIGY predicts a binding free energy of -10.4 kcal/mol for the top-ranked HDOCK pose, corresponding to a Kd of approximately 24 nM at 25 degrees Celsius” is honest. “The complex binds with a Kd of 24 nM” is not, because you measured nothing.

Three habits keep you on the right side of that line. State the method and the structure it was run on, because the prediction describes that pose and not the protein pair in general. Quote the published error alongside your value, so a 1.89 kcal/mol RMSE is visible to the reader. And use predicted affinities comparatively rather than absolutely: the difference between a wild type and a designed mutant, scored the same way on the same pose, is far more informative than either number alone.

What goes wrong, and how do you fix it?

  • PRODIGY reports zero or almost zero contacts. Your chain IDs are wrong, or both partners share a chain ID after docking. Check what is actually in the file with grep '^ATOM' complex.pdb | cut -c22 | sort -u, which prints every chain identifier present, then use exactly those letters.
  • The predicted dG barely changes between very different poses. Expected. The model is contact-count driven, so two poses burying similar surface score similarly. Use it to reject poses that bury almost nothing, not to pick between two plausible interfaces.
  • An interfacial ligand, metal ion or cofactor seems to be ignored. It is. PRODIGY scores protein-protein contacts. For a small-molecule interface, the companion server PRODIGY-LIG is the correct tool.
  • The HawkDock MM/GBSA job fails or never returns. Missing atoms and missing loops are the usual cause, because the structure has to be parameterised before the calculation runs. Repair gaps and add missing side chains before you upload, and strip waters and unusual HETATM records.
  • MM/GBSA gives a wildly large negative energy on a charged interface. This is the known weak spot the version 2 authors targeted. Switch to VD-MM/GBSA, which was reported at 0.734 correlation against 0.611 for conventional MM/GBSA on exactly those cases.
  • Your two predictors disagree. They should not be expected to agree in absolute terms. Treat PRODIGY as the affinity estimate and MM/GBSA as the ranking and decomposition tool, and say so in your methods.

Frequently asked questions

Can I predict binding affinity from an AlphaFold model instead of a docked pose?

Yes, mechanically, since PRODIGY only needs a 3D complex. The caution is that the prediction inherits the model’s interface error, so check the interface confidence first (PAE across the two chains, and ipTM for the complex) and treat a low-confidence interface as unscoreable rather than weak-binding.

What counts as a tight interaction in these units?

As a rough map at 25 degrees Celsius, dG near -7 kcal/mol is about 7 micromolar, -10 kcal/mol is about 47 nanomolar, and -13 kcal/mol is about 300 picomolar. Most transient signalling complexes sit in the micromolar range and most antibody-antigen pairs sit in the nanomolar range or below.

Do I need to run molecular dynamics before scoring?

Not for PRODIGY, which is designed for a single static structure. A short equilibration can help MM/GBSA, since the method was built to be averaged over frames, but a single-structure MM/GBSA run is still a legitimate quick screen as long as you describe it as such.

Which paper do I cite for the affinity value?

Cite the method, not just the server. For PRODIGY that means Vangone and Bonvin, eLife 2015, for the model, and Xue, Rodrigues, Kastritis, Bonvin and Vangone, Bioinformatics 2016, 32, 3676 to 3678, for the web server. For HawkDock, cite Weng et al., Nucleic Acids Research 2019, and add Zhang et al., Nucleic Acids Research 2025, if you used GeoDock, VD-MM/GBSA or the mutation module.

Is any of this a substitute for an experiment?

No. These are prioritisation tools. They tell you which of your twenty designs deserves the SPR chip or the ITC cell, and that is a genuinely valuable thing for them to do.

Want the guided, hands-on version?

Our live Molecular Modeling & MD Simulations cohort bootcamp takes you from zero to running real docking and MD workflows, with a portfolio project for your grad-school applications.

Join the waitlist (free) →

Think you know Molecular Docking?
Take the free StemSkills assessment and earn a verifiable certificate you can download and add to your LinkedIn profile.
Start the free assessment

Keep going

MODELLER Tutorial: Build a Homology Model Step by Step Install MODELLER, pick a template, write the align2d alignment, run AutoModel and rank your models by DOPE score,… How to Remove Water Molecules From a PDB File for Docking Strip HOH waters and crystallisation additives from a PDB file with PyMOL, ChimeraX or pdb-tools, and learn which… How to Dock a Ligand to a GPCR or Membrane Protein with AutoDock Vina (Step by Step) Dock a ligand into a GPCR with AutoDock Vina: pick the right activation state, strip BRIL and T4…
See live workshops