## g_analyze

Main Table of Contents

VERSION 3.2.0
Sun 25 Jan 2004

### 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(pi t/i) 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 BA is:
BA(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 BA(t) to the calculated block average. When the actual block average is very close to the analytical curve, the error is sigma*sqrt(2/T (a tau1 + (1-a) tau2)).

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 `-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.

### 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 | `19` | Set the nicelevel
`-[no]w` | bool | `no` | View output xvg, xpm, eps and pdb files
`-[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`
`-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