From: Storr, Mark (Mark.Storr_at_nrc.ca)
Date: Wed May 29 2002 - 10:43:53 CDT

Hi,

I would like to calculate the mean square displacement for a selection
throughout a simulation and hence derive the diffusion coefficient for the
molecule, as I would like to compare say the diffusion coefficient of water
molecules close to and far from a protein.
I have looked at the tutorial by Ioan Kosztin in which the equations are
given for mean square displacement and root mean square deviation, it apears
that the mean square displacement is the square of the root mean square
deviation, so far so good. However when I look in the VMD manual we have the
root mean square deviation as having a weighting factor included, and also
the fact that one must align structures to calculate the root mean square
deviation. This is where some confusion now arises, as the weighted/aligned
root mean square deviation now appears different from the original root mean
square displacement. Now if I go to the tcl section on VMD we have the
measure command which returns for rmsd the root mean square deviation
between two molecules, this time no mention of aligning the molecule, but
there is the possibility of weighting the rmsd with the mass of the
selection if required.
Therefore it appears that there are a number of 'root mean square
displacement/deviation' definitions that appear somewhat similar and
interchangeable. Has anyone else come across this and managed to sort out
rmsd, RMSD etc.
I guess that what I am aiming at is if I want to calculate the mean square
displacement, what should I use and how should I calculate it. Should I use
the rmsd measure commmand and compare r(0) with r(t), should I use the rmsd
measure command and compare r(0) with r(t) but weighted according to the
masses or should I use neither.
Any help with this problem would be great as on the face of it MSD is
straightforward, I guess my worries have been increased by calculating the
MSD for a protein molecule in gOpenMol and then using the square of the rmsd
calculated with the following:

proc print_rmsd_through_time {{mol top}} {
        # use frame 0 for the reference
        set reference [atomselect $mol "protein" frame 0]
 
        # the frame being compared
        set compare [atomselect $mol "protein"]

        set num_steps [molinfo $mol get numframes]
        for {set frame 0} {$frame < $num_steps} {incr frame} {

                # get the correct frame
                $compare frame $frame

                # compute the transformation
                set trans_mat [measure fit $compare $reference]
 
                # do the alignment
                $compare move $trans_mat

                # compute the RMSD
                set rmsd [measure rmsd $compare $reference]

                # print the RMSD
                puts "RMSD of $frame is $rmsd"
        }
 }

and finding that they are completely different.
Thanks

Mark

P.S.

I apologise to Justin for bringing this topic up that I spoke with him with
for a while, but I still have not resolved this matter completely.