Produces a plot of atomic fluctuations obtained from ensemble normal mode analysis or molecular dynamics simulations.

# S3 method for fluct
        col = NULL, label = rownames(x), signif = FALSE,
        p.cutoff = 0.005, q.cutoff = 0.04,
        s.cutoff = 5, n.cutoff = 2, mean = FALSE, polygon = FALSE,
        spread = FALSE, offset = 1,
        ncore = NULL, ...)



a numeric vector or matrix containing atomic fluctuation data obtained from e.g. nma.pdbs or rmsf.


a character vector of plotting colors. Used also to group fluctuation profiles. NA values in col will omit the corresponding fluctuation profile in the plot.


a character vector of plotting labels with length matching nrow(x). If mean=TRUE, the length of label can be equal to the number of categories indicated by col.


logical, if TRUE significance of fluctuation difference is calculated and annotated for each atomic position.


Cutoff of p-value to define significance.


Cutoff of the mean fluctuation difference to define significance.


Cutoff of sample size in each group to calculate the significance.


Cutoff of consecutive residue positions with significant fluctuation difference. If the actual number is less than the cutoff, correponding postions will not be annotated.


logical, if TRUE plot mean fluctuations of each group. Significance is still calculated with the original data.


logical, if TRUE a nicer plot with area under the line for the first row of x are filled with polygons.


number of CPU cores used to do the calculation. By default (ncore=NULL), use all available CPU cores. The argument is only used when signif=TRUE.


logical, if TRUE the fluctuation profiles are spread - i.e. not on top of each other.


numerical offset value in use when ‘spread=TRUE’.


extra plotting arguments passed to plot.bio3d.


The significance calculation is performed when signif=TRUE and there are at least two groups with sample size larger than or equal to s.cutoff. A "two-sided" student's t-test is performed for each atomic position (each column of x). If x contains gaps, indicated by NAs, only non-gapped positions are considered. The position is considered significant if both p-value <= p.cutoff and the mean value difference of the two groups, q, satisfies q >= q.cutoff. If more than two groups are available, every pair of groups are subjected to the t-test calculation and the minimal p-value along with the q-value for the corresponding pair are used for the significance evaluation.


If significance is calculated, return a vector indicating significant positions.


Grant, B.J. et al. (2006) Bioinformatics 22, 2695--2696.


Xin-Qiu Yao, Lars Skjaerven, Barry Grant

See also


if (FALSE) { ## load transducin example data attach(transducin) ## subset of pdbs to analyze inds = c(1:5, 16:20) pdbs <- trim(pdbs, row.inds=inds) gaps.res = gap.inspect(pdbs$ali) ## reference RESNO and SSE for axis annotations resno <- pdbs$resno[1, gaps.res$f.inds] sse <- pdbs$sse[1, gaps.res$f.inds] ## eNMA calculation and obtain modes of motion including atomic fluctuations modes <- nma(pdbs, ncore=NULL) x = modes$fluctuation ## simple line plot with SSE annotation plot.fluct(x, sse=sse, resno=resno) ## group data by specifying colors of each fluctuation line; same color indicates ## same group. Also do significance calculation and annotation col = c(rep('red', 5), rep('blue', 5)) plot.fluct(x, col=col, signif=TRUE, sse=sse, resno=resno) ## spread lines plot.fluct(x, col=col, signif=TRUE, sse=sse, resno=resno, typ='l', spread=TRUE) ## show only line of mean values for each group. ## Nicer plot with area shaded for the first group. plot.fluct(x, col=col, signif=TRUE, sse=sse, resno=resno, mean=TRUE, polygon=TRUE, label=c('GTP', 'GDI')) detach(transducin) }