[gmx-users] g_rms on CA atoms only, with and without mass weighting -nomw
Mark Abraham
Mark.Abraham at anu.edu.au
Thu Jul 5 02:34:02 CEST 2012
On 5/07/2012 10:11 AM, Jan Domanski wrote:
> Hi,
>
> I'm using gromacs 4.5.4 and I've got a detailed question on how the mass
> weighting works.
>
> Given a trajectory and a pdb from
> http://code.google.com/p/mdanalysis/source/browse/testsuite/MDAnalysisTests/data/adk_oplsaa.pdb
> http://code.google.com/p/mdanalysis/source/browse/testsuite/MDAnalysisTests/data/adk_oplsaa.trr
>
> I called the following
> structure="adk_oplsaa.pdb"
> trajectory="adk_oplsaa.trr"
> g_rms -s $structure -f $trajectory -o d_rmsd.xvg << EOF
> 3
> 3
> EOF
>
> g_rms -nomw -s $structure -f $trajectory -o d_rmsd_nomw.xvg << EOF
> 3
> 3
> EOF
>
> I was expecting the RMSD values to be identical: all the CA
> atoms have identical weights with the -mw flag on, which (to my mind)
> should be yield same results to when -nomw is specified and the same set
> of atoms is selected. The question: is this an unreasonable expectation?
>
> sdiff d_rmsd.xvg d_rmsd_nomw.xvg | tail # consistent only for 5 sig figs
>
> 0.0000000 0.0000369 | 0.0000000 0.0000368
> 100.0000076 0.9818456 | 100.0000076 0.9818469
> 200.0000153 0.8223789 | 200.0000153 0.8223798
> 300.0000000 0.6450028 | 300.0000000 0.6450034
> 400.0000305 0.8285408 | 400.0000305 0.8285414
> 500.0000305 1.9386379 | 500.0000305 1.9386411
> 600.0000000 1.6888058 | 600.0000000 1.6888076
> 700.0000610 1.6885630 | 700.0000610 1.6885644
> 800.0000610 1.8211102 | 800.0000610 1.8211110
> 900.0000610 2.1306074 | 900.0000610 2.1306095
>
> (BTW, the g_rms -h mentions something about a '-debug flag' but it
> seems not to be working.)
See manual D.1 - the -debug flag takes an argument.
>
> As a check, I've used MDAnalysis 0.7.6-devel
> (http://mdanalysis.googlecode.com) and the following code to get RMSD on
> the same data, which was consistent over 14 sig figs.
>
> from MDAnalysis import *
> from MDAnalysis.analysis.align import *
> conf = "adk_oplsaa.pdb"
> traj = "adk_oplsaa.trr"
> ref = Universe(conf)
> mob = Universe(conf, traj)
> rms_fit_trj(mob, ref, select="name CA", rmsdfile="rmsd.dat",
> mass_weighted=True)
> rms_fit_trj(mob, ref, select="name CA", rmsdfile="rmsd_nomw.dat",
> mass_weighted=False)
>
> sdiff rmsd.dat rmsd_nomw.dat # consistent over 14 sig figs
> 3.686669177327545608e-04 | 3.686671021799712840e-04
> 9.818467126090068220e+00 | 9.818467126090039798e+00
> 8.223796870415890581e+00 8.223796870415890581e+00
> 6.450033517100112412e+00 | 6.450033517100091096e+00
> 8.285414822442923821e+00 | 8.285414822442906058e+00
> 1.938640271585943964e+01 | 1.938640271585941832e+01
> 1.688807649241958941e+01 | 1.688807649241956454e+01
> 1.688564785098214571e+01 | 1.688564785098212795e+01
> 1.821111456215330549e+01 | 1.821111456215327706e+01
> 2.130609827021595137e+01 | 2.130609827021593006e+01
>
> Thanks for helping me figure it out guys,
This is expected. See
http://www.gromacs.org/Documentation/Floating_Point_Arithmetic. Mass
weighting changes the manner in which round-off error accumulates.
Double precision is less affected by this. Your g_rms is single
precision, and apparently MDAnalysis is double.
Mark
More information about the gromacs.org_gmx-users
mailing list