OpenMS
2.5.0
|
Compute the area, background and shape metrics of a peak. More...
#include <OpenMS/ANALYSIS/OPENSWATH/PeakIntegrator.h>
Classes | |
struct | PeakArea |
struct | PeakBackground |
struct | PeakShapeMetrics |
Public Member Functions | |
PeakIntegrator () | |
Constructor. More... | |
virtual | ~PeakIntegrator () |
Destructor. More... | |
PeakArea | integratePeak (const MSChromatogram &chromatogram, const double left, const double right) const |
Compute the area of a peak contained in a MSChromatogram. More... | |
PeakArea | integratePeak (const MSChromatogram &chromatogram, MSChromatogram::ConstIterator &left, MSChromatogram::ConstIterator &right) const |
Compute the area of a peak contained in a MSChromatogram. More... | |
PeakArea | integratePeak (const MSSpectrum &spectrum, const double left, const double right) const |
Compute the area of a peak contained in a MSSpectrum. More... | |
PeakArea | integratePeak (const MSSpectrum &spectrum, MSSpectrum::ConstIterator &left, MSSpectrum::ConstIterator &right) const |
Compute the area of a peak contained in a MSSpectrum. More... | |
PeakBackground | estimateBackground (const MSChromatogram &chromatogram, const double left, const double right, const double peak_apex_pos) const |
Estimate the background of a peak contained in a MSChromatogram. More... | |
PeakBackground | estimateBackground (const MSChromatogram &chromatogram, MSChromatogram::ConstIterator &left, MSChromatogram::ConstIterator &right, const double peak_apex_pos) const |
Estimate the background of a peak contained in a MSChromatogram. More... | |
PeakBackground | estimateBackground (const MSSpectrum &spectrum, const double left, const double right, const double peak_apex_pos) const |
Estimate the background of a peak contained in a MSSpectrum. More... | |
PeakBackground | estimateBackground (const MSSpectrum &spectrum, MSSpectrum::ConstIterator &left, MSSpectrum::ConstIterator &right, const double peak_apex_pos) const |
Estimate the background of a peak contained in a MSSpectrum. More... | |
PeakShapeMetrics | calculatePeakShapeMetrics (const MSChromatogram &chromatogram, const double left, const double right, const double peak_height, const double peak_apex_pos) const |
Calculate peak's shape metrics. More... | |
PeakShapeMetrics | calculatePeakShapeMetrics (const MSChromatogram &chromatogram, MSChromatogram::ConstIterator &left, MSChromatogram::ConstIterator &right, const double peak_height, const double peak_apex_pos) const |
Calculate peak's shape metrics. More... | |
PeakShapeMetrics | calculatePeakShapeMetrics (const MSSpectrum &spectrum, const double left, const double right, const double peak_height, const double peak_apex_pos) const |
Calculate peak's shape metrics. More... | |
PeakShapeMetrics | calculatePeakShapeMetrics (const MSSpectrum &spectrum, MSSpectrum::ConstIterator &left, MSSpectrum::ConstIterator &right, const double peak_height, const double peak_apex_pos) const |
Calculate peak's shape metrics. More... | |
void | getDefaultParameters (Param ¶ms) |
Public Member Functions inherited from DefaultParamHandler | |
DefaultParamHandler (const String &name) | |
Constructor with name that is displayed in error messages. More... | |
DefaultParamHandler (const DefaultParamHandler &rhs) | |
Copy constructor. More... | |
virtual | ~DefaultParamHandler () |
Destructor. More... | |
virtual DefaultParamHandler & | operator= (const DefaultParamHandler &rhs) |
Assignment operator. More... | |
virtual bool | operator== (const DefaultParamHandler &rhs) const |
Equality operator. More... | |
void | setParameters (const Param ¶m) |
Sets the parameters. More... | |
const Param & | getParameters () const |
Non-mutable access to the parameters. More... | |
const Param & | getDefaults () const |
Non-mutable access to the default parameters. More... | |
const String & | getName () const |
Non-mutable access to the name. More... | |
void | setName (const String &name) |
Mutable access to the name. More... | |
const std::vector< String > & | getSubsections () const |
Non-mutable access to the registered subsections. More... | |
Static Public Attributes | |
Constant expressions for parameters | |
Constants expressions used throughout the code and tests to set the integration and baseline types. | |
static constexpr const char * | INTEGRATION_TYPE_INTENSITYSUM = "intensity_sum" |
static constexpr const char * | INTEGRATION_TYPE_TRAPEZOID = "trapezoid" |
Integration type: trapezoid. More... | |
static constexpr const char * | INTEGRATION_TYPE_SIMPSON = "simpson" |
Integration type: simpson. More... | |
static constexpr const char * | BASELINE_TYPE_BASETOBASE = "base_to_base" |
Baseline type: base to base. More... | |
static constexpr const char * | BASELINE_TYPE_VERTICALDIVISION = "vertical_division" |
Baseline type: vertical division (min of end points; only for backwards compatibility) More... | |
static constexpr const char * | BASELINE_TYPE_VERTICALDIVISION_MIN = "vertical_division_min" |
Baseline type: vertical division (min of end points) More... | |
static constexpr const char * | BASELINE_TYPE_VERTICALDIVISION_MAX = "vertical_division_max" |
Baseline type: vertical division (max of end points) More... | |
Protected Member Functions | |
void | updateMembers_ () |
This method is used to update extra member variables at the end of the setParameters() method. More... | |
template<typename PeakContainerT > | |
PeakArea | integratePeak_ (const PeakContainerT &pc, double left, double right) const |
template<typename PeakContainerT > | |
PeakBackground | estimateBackground_ (const PeakContainerT &pc, double left, double right, const double peak_apex_pos) const |
template<typename PeakContainerConstIteratorT > | |
double | simpson_ (PeakContainerConstIteratorT it_begin, PeakContainerConstIteratorT it_end) const |
Simpson's rule algorithm. More... | |
template<typename PeakContainerT > | |
PeakShapeMetrics | calculatePeakShapeMetrics_ (const PeakContainerT &pc, double left, double right, const double peak_height, const double peak_apex_pos) const |
template<typename PeakContainerConstIteratorT > | |
double | findPosAtPeakHeightPercent_ (PeakContainerConstIteratorT it_left, PeakContainerConstIteratorT it_right, PeakContainerConstIteratorT it_end, const double peak_height, const double percent, const bool is_left_half) const |
Find the position (RT/MZ) at a given percentage of peak's height. More... | |
Protected Member Functions inherited from DefaultParamHandler | |
void | defaultsToParam_ () |
Updates the parameters after the defaults have been set in the constructor. More... | |
Private Member Functions | |
template<typename PeakContainerT > | |
const PeakContainerT & | EMGPreProcess_ (const PeakContainerT &pc, PeakContainerT &emg_pc, double &left, double &right) const |
Fit the peak to the EMG model. More... | |
Private Attributes | |
bool | fit_EMG_ |
Enable/disable EMG peak model fitting. More... | |
EmgGradientDescent | emg_ |
Parameters | |
The user is supposed to select a value for these parameters. By default, the integration_type_ is "intensity_sum" and the baseline_type_ is "base_to_base". | |
String | integration_type_ = INTEGRATION_TYPE_INTENSITYSUM |
String | baseline_type_ = BASELINE_TYPE_BASETOBASE |
Additional Inherited Members | |
Protected Attributes inherited from DefaultParamHandler | |
Param | param_ |
Container for current parameters. More... | |
Param | defaults_ |
Container for default parameters. This member should be filled in the constructor of derived classes! More... | |
std::vector< String > | subsections_ |
Container for registered subsections. This member should be filled in the constructor of derived classes! More... | |
String | error_name_ |
Name that is displayed in error messages during the parameter checking. More... | |
bool | check_defaults_ |
If this member is set to false no checking if parameters in done;. More... | |
bool | warn_empty_defaults_ |
If this member is set to false no warning is emitted when defaults are empty;. More... | |
Compute the area, background and shape metrics of a peak.
The area computation is performed in integratePeak() and it supports integration by simple sum of the intensity, integration by Simpson's rule implementations for an odd number of unequally spaced points or integration by the trapezoid rule.
The background computation is performed in estimateBackground() and it supports three different approaches to baseline correction, namely computing a rectangular shape under the peak based on the minimum value of the peak borders (vertical_division_min), a rectangular shape based on the maximum value of the beak borders (vertical_division_max) or a trapezoidal shape based on a straight line between the peak borders (base_to_base).
Peak shape metrics are computed in calculatePeakShapeMetrics() and multiple metrics are supported.
The containers supported by the methods are MSChromatogram and MSSpectrum.
struct OpenMS::PeakIntegrator::PeakArea |
struct OpenMS::PeakIntegrator::PeakBackground |
struct OpenMS::PeakIntegrator::PeakShapeMetrics |
Class Members | ||
---|---|---|
double | asymmetry_factor |
The asymmetry factor is a measure of peak tailing. It is defined as the distance from the center line of the peak to the back slope divided by the distance from the center line of the peak to the front slope, with all measurements made at 10% of the maximum peak height. asymmetry_factor = As = b/a where a is min width to peak maximum at 10% max peak height b is max width to peak maximum at 10% max peak height |
double | baseline_delta_2_height |
The change in baseline divided by the height is a way of comparing the influence of the change of baseline on the peak height. |
double | end_position_at_10 |
The end position at which the intensity is 10% the peak's height. |
double | end_position_at_5 |
The end position at which the intensity is 5% the peak's height. |
double | end_position_at_50 |
The end position at which the intensity is 50% the peak's height. |
Int | points_across_baseline |
The number of points across the baseline. |
Int | points_across_half_height |
The number of points across half the peak's height. |
double | slope_of_baseline |
The slope of the baseline is a measure of slope change. It is approximated as the difference in baselines between the peak start and peak end. |
double | start_position_at_10 |
The start position at which the intensity is 10% the peak's height. |
double | start_position_at_5 |
The start position at which the intensity is 5% the peak's height. |
double | start_position_at_50 |
The start position at which the intensity is 50% the peak's height. |
double | tailing_factor |
The tailing factor is a measure of peak tailing. It is defined as the distance from the front slope of the peak to the back slope divided by twice the distance from the center line of the peak to the front slope, with all measurements made at 5% of the maximum peak height. tailing_factor = Tf = W0.05/2a where W0.05 is peak width at 5% max peak height a = min width to peak maximum at 5% max peak height b = max width to peak maximum at 5% max peak height 0.9 < Tf < 1.2 front Tf < 0.9 tailing Tf > 1.2 |
double | total_width |
The peak's total width. |
double | width_at_10 |
The width of the peak at 10% the peak's height. |
double | width_at_5 |
The width of the peak at 5% the peak's height. |
double | width_at_50 |
The width of the peak at 50% the peak's height. |
PeakIntegrator | ( | ) |
Constructor.
|
virtual |
Destructor.
PeakShapeMetrics calculatePeakShapeMetrics | ( | const MSChromatogram & | chromatogram, |
const double | left, | ||
const double | right, | ||
const double | peak_height, | ||
const double | peak_apex_pos | ||
) | const |
Calculate peak's shape metrics.
The calculated characteristics are the start and end times at 0.05, 0.10 and 0.5 the peak's height. Also the widths at those positions are calculated. Other values: the peak's total width, its tailing factor, asymmetry factor, baseline delta to height and the slope of the baseline. The number of points across the baseline and also at half height are saved.
[in] | chromatogram | The chromatogram which contains the peak |
[in] | left | The left retention time boundary |
[in] | right | The right retention time boundary |
[in] | peak_height | The peak's highest intensity |
[in] | peak_apex_pos | The position of the point with highest intensity |
PeakShapeMetrics calculatePeakShapeMetrics | ( | const MSChromatogram & | chromatogram, |
MSChromatogram::ConstIterator & | left, | ||
MSChromatogram::ConstIterator & | right, | ||
const double | peak_height, | ||
const double | peak_apex_pos | ||
) | const |
Calculate peak's shape metrics.
The calculated characteristics are the start and end times at 0.05, 0.10 and 0.5 the peak's height. Also the widths at those positions are calculated. Other values: the peak's total width, its tailing factor, asymmetry factor, baseline delta to height and the slope of the baseline. The number of points across the baseline and also at half height are saved.
[in] | chromatogram | The chromatogram which contains the peak |
[in] | left | The iterator to the first point |
[in] | right | The iterator to the last point |
[in] | peak_height | The peak's highest intensity |
[in] | peak_apex_pos | The position of the point with highest intensity |
PeakShapeMetrics calculatePeakShapeMetrics | ( | const MSSpectrum & | spectrum, |
const double | left, | ||
const double | right, | ||
const double | peak_height, | ||
const double | peak_apex_pos | ||
) | const |
Calculate peak's shape metrics.
The calculated characteristics are the start and end positions at 0.05, 0.10 and 0.5 the peak's height. Also the widths at those positions are calculated. Other values: the peak's total width, its tailing factor, asymmetry factor, baseline delta to height and the slope of the baseline. The number of points across the baseline and also at half height are saved.
[in] | spectrum | The spectrum which contains the peak |
[in] | left | The left mass-to-charge ratio boundary |
[in] | right | The right mass-to-charge ratio boundary |
[in] | peak_height | The peak's highest intensity |
[in] | peak_apex_pos | The position of the point with highest intensity |
PeakShapeMetrics calculatePeakShapeMetrics | ( | const MSSpectrum & | spectrum, |
MSSpectrum::ConstIterator & | left, | ||
MSSpectrum::ConstIterator & | right, | ||
const double | peak_height, | ||
const double | peak_apex_pos | ||
) | const |
Calculate peak's shape metrics.
The calculated characteristics are the start and end positions at 0.05, 0.10 and 0.5 the peak's height. Also the widths at those positions are calculated. Other values: the peak's total width, its tailing factor, asymmetry factor, baseline delta to height and the slope of the baseline. The number of points across the baseline and also at half height are saved.
[in] | spectrum | The spectrum which contains the peak |
[in] | left | The iterator to the first point |
[in] | right | The iterator to the last point |
[in] | peak_height | The peak's highest intensity |
[in] | peak_apex_pos | The position of the point with highest intensity |
|
inlineprotected |
References PeakIntegrator::PeakShapeMetrics::asymmetry_factor, PeakIntegrator::PeakShapeMetrics::baseline_delta_2_height, PeakIntegrator::PeakShapeMetrics::end_position_at_10, PeakIntegrator::PeakShapeMetrics::end_position_at_5, PeakIntegrator::PeakShapeMetrics::end_position_at_50, PeakIntegrator::PeakShapeMetrics::points_across_baseline, PeakIntegrator::PeakShapeMetrics::points_across_half_height, PeakIntegrator::PeakShapeMetrics::slope_of_baseline, PeakIntegrator::PeakShapeMetrics::start_position_at_10, PeakIntegrator::PeakShapeMetrics::start_position_at_5, PeakIntegrator::PeakShapeMetrics::start_position_at_50, PeakIntegrator::PeakShapeMetrics::tailing_factor, PeakIntegrator::PeakShapeMetrics::total_width, PeakIntegrator::PeakShapeMetrics::width_at_10, PeakIntegrator::PeakShapeMetrics::width_at_5, and PeakIntegrator::PeakShapeMetrics::width_at_50.
|
inlineprivate |
Fit the peak to the EMG model.
The fitting process happens only if `fit_EMG_` is true. `left` and `right` are updated accordingly.
PeakContainerT | Either a MSChromatogram or a MSSpectrum |
[in] | pc | Input peak |
[out] | emg_pc | Will possibly contain the processed peak |
[in] | left | RT or MZ value of the first point of interest |
[in] | right | RT or MZ value of the first point of interest |
References EmgGradientDescent::fitEMGPeakModel().
PeakBackground estimateBackground | ( | const MSChromatogram & | chromatogram, |
const double | left, | ||
const double | right, | ||
const double | peak_apex_pos | ||
) | const |
Estimate the background of a peak contained in a MSChromatogram.
The user can choose to compute one of two background types: "vertical_sum" and "base_to_base". For the former case, the area is computed as a rectangle with delta RT being the base and the minimum intensity on boundaries as the height. For the latter case, the area is computed as a rectangle trapezoid. Similar to the "vertical_sum" solution, this technique also takes into account the area between the intensities on boundaries.
For both cases, the parameter integration_type_ decides which formula to use to compute the area. The user should make sure to use the same integration_type between calls of estimateBackground() and integratePeak().
Exception::InvalidParameter | for class parameter `baseline_type`. |
[in] | chromatogram | The chromatogram which contains the peak |
[in] | left | The left retention time boundary |
[in] | right | The right retention time boundary |
[in] | peak_apex_pos | The position of the point with highest intensity |
PeakBackground estimateBackground | ( | const MSChromatogram & | chromatogram, |
MSChromatogram::ConstIterator & | left, | ||
MSChromatogram::ConstIterator & | right, | ||
const double | peak_apex_pos | ||
) | const |
Estimate the background of a peak contained in a MSChromatogram.
The user can choose to compute one of two background types: "vertical_sum" and "base_to_base". For the former case, the area is computed as a rectangle with delta RT being the base and the minimum intensity on boundaries as the height. For the latter case, the area is computed as a rectangle trapezoid. Similar to the "vertical_sum" solution, this technique also takes into account the area between the intensities on boundaries.
For both cases, the parameter integration_type_ decides which formula to use to compute the area. The user should make sure to use the same integration_type between calls of estimateBackground() and integratePeak().
Exception::InvalidParameter | for class parameter `baseline_type`. |
[in] | chromatogram | The chromatogram which contains the peak |
[in] | left | The iterator to the first point |
[in] | right | The iterator to the last point |
[in] | peak_apex_pos | The position of the point with highest intensity |
PeakBackground estimateBackground | ( | const MSSpectrum & | spectrum, |
const double | left, | ||
const double | right, | ||
const double | peak_apex_pos | ||
) | const |
Estimate the background of a peak contained in a MSSpectrum.
The user can choose to compute one of two background types: "vertical_sum" and "base_to_base". For the former case, the area is computed as a rectangle with delta MZ being the base and the minimum intensity on boundaries as the height. For the latter case, the area is computed as a rectangle trapezoid. Similar to the "vertical_sum" solution, this technique also takes into account the area between the intensities on boundaries.
For both cases, the parameter integration_type_ decides which formula to use to compute the area. The user should make sure to use the same integration_type between calls of estimateBackground() and integratePeak().
Exception::InvalidParameter | for class parameter `baseline_type`. |
[in] | spectrum | The spectrum which contains the peak |
[in] | left | The left mass-to-charge ratio boundary |
[in] | right | The right mass-to-charge ratio boundary |
[in] | peak_apex_pos | The position of the point with highest intensity |
PeakBackground estimateBackground | ( | const MSSpectrum & | spectrum, |
MSSpectrum::ConstIterator & | left, | ||
MSSpectrum::ConstIterator & | right, | ||
const double | peak_apex_pos | ||
) | const |
Estimate the background of a peak contained in a MSSpectrum.
The user can choose to compute one of two background types: "vertical_sum" and "base_to_base". For the former case, the area is computed as a rectangle with delta MZ being the base and the minimum intensity on boundaries as the height. For the latter case, the area is computed as a rectangle trapezoid. Similar to the "vertical_sum" solution, this technique also takes into account the area between the intensities on boundaries.
For both cases, the parameter integration_type_ decides which formula to use to compute the area. The user should make sure to use the same integration_type between calls of estimateBackground() and integratePeak().
Exception::InvalidParameter | for class parameter `baseline_type`. |
[in] | spectrum | The spectrum which contains the peak |
[in] | left | The iterator to the first point |
[in] | right | The iterator to the last point |
[in] | peak_apex_pos | The position of the point with highest intensity |
|
inlineprotected |
|
inlineprotected |
Find the position (RT/MZ) at a given percentage of peak's height.
[in] | it_left | The iterator to the first point (must not be past the end) |
[in] | it_right | The iterator to the last point (might be past the end) |
[in] | it_end | The end-iterator of the container |
[in] | peak_height | The peak's height |
[in] | percent | At which percentage of the peak height we want to find the position (common values: 0.05, 0.1, 0.5) |
[in] | is_left_half | According to which half of the peak, the algorithm proceeds to the correct direction |
void getDefaultParameters | ( | Param & | params | ) |
PeakArea integratePeak | ( | const MSChromatogram & | chromatogram, |
const double | left, | ||
const double | right | ||
) | const |
Compute the area of a peak contained in a MSChromatogram.
The value of integration_type_ decides which integration technique to use:
Exception::InvalidParameter | for class parameter `integration_type`. |
[in] | chromatogram | The chromatogram which contains the peak |
[in] | left | The left retention time boundary |
[in] | right | The right retention time boundary |
PeakArea integratePeak | ( | const MSChromatogram & | chromatogram, |
MSChromatogram::ConstIterator & | left, | ||
MSChromatogram::ConstIterator & | right | ||
) | const |
Compute the area of a peak contained in a MSChromatogram.
The value of integration_type_ decides which integration technique to use:
Exception::InvalidParameter | for class parameter `integration_type`. |
[in] | chromatogram | The chromatogram which contains the peak |
[in] | left | The iterator to the first point |
[in] | right | The iterator to the last point |
PeakArea integratePeak | ( | const MSSpectrum & | spectrum, |
const double | left, | ||
const double | right | ||
) | const |
Compute the area of a peak contained in a MSSpectrum.
The value of integration_type_ decides which integration technique to use:
Exception::InvalidParameter | for class parameter `integration_type`. |
[in] | spectrum | The spectrum which contains the peak |
[in] | left | The left mass-to-charge ratio boundary |
[in] | right | The right mass-to-charge ratio boundary |
PeakArea integratePeak | ( | const MSSpectrum & | spectrum, |
MSSpectrum::ConstIterator & | left, | ||
MSSpectrum::ConstIterator & | right | ||
) | const |
Compute the area of a peak contained in a MSSpectrum.
The value of integration_type_ decides which integration technique to use:
Exception::InvalidParameter | for class parameter `integration_type`. |
[in] | spectrum | The spectrum which contains the peak |
[in] | left | The iterator to the first point |
[in] | right | The iterator to the last point |
|
inlineprotected |
Simpson's rule algorithm.
This implementation expects an odd number of points. The formula used supports unequally spaced points.
[in] | it_begin | The iterator to the first point |
[in] | it_end | The iterator to the past-the-last point |
References OpenMS::Constants::h, and OpenMS::Constants::k.
|
protectedvirtual |
This method is used to update extra member variables at the end of the setParameters() method.
Also call it at the end of the derived classes' copy constructor and assignment operator.
The default implementation is empty.
Reimplemented from DefaultParamHandler.
|
private |
The baseline type to use in estimateBackground(). Possible values are: "vertical_division_max", "vertical_division_min", "base_to_base".
|
staticconstexpr |
Baseline type: base to base.
|
staticconstexpr |
Baseline type: vertical division (min of end points; only for backwards compatibility)
|
staticconstexpr |
Baseline type: vertical division (max of end points)
|
staticconstexpr |
Baseline type: vertical division (min of end points)
|
private |
|
private |
Enable/disable EMG peak model fitting.
|
private |
The integration technique to use in integratePeak() and estimateBackground(). Possible values are: "trapezoid", "simpson", "intensity_sum".
|
staticconstexpr |
Integration type: intensity sum
|
staticconstexpr |
Integration type: simpson.
|
staticconstexpr |
Integration type: trapezoid.