MM-GBSA Rescoring gives each protein–ligand pose a physics-based binding energy, to re-rank docking hits with a different method from the docking score itself (and from GNINA's neural-network score). It runs OpenMM on a CPU by default, or a T4 GPU.
How it works
For each complex it builds the system (protein force field amber14 by default, or amber99sbildn; the ligand with OpenFF Sage), optionally minimizes it briefly in implicit solvent (GBSA, OBC2 model), and computes
ΔG ≈ E(complex) − E(receptor) − E(ligand)
in kcal/mol: an end-point estimate, with no sampling and no entropy term. More negative means stronger predicted binding. Use it to rank similar ligands against the same target; the absolute values are not binding free energies.
Inputs
Either:
- a prepared receptor PDB (
protein) and docked poses (poseorposes: SDF, PDBQT, or PDB), for example from AutoDock Vina, or - complete complexes (
complexorcomplexes: PDB or mmCIF), for example from Boltz-2.
Options: max_poses (up to 50), minimize (default on) and min_steps (default 100, up to 500; 0 scores the poses as they are).
Outputs
scores.csv: each pose ranked by ΔG, with its energy components.- The poses reordered by score, for the next step.
summary.json: settings and counts.
In a workflow, the score is available both as mm_gbsa_kcal_mol and as binding_affinity_kcal_mol, so filter steps can rank on it like a docking score.
Not covered
Free-energy perturbation, explicit-solvent sampling before scoring (run OpenMM MD for that), and Poisson–Boltzmann (MM-PBSA).