OpenMS
|
Math namespace. More...
Classes | |
class | RandomShuffler |
struct | SummaryStatistics |
Helper class to gather (and dump) some statistics from a e.g. vector<double>. More... | |
class | BasicStatistics |
Calculates some basic statistical parameters of a distribution: sum, mean, variance, and provides the normal approximation. More... | |
class | GammaDistributionFitter |
Implements a fitter for the Gamma distribution. More... | |
class | GaussFitter |
Implements a fitter for Gaussian functions. More... | |
class | GumbelDistributionFitter |
Implements a fitter for the Gumbel distribution. More... | |
class | GumbelMaxLikelihoodFitter |
Implements a fitter for the Gumbel distribution. More... | |
class | Histogram |
Representation of a histogram. More... | |
class | PosteriorErrorProbabilityModel |
Implements a mixture model of the inverse gumbel and the gauss distribution or a gaussian mixture. More... | |
class | BilinearInterpolation |
Provides access to bilinearly interpolated values (and derivatives) from discrete data points. Values beyond the given range of data points are implicitly taken as zero. More... | |
class | LinearInterpolation |
Provides access to linearly interpolated values (and derivatives) from discrete data points. Values beyond the given range of data points are implicitly taken as zero. More... | |
struct | RANSACParam |
A simple struct to carry all the parameters required for a RANSAC run. More... | |
class | RANSAC |
This class provides a generic implementation of the RANSAC outlier detection algorithm. Is implemented and tested after the SciPy reference: http://wiki.scipy.org/Cookbook/RANSAC. More... | |
class | RansacModel |
Generic plug-in template base class using 'Curiously recurring template pattern' (CRTP) to allow for arbitrary RANSAC models (e.g. linear or quadratic fits). More... | |
class | RansacModelLinear |
Implementation of a linear RANSAC model fit. More... | |
class | RansacModelQuadratic |
Implementation of a quadratic RANSAC model fit. More... | |
class | LinearRegression |
This class offers functions to perform least-squares fits to a straight line model, \( Y(c,x) = c_0 + c_1 x \). More... | |
class | LinearRegressionWithoutIntercept |
This class offers functions to perform least-squares fits to a straight line model, \( Y(c,x) = c_0 + c_1 x \). More... | |
class | QuadraticRegression |
class | ROCCurve |
ROCCurves show the trade-off in sensitivity and specificity for binary classifiers using different cutoff values. More... | |
Typedefs | |
using | BinContainer = std::vector< RangeBase > |
Functions | |
template<typename T > | |
bool | extendRange (T &min, T &max, const T &value) |
Given an interval/range and a new value, extend the range to include the new value if needed. More... | |
template<typename T > | |
bool | contains (T value, T min, T max) |
Is a value contained in [min, max] ? More... | |
std::pair< double, double > | zoomIn (const double left, const double right, const float factor, const float align) |
Zoom into an interval [left, right], decreasing its width by factor (which must be in [0,inf]). More... | |
BinContainer | createBins (double min, double max, uint32_t number_of_bins, double extend_margin=0) |
Split a range [min,max] into number_of_bins (with optional overlap) and return the ranges of each bin. More... | |
double | ceilDecimal (double x, int decPow) |
rounds x up to the next decimal power 10 ^ decPow More... | |
double | roundDecimal (double x, int decPow) |
rounds x to the next decimal power 10 ^ decPow More... | |
double | intervalTransformation (double x, double left1, double right1, double left2, double right2) |
transforms point x of interval [left1,right1] into interval [left2,right2] More... | |
double | linear2log (double x) |
Transforms a number from linear to log10 scale. Avoids negative logarithms by adding 1. More... | |
double | log2linear (double x) |
Transforms a number from log10 to to linear scale. Subtracts the 1 added by linear2log(double) More... | |
bool | isOdd (UInt x) |
Returns true if the given integer is odd. More... | |
template<typename T > | |
T | round (T x) |
Rounds the value. More... | |
bool | approximatelyEqual (double a, double b, double tol) |
Returns if a is approximately equal b , allowing a tolerance of tol . More... | |
template<typename T > | |
T | gcd (T a, T b) |
Returns the greatest common divisor (gcd) of two numbers by applying the Euclidean algorithm. More... | |
template<typename T > | |
T | gcd (T a, T b, T &u1, T &u2) |
Returns the greatest common divisor by applying the extended Euclidean algorithm (Knuth TAoCP vol. 2, p342). Calculates u1, u2 and u3 (which is returned) so that a * u1 + b * u2 = u3 = gcd(a, b, u1, u2) More... | |
template<typename T > | |
T | getPPM (T mz_obs, T mz_ref) |
Compute parts-per-million of two m/z values. More... | |
template<typename T > | |
T | getPPMAbs (T mz_obs, T mz_ref) |
Compute absolute parts-per-million of two m/z values. More... | |
template<typename T > | |
T | ppmToMass (T ppm, T mz_ref) |
Compute the mass diff in [Th], given a ppm value and a reference point. More... | |
template<typename T > | |
T | ppmToMassAbs (T ppm, T mz_ref) |
std::pair< double, double > | getTolWindow (double val, double tol, bool ppm) |
Return tolerance window around val given tolerance tol . More... | |
template<typename T1 > | |
T1::value_type | quantile (const T1 &x, double q) |
Returns the value of the q th quantile (0-1) in a sorted non-empty vector x . More... | |
template<class T > | |
void | spline_bisection (const T &peak_spline, double const left_neighbor_mz, double const right_neighbor_mz, double &max_peak_mz, double &max_peak_int, double const threshold=1e-6) |
template<typename IteratorType > | |
static void | checkIteratorsNotNULL (IteratorType begin, IteratorType end) |
Helper function checking if two iterators are not equal. More... | |
template<typename IteratorType > | |
static void | checkIteratorsEqual (IteratorType begin, IteratorType end) |
Helper function checking if two iterators are equal. More... | |
template<typename IteratorType1 , typename IteratorType2 > | |
static void | checkIteratorsAreValid (IteratorType1 begin_b, IteratorType1 end_b, IteratorType2 begin_a, IteratorType2 end_a) |
Helper function checking if an iterator and a co-iterator both have a next element. More... | |
template<typename IteratorType > | |
static double | sum (IteratorType begin, IteratorType end) |
Calculates the sum of a range of values. More... | |
template<typename IteratorType > | |
static double | mean (IteratorType begin, IteratorType end) |
Calculates the mean of a range of values. More... | |
template<typename IteratorType > | |
static double | median (IteratorType begin, IteratorType end, bool sorted=false) |
Calculates the median of a range of values. More... | |
template<typename IteratorType > | |
double | MAD (IteratorType begin, IteratorType end, double median_of_numbers) |
median absolute deviation (MAD) More... | |
template<typename IteratorType > | |
double | MeanAbsoluteDeviation (IteratorType begin, IteratorType end, double mean_of_numbers) |
mean absolute deviation (MeanAbsoluteDeviation) More... | |
template<typename IteratorType > | |
static double | quantile1st (IteratorType begin, IteratorType end, bool sorted=false) |
Calculates the first quantile of a range of values. More... | |
template<typename IteratorType > | |
static double | quantile3rd (IteratorType begin, IteratorType end, bool sorted=false) |
Calculates the third quantile of a range of values. More... | |
template<typename IteratorType > | |
static double | variance (IteratorType begin, IteratorType end, double mean=std::numeric_limits< double >::max()) |
template<typename IteratorType > | |
static double | sd (IteratorType begin, IteratorType end, double mean=std::numeric_limits< double >::max()) |
Calculates the standard deviation of a range of values. More... | |
template<typename IteratorType > | |
static double | absdev (IteratorType begin, IteratorType end, double mean=std::numeric_limits< double >::max()) |
Calculates the absolute deviation of a range of values. More... | |
template<typename IteratorType1 , typename IteratorType2 > | |
static double | covariance (IteratorType1 begin_a, IteratorType1 end_a, IteratorType2 begin_b, IteratorType2 end_b) |
Calculates the covariance of two ranges of values. More... | |
template<typename IteratorType1 , typename IteratorType2 > | |
static double | meanSquareError (IteratorType1 begin_a, IteratorType1 end_a, IteratorType2 begin_b, IteratorType2 end_b) |
Calculates the mean square error for the values in [begin_a, end_a) and [begin_b, end_b) More... | |
template<typename IteratorType1 , typename IteratorType2 > | |
static double | classificationRate (IteratorType1 begin_a, IteratorType1 end_a, IteratorType2 begin_b, IteratorType2 end_b) |
Calculates the classification rate for the values in [begin_a, end_a) and [begin_b, end_b) More... | |
template<typename IteratorType1 , typename IteratorType2 > | |
static double | matthewsCorrelationCoefficient (IteratorType1 begin_a, IteratorType1 end_a, IteratorType2 begin_b, IteratorType2 end_b) |
Calculates the Matthews correlation coefficient for the values in [begin_a, end_a) and [begin_b, end_b) More... | |
template<typename IteratorType1 , typename IteratorType2 > | |
static double | pearsonCorrelationCoefficient (IteratorType1 begin_a, IteratorType1 end_a, IteratorType2 begin_b, IteratorType2 end_b) |
Calculates the Pearson correlation coefficient for the values in [begin_a, end_a) and [begin_b, end_b) More... | |
template<typename Value > | |
static void | computeRank (std::vector< Value > &w) |
Replaces the elements in vector w by their ranks. More... | |
template<typename IteratorType1 , typename IteratorType2 > | |
static double | rankCorrelationCoefficient (IteratorType1 begin_a, IteratorType1 end_a, IteratorType2 begin_b, IteratorType2 end_b) |
calculates the rank correlation coefficient for the values in [begin_a, end_a) and [begin_b, end_b) More... | |
template<typename ValueType , typename BinSizeType > | |
std::ostream & | operator<< (std::ostream &os, const Histogram< ValueType, BinSizeType > &hist) |
Print the contents to a stream. More... | |
Math namespace.
Uses bisection to find the maximum point of a spline.
Contains mathematical auxiliary functions.
Should work with BSpline2d and CubicSpline2d
using BinContainer = std::vector<RangeBase> |
|
static |
Replaces the elements in vector w
by their ranks.
Referenced by rankCorrelationCoefficient().
bool OpenMS::Math::contains | ( | T | value, |
T | min, | ||
T | max | ||
) |
Is a value
contained in [min, max] ?
T | Type, e.g. double |
Referenced by RangeBase::contains(), ListUtils::contains(), and QApplicationTOPP::QApplicationTOPP().
|
inline |
Split a range [min,max] into number_of_bins
(with optional overlap) and return the ranges of each bin.
Optionally, bins can be made overlapping, by extending each bins' left and right margin by extend_margin
. The overlap between neighboring bins will thus be 2 x extend_margin
. The borders of the original interval will not be extended.
min | The minimum of the range; must be smaller than max |
max | The maximum of the range |
number_of_bins | How many bins should the range be divided into? Must be 1 or larger |
extend_margin | Overlap of neighboring bins (=0 for no overlap). Negative values will shrink the range (feature). |
number_of_bins
elements, each representing the margins of one binOpenMS::Precondition | if min >= max or number_of_bins == 0 |
References OPENMS_PRECONDITION.
bool OpenMS::Math::extendRange | ( | T & | min, |
T & | max, | ||
const T & | value | ||
) |
Given an interval/range and a new value, extend the range to include the new value if needed.
min | The current minimum of the range |
max | The current maximum of the range |
value | The new value which may extend the range |
T OpenMS::Math::getPPM | ( | T | mz_obs, |
T | mz_ref | ||
) |
Compute parts-per-million of two m/z values.
The returned ppm value can be either positive (mz_obs > mz_ref) or negative (mz_obs < mz_ref)!
mz_obs | Observed (experimental) m/z |
mz_ref | Reference (theoretical) m/z |
Referenced by getPPMAbs().
T OpenMS::Math::getPPMAbs | ( | T | mz_obs, |
T | mz_ref | ||
) |
Compute absolute parts-per-million of two m/z values.
The returned ppm value is always >= 0.
mz_obs | Observed (experimental) m/z |
mz_ref | Reference (theoretical) m/z |
References getPPM().
|
inline |
Return tolerance window around val
given tolerance tol
.
Note that when ppm is used, the window is not symmetric. In this case, (right - val
) > (val
- left), i.e., the tolerance window also includes the largest value x which still has val
in its tolerance window for the given ppms, so the compatibility relation is symmetric.
val | Value |
tol | Tolerance |
ppm | Whether tol is in ppm or absolute |
std::ostream& OpenMS::Math::operator<< | ( | std::ostream & | os, |
const Histogram< ValueType, BinSizeType > & | hist | ||
) |
Print the contents to a stream.
References Histogram< ValueType, BinSizeType >::centerOfBin(), and Histogram< ValueType, BinSizeType >::size().
T OpenMS::Math::ppmToMass | ( | T | ppm, |
T | mz_ref | ||
) |
Compute the mass diff in [Th], given a ppm value and a reference point.
The returned mass diff can be either positive (ppm > 0) or negative (ppm < 0)!
ppm | Parts-per-million error |
mz_ref | Reference m/z |
Referenced by PpmTrait::allowedTol(), GaussFilterAlgorithm::filter(), and ppmToMassAbs().
T OpenMS::Math::ppmToMassAbs | ( | T | ppm, |
T | mz_ref | ||
) |
References ppmToMass().
T1::value_type OpenMS::Math::quantile | ( | const T1 & | x, |
double | q | ||
) |
Returns the value of the q
th quantile (0-1) in a sorted non-empty vector x
.
References OpenMS::Constants::h.
void OpenMS::Math::spline_bisection | ( | const T & | peak_spline, |
double const | left_neighbor_mz, | ||
double const | right_neighbor_mz, | ||
double & | max_peak_mz, | ||
double & | max_peak_int, | ||
double const | threshold = 1e-6 |
||
) |
|
static |
@brief Calculates the variance of a range of values
The mean
can be provided explicitly to save computation time. If left at default, it will be computed internally.
@exception Exception::InvalidRange is thrown if the range is empty @ingroup MathFunctionsStatistics
References checkIteratorsNotNULL(), and mean().
Referenced by BasicStatistics< RealT >::normalDensity_sqrt2pi(), sd(), BasicStatistics< RealT >::setVariance(), and SummaryStatistics< T >::SummaryStatistics().
|
inline |
Zoom into an interval [left, right], decreasing its width by factor
(which must be in [0,inf]).
To actually zoom in, the factor
needs to be within [0,1]. Chosing a factor > 1 actually zooms out. align
(between [0,1]) determines where the zoom happens: i.e. align = 0 leaves left
the same and reduces right
(or extends if factor>1) whereas align = 0.5 zooms into the center of the range etc
You can do round trips, i.e. undo a zoom in, by inverting the factor:
left | Start of interval |
right | End of interval |
factor | Number between [0,1] to shrink, or >1 to extend the span (=right-left) |
align | Where to position the smaller/shrunk interval (0 = left, 1 = right, 0.5=center etc) |
References OPENMS_PRECONDITION.