Blog
How to Predict the Effect of a Mutation on Protein Stability (DynaMut2, mCSM and DDMut): A Step-by-Step Guide
- August 12, 2026
- Posted by: Stemskills Lab
- Category: Molecular Modeling

To predict the effect of a mutation on protein stability, upload a structure to a free web server (DynaMut2, mCSM-Stability or DDMut), give the chain and mutation, and read back a predicted change in folding free energy (ddG) in kcal/mol. The prediction takes minutes. The sign convention is not universal, so read the server’s own stabilising or destabilising label.
This blog already teaches you how to build a mutant structure in PyMOL and how to simulate it in GROMACS. The calculation that sits between those two steps is the one most mutation projects are actually graded on: does this substitution destabilise the fold, and by how much. That is a ddG prediction, and this guide covers it end to end.
What does a ddG prediction actually tell you?
A stability predictor estimates the change in the Gibbs free energy of folding caused by swapping one amino acid for another in one structure. The result is a single number in kcal/mol, plus a word label. It is a prediction from a machine learning model trained on experimental thermodynamic measurements, not a measurement of your protein.
Two things follow from that, and both matter for how you write your thesis. First, the number carries real uncertainty, which we quantify later in this article. Second, it answers one narrow question. It tells you whether the folded state is predicted to become less stable relative to the unfolded state. It does not tell you whether the protein still works.
Is stability the right question, or do you actually mean binding?
This is the most common misuse of these servers. Students take a resistance mutation sitting in a drug binding pocket, run it through a stability predictor, get a small ddG, and conclude the mutation is harmless. That conclusion does not follow, because a stability tool was never asked about the drug.
- Fold stability is what DynaMut2, mCSM-Stability and DDMut predict. Use them when your question is about the protein falling apart, misfolding or losing thermal stability.
- Binding affinity is a different calculation. If your mutation sits at a protein-ligand interface, the relevant follow-up is a binding free energy estimate such as MM-PBSA from an MD trajectory. If it sits at a protein-protein interface, you need an interface-specific predictor instead.
- Pathogenicity is a third question entirely. A destabilising prediction is one piece of evidence a variant may be damaging, not a verdict. Do not let a ddG number stand in for a pathogenicity call in your write-up.
Decide which of the three you are asking before you open a browser tab. Most project defences that go badly go badly here, not at the tool.
What do you need before you run a prediction?
Four things, and three of them silently break runs.
1. A structure, and an honest note about where it came from
An experimental structure is the safe input. Download it from the RCSB PDB and use the four letter accession code, or upload the file. If no experimental structure covers your residue, a predicted model from AlphaFold or SWISS-MODEL will run through these servers without complaint. It will also degrade the prediction, because the local packing that graph-based signature methods read is now itself modelled. If you are using a predicted structure, say so in your methods and read our comparison of predicted versus experimental structures first. Either way, validate the structure before you trust anything computed from it.
2. The correct chain
Multi-chain files are the default in the PDB, not the exception. Every one of these servers asks for a chain identifier separately from the mutation. Chain A of a homodimer and chain B contain the same residue number, and picking the wrong one gives you a valid looking result for a position you did not mean.
3. Residue numbering that matches your structure
This is the number one silent error in stability prediction, and it is worth slowing down for. Mutation labels in the literature and in variant databases are usually written against the UniProt sequence, which is numbered from the first residue of the full-length protein including the signal peptide. PDB files are numbered by whatever the depositors used, which often starts partway into the mature protein and often skips disordered stretches. A variant reported as R282W in UniProt coordinates may be residue 259 in your PDB file, or may not be present at all.
Check it directly before you submit. In PyMOL, load the structure and ask what is actually at that position:
fetch 2ocj
iterate chain A and resi 282 and name CA, print(resn, resi)
If nothing prints, that residue number does not exist in that chain. If the three letter code that prints is not the wild-type residue in your mutation string, your numbering is offset and every downstream number is meaningless. The servers will reject an outright mismatch, but they cannot catch the case where a different residue happens to sit at that number and happens to match your wild-type letter.
4. The wild-type residue actually present in the structure
Crystal structures frequently contain engineered mutations, selenomethionine substitutions or missing loops. If the residue is absent from the coordinates because of disorder, no structure-based predictor can evaluate it. That is not a bug to work around, it is a real limit on what you can claim.
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.
Which server should you use: DynaMut2, mCSM-Stability or DDMut?
All three come from the same group (the Biosig lab, hosted at the University of Queensland), all three are free, and none of them requires an account for a basic run. They differ in method, in how they handle multiple mutations, and in how explicitly they tell you what the sign of the number means.
| Axis | DynaMut2 | mCSM-Stability | DDMut |
|---|---|---|---|
| Method | Normal mode analysis combined with graph-based structural signatures | Graph-based structural signatures | Deep learning: a siamese network over graph-based representations, with convolutional layers and transformer encoders |
| Primary paper | Rodrigues, Pires & Ascher, Protein Science, 2021 | Pires, Ascher & Blundell, Bioinformatics, 2014 | Zhou, Pan, Pires, Rodrigues & Ascher, Nucleic Acids Research, 2023 |
| Structure input | PDB file upload or four letter PDB accession code | Wild-type structure in PDB format (upload), with an example entry linked from the page | PDB file upload or PDB accession code |
| Single mutation format | Chain identifier plus wild-type code, residue position, mutant code in one letter code | Mutation such as R282W, with the chain given in a separate field | Chain identifier plus wild-type code, residue position, mutant code in one letter code |
| Batch / mutation list | Yes, plain text file, one mutation per line as chain, space, then the mutation string | Yes, a mutation list file upload | Yes, plain text file (.txt preferred), same one-per-line format |
| Multiple mutations in one protein | Separate submission page, entries separated by semicolons | Not on the single stability page | Separate submission page, entries separated by semicolons |
| Account required | No. Email is optional and only used to notify you when the job finishes | No | No. Email is optional |
| Sign convention | Not stated on the help page. The DynaMut2 paper defines ddG below zero as destabilising | Not stated on the submission page. Read the label printed beside the number | Not defined numerically in the help. The results table colours destabilising entries red and stabilising entries blue |
| Best use in an MSc project | Default choice when you also want a flexibility readout alongside stability | Fast baseline, and the long-standing reference method others are benchmarked against | Second opinion, and the better choice when your set is skewed toward stabilising mutations |
The Biosig platform also hosts DUET on the same site, which takes a PDB code or an upload and runs one mutation at a time, with a systematic mode that scans every substitution at a chosen position. That systematic mode is useful when you are designing mutations rather than testing a reported one.
How do you run each prediction, step by step?
DynaMut2
Open the DynaMut2 server and pick Single Mutation or Multiple Mutations, which are separate submission pages. The help page is explicit about the structure input: “A structure must be provided as a file in PDB format or via PDB four letter accession code.” Give the chain, the wild-type residue, the position and the mutant residue in one letter code, then submit. For a batch, upload a plain text file where each line is the chain identifier, a space, and the mutation string. For a combination of mutations in the same protein, use the multiple mutations page and separate entries with semicolons. Adding your email is optional and only triggers a notification when the job is processed.
mCSM-Stability
Open mCSM-Stability, upload the wild-type structure in PDB format, enter the mutation in the R282W style and the chain in its own field, and submit. A mutation list upload is available for batches. The page carries a useful data handling note: “No PDB files will be retained on the system after being uploaded by the user.” That is worth quoting in a methods section if your structure is unpublished.
DDMut
Open DDMut and choose Single Mutation or Multiple Mutations. The input conventions mirror DynaMut2: chain identifier, then wild-type code, residue position and mutant code in one letter code, with a plain text file for batches and semicolon separated entries for combinations. Results come back in a table where destabilising and stabilising entries are colour coded.
Does a positive ddG mean my mutation is good or bad?
This is the question students get wrong most often, and it is not their fault. The sign convention is genuinely not standard across the field, and you can prove it from two papers in the same journal.
The DynaMut2 paper describes its training data as follows: “Of these, 2,080 are destabilizing (ΔΔG < 0.0 kcal/mol) and 568 stabilizing (ΔΔG > 0.0 kcal/mol).” Negative means destabilising. The 2022 S669 benchmark in Briefings in Bioinformatics uses the same direction, defining ddG as the mutant value minus the wild-type value.
Now compare the 2021 review by Marabotti, Scafuri and Facchiano in the same journal. Describing PoPMuSiC output, it states: “A negative sign corresponds to a mutation predicted as stabilizing”, and treats values at or above +0.5 kcal/mol as destabilising. Same field, same journal, opposite sign.
So the rule is simple and you should follow it without exception:
- Never infer the direction from the sign alone.
- Read the word the server prints beside the number, stabilising or destabilising, and record that word in your notes alongside the value.
- When you write it up, state the convention explicitly, for example: “ddG values are reported as predicted by DynaMut2, where negative values indicate destabilisation.”
- If you compare numbers from two tools, confirm each tool’s direction separately before you put them in the same column of a table.
A student who copies a number from one server into a sentence written for another server’s convention inverts their own conclusion. That is a reversed result in a thesis, from a formatting habit.
How accurate are these predictions, really?
Report the accuracy honestly, because your examiners can look it up. The published figures from the tool authors themselves:
- DynaMut2 reports Pearson’s correlation of up to 0.72 with an RMSE of 1.02 kcal/mol on single point mutations, and 0.64 with an RMSE of 1.80 kcal/mol on multiple point mutations, across 10-fold cross-validation and independent blind tests.
- DDMut reports Pearson’s correlations of up to 0.70 with an RMSE of 1.37 kcal/mol on single point mutations, and 0.70 with an RMSE of 1.84 kcal/mol on double and triple mutants across non-redundant blind test sets.
Independent benchmarks are less flattering, which is the point of independent benchmarks. The S669 study assembled 669 variants from ThermoMutDB that were absent from the most widely used training datasets, then tested 21 different tools on them. The reported Pearson correlations “were in the ranges of 0.21-0.5 and 0-0.45 for the direct and reverse variants, respectively”. The authors also flag a failure mode you will see in your own results: “A common issue with all the tested methods is the compression of the |ΔΔG| predictions toward zero.”
There is a second known bias. The DDMut authors note that community assessments have highlighted “biased predictions towards destabilising mutations”, which follows naturally from training sets like DynaMut2’s, where destabilising examples outnumber stabilising ones by roughly four to one. If your project is about engineering a more stable variant, that bias works directly against you, and DDMut was built specifically to handle both directions symmetrically.
The practical translation: an RMSE near 1 kcal/mol means a predicted ddG of 0.4 kcal/mol is not distinguishable from no effect. Treat small magnitudes as uninformative rather than as evidence of a mild effect.
How should you report a set of mutations in a thesis?
One table, one row per mutation, and no unearned precision. Columns that survive a viva:
- Mutation in a stated numbering system (say which, UniProt or PDB, in the caption).
- Chain and PDB entry used.
- Predicted ddG from each tool, each in its own column, each labelled with its convention.
- The word label the server returned.
- Relative solvent accessibility or a simple buried versus surface call, because buried mutations behave differently from surface ones.
- Agreement across tools, as a plain yes or no.
Quote values to two decimal places at most, and never quote a mean of two tools’ predictions as if it were a better estimate. Averaging two correlated models with different conventions produces a number with no defensible meaning.
What if two servers disagree about the direction?
First, check that the disagreement is real and not a sign convention error. Re-read both labels. This resolves most cases.
If the labels genuinely conflict, report the conflict rather than picking the answer you prefer. Write that tool A predicted destabilisation and tool B predicted a stabilising or neutral effect, and that the prediction is therefore inconclusive for that position. Then use the structural context to explain why: predictions are less reliable for surface residues, for positions in flexible loops, and for proteins with low sequence identity to the training data. A disagreement you explain is a stronger result than an agreement you cherry-picked.
How do you take this forward into MD?
A ddG prediction is a hypothesis, and molecular dynamics is how you examine it. The workflow this blog already covers picks up directly from here:
- Build the mutant structure in PyMOL and save it correctly.
- Prepare both structures for MD, then run pdb2gmx, editconf and NVT and NPT equilibration identically for wild type and mutant.
- Compare RMSD and RMSF. A predicted destabilisation should show up as increased local fluctuation around the mutated site, lost hydrogen bonds, or a less compact fold.
- Superimpose the final structures in PyMOL to show the structural consequence visually.
- Write it up using our guide to the MD methods section, and frame the whole thing with our MD project ideas for an MSc thesis.
For the wider skill sequence this fits into, see our computational biology skills roadmap.
Troubleshooting: real errors and their fixes
| What you see | What is actually wrong | Fix |
|---|---|---|
| The server rejects the mutation because the wild-type residue does not match the structure | UniProt numbering pasted against a PDB-numbered file | Run the PyMOL iterate check above to read the real residue at that position, then rewrite the mutation string in PDB numbering and state the offset in your methods |
| The position is accepted nowhere, in any chain | The residue is missing from the coordinates because it sits in a disordered loop | Use a different PDB entry that resolves the region, or a modelled structure with an explicit caveat. Do not report a ddG for a residue that is not in the file |
| A plausible number comes back, but for the wrong residue | Wrong chain selected in a multi-chain file | Confirm the chain in the PDB entry before submitting, and record chain plus PDB ID in the results table |
| The ddG is near zero for a mutation you know abolishes activity | The mutation affects binding or catalysis, not fold stability | Switch questions. Use an interface or binding calculation such as MM-PBSA, and say in your write-up that stability was not the limiting factor |
| The mutation list file is rejected | Format drift: a missing chain identifier, a comma instead of a space, or a spreadsheet saved as .csv | Save as plain text, one mutation per line, chain identifier then a single space then the mutation string, and download the server’s sample file to compare |
| Every mutation in a designed set comes back destabilising | The known bias toward destabilising predictions, amplified by training sets skewed that way | Cross-check with DDMut, which was built to be anti-symmetric, and report the disagreement rather than the consensus |
| Two servers disagree in direction | Either a sign convention mix-up or genuine model disagreement | Re-read both word labels first. If the conflict is real, report both values and call the position inconclusive |
| Results look confident on an AlphaFold model | Prediction accuracy degrades on modelled coordinates, especially in low-confidence regions | Check the per-residue confidence at your mutation site, prefer an experimental structure where one exists, and state the input type in your methods |
Frequently asked questions
Do I need to install anything to predict protein stability changes?
No. DynaMut2, mCSM-Stability and DDMut all run in a browser and none of them requires an account for a standard submission. You only need a PDB file or a four letter PDB code, the chain, and the mutation.
What is a good ddG threshold for calling a mutation destabilising?
Use whatever threshold the server or a cited paper states, and say where it came from. Do not invent one. Given that independent benchmarks report RMSE values above 1 kcal/mol, a predicted magnitude below about 1 kcal/mol should be described as within the error of the method rather than as a mild effect.
Can I use an AlphaFold model instead of a crystal structure?
Yes, the servers will accept it, but the prediction inherits the model’s errors. Check the confidence score at your mutation site, prefer an experimental structure when one covers the position, and declare the input type in your methods section.
Can these tools tell me if a variant is pathogenic?
No. They predict a thermodynamic quantity. Destabilisation is one line of evidence toward pathogenicity, alongside conservation, population frequency and functional data, and variant interpretation uses dedicated frameworks for that purpose.
How many mutations can I submit at once?
All three servers accept a mutation list as a plain text file with one mutation per line. Combinations of mutations in the same protein are handled on the separate multiple mutations pages of DynaMut2 and DDMut, with entries separated by semicolons.
Which single tool should I use if I only have time for one?
DynaMut2 for a typical single point missense mutation on an experimental structure, because it reports flexibility alongside stability. Add DDMut as a second opinion whenever the result matters to your conclusion, and always report both.
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.
References
- Rodrigues CHM, Pires DEV, Ascher DB. DynaMut2: Assessing changes in stability and flexibility upon single and multiple point missense mutations. Protein Science. 2021;30(1):60-69. doi:10.1002/pro.3942
- Pires DEV, Ascher DB, Blundell TL. mCSM: predicting the effects of mutations in proteins using graph-based signatures. Bioinformatics. 2014;30(3):335-342. doi:10.1093/bioinformatics/btt691
- Zhou Y, Pan Q, Pires DEV, Rodrigues CHM, Ascher DB. DDMut: predicting effects of mutations on protein stability using deep learning. Nucleic Acids Research. 2023;51(W1):W122-W128. doi:10.1093/nar/gkad472
- Pancotti C, Benevenuta S, Birolo G, et al. Predicting protein stability changes upon single-point mutation: a thorough comparison of the available tools on a new dataset. Briefings in Bioinformatics. 2022;23(2):bbab555. doi:10.1093/bib/bbab555
- Marabotti A, Scafuri B, Facchiano A. Predicting the stability of mutant proteins by computational approaches: an overview. Briefings in Bioinformatics. 2021;22(3):bbaa074. doi:10.1093/bib/bbaa074
Written by the StemSkills Lab team, with more than 10 years of combined experience in sequence and structural bioinformatics, drug discovery and design, and multiscale molecular modeling.