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.