|
Gromacs
2026.0-dev-20251119-5f0a571d
|
#include <gromacs/analysisdata/arraydata.h>
Inheritance diagram for gmx::AbstractAnalysisArrayData:
Collaboration diagram for gmx::AbstractAnalysisArrayData:Abstract base class for data objects that present in-memory data.
This class implements a subclass of AbstractAnalysisData that presents an in-memory array through the AbstractAnalysisData interface. Subclasses should initialize the in-memory array through the provided protected member functions. This class provides public accessor methods for read access to the data.
Public accessor methods in this class do not throw, but assert if data is accessed before it is available.
The x axis defaults to one with uniform spacing between values, which caters to a typical case of e.g. a time series equally spaced in time across a series of trajectory frames. However, non-uniform cases are supported via setXAxisValue(), which can be useful when handling other kinds of data.
Public Member Functions | |
| size_t | frameCount () const override |
| Returns the total number of frames in the data. More... | |
| size_t | rowCount () const |
| Returns the number of rows in the data array. More... | |
| bool | isAllocated () const |
| Returns true if values have been allocated. | |
| real | xstep () const |
| Returns the step between frame x values when the x axis is uniform. | |
| real | xvalue (size_t row) const |
| Returns the x value of a row. | |
| const AnalysisDataValue & | value (size_t row, size_t 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... | |
| size_t | dataSetCount () const |
| Returns the number of data sets in the data object. More... | |
| size_t | columnCount (size_t dataSet) const |
| Returns the number of columns in a data set. More... | |
| size_t | columnCount () const |
| Returns the number of columns in the data. More... | |
| AnalysisDataFrameRef | tryGetDataFrame (size_t index) const |
| Access stored data. More... | |
| AnalysisDataFrameRef | getDataFrame (size_t 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 (size_t col, size_t 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... | |
Protected Member Functions | |
| AbstractAnalysisArrayData () | |
| Initializes an empty array data object. More... | |
| void | setColumnCount (size_t ncols) |
| Sets the number of columns in the data array. More... | |
| void | setRowCount (size_t 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 (size_t row, real value) |
| Sets a single value reported as x value for frames. More... | |
| AnalysisDataValue & | value (size_t row, size_t 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 (size_t dataSetCount) |
| Sets the number of data sets. More... | |
| void | setColumnCount (size_t dataSet, size_t 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... | |
| AnalysisDataModuleManager & | moduleManager () |
| Returns the module manager to use for calling notification methods. | |
| const AnalysisDataModuleManager & | moduleManager () const |
| Returns the module manager to use for calling notification methods. | |
Static Protected Member Functions | |
| static void | copyContents (const AbstractAnalysisArrayData *src, AbstractAnalysisArrayData *dest) |
| Copies the contents into a new object. More... | |
|
protected |
Initializes an empty array data object.
| std::bad_alloc | if out of memory. |
|
protected |
Allocates memory for the values.
| std::bad_alloc | if memory allocation fails. |
setColumnCount() and setRowCount() must have been called.
Strong exception safety guarantee.
|
staticprotected |
Copies the contents into a new object.
| [in] | src | Object to copy data from. |
| [in,out] | dest | Empty array data object to copy data to. |
| std::bad_alloc | if memory allocation for dest fails. |
dest should not have previous contents.
|
inlineoverridevirtual |
Returns the total number of frames in the data.
This function returns the number of frames that the object has produced. If requestStorage() has been successfully called, tryGetDataframe() or getDataFrame() can be used to access some or all of these frames.
Does not throw.
Derived classes should implement this to return the number of frames. The frame count should not be incremented before tryGetDataFrameInternal() can return the new frame. The frame count must be incremented before AnalysisDataModuleManager::notifyFrameFinish() is called.
Implements gmx::AbstractAnalysisData.
|
inline |
Returns the number of rows in the data array.
This function is identical to frameCount(), except that frameCount() returns 0 before valuesReady() has been called.
|
protected |
Sets the number of columns in the data array.
| [in] | ncols | Number of columns in the data. |
Cannot be called after allocateValues().
See AbstractAnalysisData::setColumnCount() for exception behavior.
|
protected |
Sets the number of rows in the data array.
| [in] | rowCount | Number of rows in the data. |
Cannot be called after allocateValues().
Cannot be called after setXAxisValues() made a non-uniform X axis unless ncols equals the largest such X-axis value previously set.
Does not throw.
Sets the values reported as x values for frames.
Afterwards, the X axis is uniform.
| [in] | start | x value for the first frame. |
| [in] | step | Step between x values of successive frames. |
Must not be called after valuesReady(). Any values set with setXAxisValue() are overwritten.
Does not throw.
|
protected |
Sets a single value reported as x value for frames.
Afterwards, the X axis is non-uniform. Can be used to adjust the values of an X axis created with setXAxis().
The row count is never changed, and might need to be managed explicitly with setRowCount() if needed.
| [in] | row | Row/frame for which to set the value. |
| [in] | value | x value for the frame specified by row. |
When the row count is already set, row must be in range.
Must not be called after valuesReady().
Does not throw.
|
protected |
Notifies modules of the data.
| unspecified | Any exception thrown by attached data modules in data notification methods. |
This function should be called once the values in the array have been initialized. The values should not be changed after this function has been called.
1.8.5