Gromacs
2025.0-dev-20241009-5c23d5f
|
#include <gromacs/analysisdata/modules/lifetime.h>
Data module for computing lifetime histograms for columns in input data.
The input data set is treated as a boolean array: each value that is present (AnalysisDataValue::isPresent() returns true) and is >0 is treated as present, other values are treated as absent. For each input data set, analyzes the columns to identify the intervals where a column is continuously present. Produces a histogram from the lengths of these intervals. Input data should have frames with evenly spaced x values.
Output data contains one column for each data set in the input data. This column gives the lifetime histogram for the corresponding data set. x axis in the output is spaced the same as in the input data, and extends as long as required to cover all the histograms. Histograms are padded with zeros as required to be of the same length. setCumulative() can be used to alter the handling of subintervals in the output histogram.
The output data becomes available only after the input data has been finished.
Classes | |
class | Impl |
Private implementation class for AnalysisDataLifetimeModule. More... | |
Public Member Functions | |
void | setCumulative (bool bCumulative) |
Sets a cumulative histogram mode. 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... | |
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 AnalysisDataValue & | value (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... | |
AnalysisDataValue & | value (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... | |
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 inherited from gmx::AbstractAnalysisArrayData | |
static void | copyContents (const AbstractAnalysisArrayData *src, AbstractAnalysisArrayData *dest) |
Copies the contents into a new object. More... | |
|
overridevirtual |
Called (once) when no more data is available.
unspecified | Can throw any exception required by the implementing class to report errors. |
Implements gmx::AnalysisDataModuleSerial.
|
overridevirtual |
Called (once) when the data has been set up properly.
[in] | data | Data object to which the module is added. |
APIError | if the provided data is not compatible. |
unspecified | Can 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.
|
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.
|
overridevirtual |
Called when a data frame is finished.
[in] | header | Header information for the frame that is ending. |
unspecified | Can throw any exception required by the implementing class to report errors. |
Implements gmx::AnalysisDataModuleSerial.
|
overridevirtual |
Called at the start of each data frame.
[in] | frame | Header information for the frame that is starting. |
unspecified | Can throw any exception required by the implementing class to report errors. |
Implements gmx::AnalysisDataModuleSerial.
|
overridevirtual |
Called one or more times during each data frame.
[in] | points | Set of points added (also provides access to frame-level data). |
APIError | if the provided data is not compatible. |
unspecified | Can 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.
void gmx::AnalysisDataLifetimeModule::setCumulative | ( | bool | bCumulative | ) |
Sets a cumulative histogram mode.
[in] | bCumulative | If true, all subintervals of a long interval are also explicitly added into the histogram. |
Does not throw.