Gromacs  2020.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
List of all members | Public Member Functions
gmx::AnalysisDataAverageModule Class Reference

#include <gromacs/analysisdata/modules/average.h>

+ Inheritance diagram for gmx::AnalysisDataAverageModule:
+ Collaboration diagram for gmx::AnalysisDataAverageModule:

Description

Data module for independently averaging each column in input data.

Computes the average and standard deviation independently for each column in the input data. Multipoint data, multiple data sets, and missing data points are all supported. The average is always calculated over all frames and data points for a column.

Output data contains a column for each data set in the input data, and a frame for each column in the input data. If different data sets have different number of columns, the frame count accomodates the largest data set. Other columns are padded with zero values that are additionally marked as missing. Each value in the output data is the average of the corresponding input column in the corresponding input data set. The error value for each value provides the standard deviation of the corresponding input column. average(), standardDeviation(), and sampleCount() methods are also provided for convenient access to these properties.

The output data becomes available only after the input data has been finished.

Examples:
template.cpp.

Public Member Functions

void setAverageDataSets (bool bDataSets)
 Sets the averaging to happen over entire data sets. More...
 
int flags () const override
 Returns properties supported by the module. More...
 
void dataStarted (AbstractAnalysisData *data) override
 Called (once) when the data has been set up properly. More...
 
void frameStarted (const AnalysisDataFrameHeader &header) override
 Called at the start of each data frame. More...
 
void pointsAdded (const AnalysisDataPointSetRef &points) override
 Called one or more times during each data frame. More...
 
void frameFinished (const AnalysisDataFrameHeader &header) override
 Called when a data frame is finished. More...
 
void dataFinished () override
 Called (once) when no more data is available. More...
 
real average (int dataSet, int column) const
 Convenience access to the average of a data column. More...
 
real standardDeviation (int dataSet, int column) const
 Convenience access to the standard deviation of a data column. More...
 
int sampleCount (int dataSet, int column) const
 Access the number of samples for a data column. More...
 
- Public Member Functions inherited from gmx::AbstractAnalysisArrayData
int frameCount () const override
 Returns the total number of frames in the data. More...
 
int rowCount () const
 Returns the number of rows in the data array. More...
 
bool isAllocated () const
 Returns true if values have been allocated.
 
real xstart () const
 Returns the x value of the first frame.
 
real xstep () const
 Returns the step between frame x values.
 
real xvalue (int row) const
 Returns the x value of a row.
 
const AnalysisDataValuevalue (int row, int col) const
 Returns a given array element.
 
- Public Member Functions inherited from gmx::AbstractAnalysisData
bool isMultipoint () const
 Whether the data can have multiple points in the same column in the same frame. More...
 
int dataSetCount () const
 Returns the number of data sets in the data object. More...
 
int columnCount (int dataSet) const
 Returns the number of columns in a data set. More...
 
int columnCount () const
 Returns the number of columns in the data. More...
 
AnalysisDataFrameRef tryGetDataFrame (int index) const
 Access stored data. More...
 
AnalysisDataFrameRef getDataFrame (int index) const
 Access stored data. More...
 
bool requestStorage (int nframes)
 Request storage of frames. More...
 
void addModule (const AnalysisDataModulePointer &module)
 Adds a module to process the data. More...
 
void addColumnModule (int col, int span, const AnalysisDataModulePointer &module)
 Adds a module that processes only a subset of the columns. More...
 
void applyModule (IAnalysisDataModule *module)
 Applies a module to process data that is ready. More...
 

Additional Inherited Members

- Public Types inherited from gmx::IAnalysisDataModule
enum  Flag {
  efAllowMultipoint = 1 << 0, efOnlyMultipoint = 1 << 1, efAllowMulticolumn = 1 << 2, efAllowMissing = 1 << 3,
  efAllowMultipleDataSets = 1 << 4
}
 Possible flags for flags(). More...
 
- Protected Member Functions inherited from gmx::AbstractAnalysisArrayData
 AbstractAnalysisArrayData ()
 Initializes an empty array data object. More...
 
void setColumnCount (int ncols)
 Sets the number of columns in the data array. More...
 
void setRowCount (int rowCount)
 Sets the number of rows in the data array. More...
 
void allocateValues ()
 Allocates memory for the values. More...
 
void setXAxis (real start, real step)
 Sets the values reported as x values for frames. More...
 
void setXAxisValue (int row, real value)
 Sets a single value reported as x value for frames. More...
 
AnalysisDataValuevalue (int row, int col)
 Returns a reference to a given array element.
 
void valuesReady ()
 Notifies modules of the data. More...
 
- Protected Member Functions inherited from gmx::AbstractAnalysisData
 AbstractAnalysisData ()
 Initializes a new analysis data object. More...
 
void setDataSetCount (int dataSetCount)
 Sets the number of data sets. More...
 
