![]() |
OpenMS
|
A functor class for the calculation of distances between features or consensus features. More...
#include <OpenMS/ANALYSIS/MAPMATCHING/FeatureDistance.h>
Classes | |
| struct | DistanceParams_ |
| Structure for storing distance parameters. More... | |
Public Member Functions | |
| FeatureDistance (double max_intensity=1.0, bool force_constraints=false) | |
| Constructor. More... | |
| ~FeatureDistance () override | |
| Destructor. More... | |
| FeatureDistance & | operator= (const FeatureDistance &other) |
| Assignment operator. More... | |
| std::pair< bool, double > | operator() (const BaseFeature &left, const BaseFeature &right) |
| Evaluation operator - checks constraints and computes the distance between two features. More... | |
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... | |
| 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 | |
| static const double | infinity |
| Value to return if max. difference is exceeded or if charge states don't match. More... | |
Protected Member Functions | |
| void | updateMembers_ () override |
| Docu in base class. More... | |
| double | distance_ (double diff, const DistanceParams_ ¶ms) const |
| Computes a distance component given absolute difference and parameters. More... | |
Protected Member Functions inherited from DefaultParamHandler | |
| void | defaultsToParam_ () |
| Updates the parameters after the defaults have been set in the constructor. More... | |
Protected Attributes | |
| DistanceParams_ | params_rt_ |
| Storage of parameters for the individual distance components. More... | |
| DistanceParams_ | params_mz_ |
| DistanceParams_ | params_intensity_ |
| double | total_weight_reciprocal_ |
| Reciprocal value of the total weight in the distance function. More... | |
| double | max_intensity_ |
| Maximum intensity of features (for normalization) More... | |
| bool | ignore_charge_ |
| Compute a distance even if charge states don't match? More... | |
| bool | ignore_adduct_ |
| Compute a distance even if adducts don't match? More... | |
| bool | force_constraints_ |
| Always return infinity if "max. difference" constraints are not met? More... | |
| bool | log_transform_ |
| Log-transform intensities when computing intensity distance? More... | |
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... | |
Additional Inherited Members | |
Static Public Member Functions inherited from DefaultParamHandler | |
| static void | writeParametersToMetaValues (const Param &write_this, MetaInfoInterface &write_here, const String &key_prefix="") |
| Writes all parameters to meta values. More... | |
A functor class for the calculation of distances between features or consensus features.
It implements a customizable distance function of the following form:
\[ w_{RT} \cdot \left( \frac{\left| RT_1 - RT_2 \right|}{\Delta RT_{max}} \right)^{p_{RT}} + w_{MZ} \cdot \left( \frac{\left| MZ_1 - MZ_2 \right|}{\Delta MZ_{max}} \right)^{p_{MZ}} + w_{int} \cdot \left( \frac{\left| int_1 - int_2 \right|}{int_{max}} \right)^{p_{int}} \]
This function returns a normalized distance between zero and one (unless constraints are violated, see below).
\( RT_i \), \( MZ_i \), and \( int_i \) are the RT, m/z, and intensity values of the respective feature.
Constraints are: \( {\Delta RT_{max}}, {\Delta MZ_{max}} \) and \( int_{max} \). If an absolute difference exceeds the specified maximum, the behavior depends on the value used for check_constraints in the constructor: If "false" (i.e., no constraints), the distance in that dimension may become greater than 1; if "true", infinity is returned as overall distance.
\( {\Delta RT_{max}} \) and \( {\Delta MZ_{max}} \) are the maximum allowed differences in RT and m/z, respectively. They are specified by the parameters distance_RT:max_difference and distance_MZ:max_difference, and are used for normalization, i.e., the observed RT or m/z differences of the feature pair are scaled relative to this value.
\( int_{max} \) is the intensity which yields a normalized intensity of 1. This parameter is not settable via user params, but is set in the constructor (via parameter max_intensity), since it depends on the data at hand.
\( p_X \) is the exponent for the distance in dimension X, specified by the parameter distance_X:exponent. Normalized differences (between (0, 1) unless unconstrained) are taken to this power. This makes it possible to compare values using linear, quadratic, etc. distance.
\( w_X \) is the weight of final distance in dimension X, specified by the parameter distance_X:weight. The weights can be used to increase or decrease the contribution of RT, m/z, or intensity in the distance function. (The default weight for the intensity dimension is zero, i.e. intensity is not considered by default. However, \( int_{max} \) is still a constraint and should be set sensibly in the c'tor.)
By default, two features are paired only if they have the same charge state (or at least one unknown charge '0') - otherwise, infinity is returned. This behavior can be changed by the ignore_charge parameter.
| Name | Type | Default | Restrictions | Description |
|---|---|---|---|---|
| ignore_charge | string | false | true, false | false [default]: pairing requires equal charge state (or at least one unknown charge '0'); true: Pairing irrespective of charge state |
| ignore_adduct | string | true | true, false | true [default]: pairing requires equal adducts (or at least one without adduct annotation); true: Pairing irrespective of adducts |
| distance_RT:max_difference | float | 100.0 | min: 0.0 | Never pair features with a larger RT distance (in seconds). |
| distance_RT:exponent | float | 1.0 | min: 0.0 | Normalized RT differences ([0-1], relative to 'max_difference') are raised to this power (using 1 or 2 will be fast, everything else is REALLY slow) |
| distance_RT:weight | float | 1.0 | min: 0.0 | Final RT distances are weighted by this factor |
| distance_MZ:max_difference | float | 0.3 | min: 0.0 | Never pair features with larger m/z distance (unit defined by 'unit') |
| distance_MZ:unit | string | Da | Da, ppm | Unit of the 'max_difference' parameter |
| distance_MZ:exponent | float | 2.0 | min: 0.0 | Normalized ([0-1], relative to 'max_difference') m/z differences are raised to this power (using 1 or 2 will be fast, everything else is REALLY slow) |
| distance_MZ:weight | float | 1.0 | min: 0.0 | Final m/z distances are weighted by this factor |
| distance_intensity:exponent | float | 1.0 | min: 0.0 | Differences in relative intensity ([0-1]) are raised to this power (using 1 or 2 will be fast, everything else is REALLY slow) |
| distance_intensity:weight | float | 0.0 | min: 0.0 | Final intensity distances are weighted by this factor |
| distance_intensity:log_transform | string | disabled | enabled, disabled | Log-transform intensities? If disabled, d = |int_f2 - int_f1| / int_max. If enabled, d = |log(int_f2 + 1) - log(int_f1 + 1)| / log(int_max + 1)) |
| FeatureDistance | ( | double | max_intensity = 1.0, |
| bool | force_constraints = false |
||
| ) |
Constructor.
| max_intensity | Maximum intensity of features (for normalization) |
| force_constraints | Check "max. difference" constraints given in the parameters and return infinity if violated? |
|
override |
Destructor.
|
inlineprotected |
Computes a distance component given absolute difference and parameters.
| std::pair<bool, double> operator() | ( | const BaseFeature & | left, |
| const BaseFeature & | right | ||
| ) |
Evaluation operator - checks constraints and computes the distance between two features.
| FeatureDistance& operator= | ( | const FeatureDistance & | other | ) |
Assignment operator.
|
overrideprotectedvirtual |
Docu in base class.
Reimplemented from DefaultParamHandler.
|
protected |
Always return infinity if "max. difference" constraints are not met?
|
protected |
Compute a distance even if adducts don't match?
|
protected |
Compute a distance even if charge states don't match?
|
static |
Value to return if max. difference is exceeded or if charge states don't match.
|
protected |
Log-transform intensities when computing intensity distance?
|
protected |
Maximum intensity of features (for normalization)
|
protected |
|
protected |
|
protected |
Storage of parameters for the individual distance components.
|
protected |
Reciprocal value of the total weight in the distance function.