[Biopython-dev] RMSD calculation

Eric Talevich eric.talevich at gmail.com
Fri Oct 29 21:39:55 UTC 2010

On Thu, Oct 28, 2010 at 12:49 PM, George Devaniranjan <
devaniranjan at gmail.com> wrote:

> I was wondering why there is two functions for calculating RMSD
> 1)in the SVDSuperimposer()
> 2)in PDB.Superimposer()
> In the code its says RMS-is RMS being calculated instead of RMSD???
> I ask because VMD gives a different value for RMSD to the one from
> Biopython
Hello George,

Here's my understanding of it:

1. RMSD and "RMS distance" both mean root mean square deviation, in terms of
the distances in 3D space between each corresponding pair of atoms. The RMSD
between all atoms in two aligned structures may be different than the RMSD
between backbone atoms only. Or, if the two structures don't have the same
peptide sequence, that raises another set of issues.

2. In Biopython, PDB.Superimposer internally uses SVDSuperimposer. It's a
simplified wrapper.

3. The SVDSuperimposer module allows you to either (i) align two structures
in 3D space and then calculate RMSD, or (ii) just calculate RMSD without
spatially (re-)aligning the structures. PDB.Superimposer just does the
former. If the structures weren't already aligned, these can yield very
different values.

4. There are many ways to perform a structural alignment; SVDSuperimposer
implements a simple one. PyMOL, VMD, ce, DALI, and other programs implement
more advanced methods.

So don't be alarmed that VMD gives you a smaller RMSD than PDB.Superimposer
-- it just means VMD found a better alignment between the two structures.


More information about the Biopython-dev mailing list