## g_analyze

Main Table of Contents

VERSION 4.0
Sun 18 Jan 2009

### Description

g_analyze reads an ascii file and analyzes data sets. A line in the input file may start with a time (see option `-time`) and any number of y values may follow. Multiple sets can also be read when they are seperated by & (option `-n`), in this case only one y value is read from each line. All lines starting with # and @ are skipped. All analyses can also be done for the derivative of a set (option `-d`).

All options, except for `-av` and `-power` assume that the points are equidistant in time.

g_analyze always shows the average and standard deviation of each set. For each set it also shows the relative deviation of the third and forth cumulant from those of a Gaussian distribution with the same standard deviation.

Option `-ac` produces the autocorrelation function(s).

Option `-cc` plots the resemblance of set i with a cosine of i/2 periods. The formula is:
2 (int0-T y(t) cos(i pi t) dt)^2 / int0-T y(t) y(t) dt
This is useful for principal components obtained from covariance analysis, since the principal components of random diffusion are pure cosines.

Option `-msd` produces the mean square displacement(s).

Option `-dist` produces distribution plot(s).

Option `-av` produces the average over the sets. Error bars can be added with the option `-errbar`. The errorbars can represent the standard deviation, the error (assuming the points are independent) or the interval containing 90% of the points, by discarding 5% of the points at the top and the bottom.

Option `-ee` produces error estimates using block averaging. A set is divided in a number of blocks and averages are calculated for each block. The error for the total average is calculated from the variance between averages of the m blocks B_i as follows: error^2 = Sum (B_i - <B>)^2 / (m*(m-1)). These errors are plotted as a function of the block size. Also an analytical block average curve is plotted, assuming that the autocorrelation is a sum of two exponentials. The analytical curve for the block average is:
f(t) = sigma sqrt(2/T ( a (tau1 ((exp(-t/tau1) - 1) tau1/t + 1)) +
(1-a) (tau2 ((exp(-t/tau2) - 1) tau2/t + 1)))),
where T is the total time. a, tau1 and tau2 are obtained by fitting f^2(t) to error^2. When the actual block average is very close to the analytical curve, the error is sigma*sqrt(2/T (a tau1 + (1-a) tau2)). The complete derivation is given in B. Hess, J. Chem. Phys. 116:209-217, 2002.

Option `-filter` prints the RMS high-frequency fluctuation of each set and over all sets with respect to a filtered average. The filter is proportional to cos(pi t/len) where t goes from -len/2 to len/2. len is supplied with the option `-filter`. This filter reduces oscillations with period len/2 and len by a factor of 0.79 and 0.33 respectively.

Option `-g` fits the data to the function given with option `-fitfn`.

Option `-power` fits the data to b t^a, which is accomplished by fitting to a t + b on log-log scale. All points after the first zero or negative value are ignored.

Option `-luzar` performs a Luzar & Chandler kinetics analysis on output from `g_hbond`. The input file can be taken directly from `g_hbond -ac`, and then the same result should be produced.

### Files

option | filename | type | description
--- | --- | --- | ---
`-f` | `graph.xvg` | Input | xvgr/xmgr file
`-ac` | `autocorr.xvg` | Output, Opt. | xvgr/xmgr file
`-msd` | `msd.xvg` | Output, Opt. | xvgr/xmgr file
`-cc` | `coscont.xvg` | Output, Opt. | xvgr/xmgr file
`-dist` | `distr.xvg` | Output, Opt. | xvgr/xmgr file
`-av` | `average.xvg` | Output, Opt. | xvgr/xmgr file
`-ee` | `errest.xvg` | Output, Opt. | xvgr/xmgr file
`-g` | `fitlog.log` | Output, Opt. | Log file

### Other options

option | type | default | description
--- | --- | --- | ---
`-[no]h` | bool | `no` | Print help info and quit
`-nice` | int | `0` | Set the nicelevel
`-[no]w` | bool | `no` | View output xvg, xpm, eps and pdb files
`-[no]xvgr` | bool | `yes` | Add specific codes (legends etc.) in the output xvg files for the xmgrace program
`-[no]time` | bool | `yes` | Expect a time in the input
`-b` | real | `-1` | First time to read from set
`-e` | real | `-1` | Last time to read from set
`-n` | int | `1` | Read # sets seperated by &
`-[no]d` | bool | `no` | Use the derivative
`-bw` | real | `0.1` | Binwidth for the distribution
`-errbar` | enum | `none` | Error bars for -av: `none`, `stddev`, `error` or `90`
`-[no]integrate` | bool | `no` | Integrate data function(s) numerically using trapezium rule
`-aver_start` | real | `0` | Start averaging the integral from here
`-[no]xydy` | bool | `no` | Interpret second data set as error in the y values for integrating
`-[no]regression` | bool | `no` | Perform a linear regression analysis on the data
`-[no]luzar` | bool | `no` | Do a Luzar and Chandler analysis on a correlation function and related as produced by g_hbond. When in addition the -xydy flag is given the second and fourth column will be interpreted as errors in c(t) and n(t).
`-temp` | real | `298.15` | Temperature for the Luzar hydrogen bonding kinetics analysis
`-fitstart` | real | `1` | Time (ps) from which to start fitting the correlation functions in order to obtain the forward and backward rate constants for HB breaking and formation
`-smooth` | real | `-1` | If >= 0, the tail of the ACF will be smoothed by fitting it to an exponential function: y = A exp(-x/tau)
`-filter` | real | `0` | Print the high-frequency fluctuation after filtering with a cosine filter of length #
`-[no]power` | bool | `no` | Fit data to: b t^a
`-[no]subav` | bool | `yes` | Subtract the average before autocorrelating
`-[no]oneacf` | bool | `no` | Calculate one ACF over all sets
`-acflen` | int | `-1` | Length of the ACF, default is half the number of frames
`-[no]normalize` | bool | `yes` | Normalize ACF
`-P` | enum | `0` | Order of Legendre polynomial for ACF (0 indicates none): `0`, `1`, `2` or `3`
`-fitfn` | enum | `none` | Fit function: `none`, `exp`, `aexp`, `exp_exp`, `vac`, `exp5`, `exp7` or `exp9`
`-ncskip` | int | `0` | Skip N points in the output file of correlation functions
`-beginfit` | real | `0` | Time where to begin the exponential fit of the correlation function
`-endfit` | real | `-1` | Time where to end the exponential fit of the correlation function, -1 is till the end

http://www.gromacs.org
gromacs@gromacs.org