Inconsistent averages usign g_analyze_d --v3.3.1
this is in relation to the http://www.gromacs.org/pipermail/gmx-users/2007-June/028214.html gmx-users thread. David van der Spoel recommended the creation of a bugzilla entry.
g_analyze_d as compiled here sometimes gives erroneous averages as examplified by considering block averages.
Using the attached .xvg file (dg/dl during a 4ns run with dt=0.002ps), and using options -b and -e for g_analyze_d gives the following
from 0 to 1000ps ->g_analyze_d average is 1.634425e+03
from 1000 to 2000ps -> g_analyze_d average is 1.634059e+03
from 0 to 2000ps -> g_analyze_d average is 1.637816e+03 ---> a difference
of ~ 3kJ/mol compared with the 1ns blocks
from 2000 to 4000 ps > g_analyze_d average is 1.637791e+03
from 0 to 4000ps -> g_analyze_d average is 1.620341e+03 --> a difference of
~ 17kJ/mol compared with the 2ns blocks
The expected average for the full data set is ~ 1634 kJ/mol, not ~ 1620 kJ/mol.
Let me know if other details are needed.
#3 Updated by Anonymous over 13 years ago
Just to clarify a little bit...
The dg/dl data file being relatively large and possibly difficult to download, i created this little perl script to generate ~ 2million repeats of the 1634.00 value in the format of a typical .xvg file to mimic a 4ns,dt=0.002 data file. Clearly, the average value should be 1634.00 but g_analyze_d wrongly gives
Read 1 sets of 2000001 points, dt = 0.002
std. dev. relative deviation of
standard --------- cumulants from those of
set average deviation sqrt(n-1) a Gaussian distribition
cum. 3 cum. 4
SS1 1.613756e+03 2.008756e+01 1.420405e-02 0.635 -0.660
(In reply to comment #2)
Created an attachment (id=215) [details]
perl script to generate data file for bug 155
to use the script:
-make script executable (modify first line of script, if need be)
-redirect output to data file. Resulting data file can be used with g_analyze_d
to reproduce bug.
#4 Updated by Berk Hess over 13 years ago
Does the single precision g_analyze have the same problem?
I tried the perl script output in the single precision version
and that gives exactly the correct output.
I have tried g_analyze_d of the 3.3 branch with a few fixes
(but none that I recall have any effect on this)
and that also works fine.
#5 Updated by Berk Hess over 13 years ago
I have now compiled a proper 3.3.1 distibution double precision g_analyze.
It gives the correct results, both for your dgdl file as well as
the perl script output.
So I can not reproduce you problem.
I am running on an AMD64 under linux, with gcc version 3.3.5.
What are you running?