void setColumnCount (int dataSet, int columnCount)
 Sets the number of columns for a data set. More...
 
void setMultipoint (bool bMultipoint)
 Sets whether the data has multiple points per column in a frame. More...
 
AnalysisDataModuleManagermoduleManager ()
 Returns the module manager to use for calling notification methods.
 
const AnalysisDataModuleManagermoduleManager () const
 Returns the module manager to use for calling notification methods.
 
- Static Protected Member Functions inherited from gmx::AbstractAnalysisArrayData
static void copyContents (const AbstractAnalysisArrayData *src, AbstractAnalysisArrayData *dest)
 Copies the contents into a new object. More...
 

Member Function Documentation

real gmx::AnalysisDataAverageModule::average ( int  dataSet,
int  column 
) const

Convenience access to the average of a data column.

Note that the interpretation of the parameters follows their naming: with setAverageDataSets(false), dataSet corresponds to a column in the output, but with setAverageDataSets(false) it corresponds to an output row. In both cases, it selects the data set; with setAverageDataSets(false), column should always be zero as there is only one value per data set.

void gmx::AnalysisDataAverageModule::dataFinished ( )
overridevirtual

Called (once) when no more data is available.

Exceptions
unspecifiedCan throw any exception required by the implementing class to report errors.

Implements gmx::AnalysisDataModuleSerial.

void gmx::AnalysisDataAverageModule::dataStarted ( AbstractAnalysisData data)
overridevirtual

Called (once) when the data has been set up properly.

Parameters
[in]dataData object to which the module is added.
Exceptions
APIErrorif the provided data is not compatible.
unspecifiedCan throw any exception required by the implementing class to report errors.

When the data is ready, either this method or parallelDataStarted() is called, depending on the nature of the input data. If this method is called, the input data will always present the frames in sequential order.

The data to which the module is attached is passed as an argument to provide access to properties of the data for initialization and/or validation. The module can also call AbstractAnalysisData::requestStorage() if needed.

This is the only place where the module gets access to the data; if properties of the data are required later, the module should store them internally. It is guaranteed that the data properties (column count, whether it's multipoint) do not change once this method has been called.

Notice that data will be a proxy object if the module is added as a column module, not the data object for which AbstractAnalysisData::addColumnModule() was called.

Implements gmx::AnalysisDataModuleSerial.

int gmx::AnalysisDataAverageModule::flags ( ) const
overridevirtual

Returns properties supported by the module.

The return value of this method should not change after the module has been added to a data (this responsibility can, and in most cases must, be delegated to the user of the module).

The purpose of this method is to remove the need for common checks for data compatibility in the classes that implement the interface. Instead, AbstractAnalysisData performs these checks based on the flags provided.

Does not throw.

Implements gmx::AnalysisDataModuleSerial.

void gmx::AnalysisDataAverageModule::frameFinished ( const AnalysisDataFrameHeader header)
overridevirtual

Called when a data frame is finished.

Parameters
[in]headerHeader information for the frame that is ending.
Exceptions
unspecifiedCan throw any exception required by the implementing class to report errors.

Implements gmx::AnalysisDataModuleSerial.

void gmx::AnalysisDataAverageModule::frameStarted ( const AnalysisDataFrameHeader frame)
overridevirtual

Called at the start of each data frame.

Parameters
[in]frameHeader information for the frame that is starting.
Exceptions
unspecifiedCan throw any exception required by the implementing class to report errors.

Implements gmx::AnalysisDataModuleSerial.

void gmx::AnalysisDataAverageModule::pointsAdded ( const AnalysisDataPointSetRef points)
overridevirtual

Called one or more times during each data frame.

Parameters
[in]pointsSet of points added (also provides access to frame-level data).
Exceptions
APIErrorif the provided data is not compatible.
unspecifiedCan throw any exception required by the implementing class to report errors.

Can be called once or multiple times for a frame. For all data objects currently implemented in the library (and all objects that will use AnalysisDataStorage for internal implementation), it is called exactly once for each frame if the data is not multipoint, but currently this restriction is not enforced.

Implements gmx::AnalysisDataModuleSerial.

int gmx::AnalysisDataAverageModule::sampleCount ( int  dataSet,
int  column 
) const

Access the number of samples for a data column.

See average() for the interpretation of the parameters.

void gmx::AnalysisDataAverageModule::setAverageDataSets ( bool  bDataSets)

Sets the averaging to happen over entire data sets.

If bDataSets is false (the default), the module averages each column separately. The output will have a column for each data set, and a row for each column.

If bDataSets is true, the module averages all values within a single data set into a single average/standard deviation. The output will have only one column, with one row for each data set.

real gmx::AnalysisDataAverageModule::standardDeviation ( int  dataSet,
int  column 
) const

Convenience access to the standard deviation of a data column.

See average() for the interpretation of the parameters.


The documentation for this class was generated from the following files: