OpenMS
Loading...
Searching...
No Matches
Scoring.h
Go to the documentation of this file.
1// Copyright (c) 2002-present, OpenMS Inc. -- EKU Tuebingen, ETH Zurich, and FU Berlin
2// SPDX-License-Identifier: BSD-3-Clause
3//
4// --------------------------------------------------------------------------
5// $Maintainer: Hannes Roest$
6// $Authors: Hannes Roest$
7// --------------------------------------------------------------------------
8
9#pragma once
10
11#include <numeric>
12#include <map>
13#include <vector>
14
15#include <OpenMS/OPENSWATHALGO/OpenSwathAlgoConfig.h>
16
17namespace OpenSwath
18{
19
25 namespace Scoring
26 {
31 typedef std::pair<unsigned int, unsigned int> pos2D;
33 struct pair_hash
34 {
35 template <class T1, class T2>
36 std::size_t operator () (const std::pair<T1,T2> &p) const {
37 auto h1 = std::hash<T1>{}(p.first);
38 auto h2 = std::hash<T2>{}(p.second);
39 return h1 ^ h2;
40 }
41 };
42
44 typedef std::pair<int, double> XCorrEntry;
46 {
47public:
48 std::vector<XCorrEntry> data;
49
50 // Access functions
51 typedef std::vector<XCorrEntry>::iterator iterator;
52 typedef std::vector<XCorrEntry>::const_iterator const_iterator;
53
54 iterator begin() {return data.begin();}
55 const_iterator begin() const {return data.begin();}
56 iterator end() {return data.end();}
57 const_iterator end() const {return data.end();}
58 };
60
74 [[deprecated("Use the std::vector& overload instead")]]
75 OPENSWATHALGO_DLLAPI double NormalizedManhattanDist(double x[], double y[], int n);
76
82 OPENSWATHALGO_DLLAPI double NormalizedManhattanDist(std::vector<double>& x, std::vector<double>& y);
83
92 [[deprecated("Use the std::vector& overload instead")]]
93 OPENSWATHALGO_DLLAPI double RootMeanSquareDeviation(double x[], double y[], int n);
94
100 OPENSWATHALGO_DLLAPI double RootMeanSquareDeviation(const std::vector<double>& x, const std::vector<double>& y);
101
110 [[deprecated("Use the std::vector& overload instead")]]
111 OPENSWATHALGO_DLLAPI double SpectralAngle(double x[], double y[], int n);
112
118 OPENSWATHALGO_DLLAPI double SpectralAngle(const std::vector<double>& x, const std::vector<double>& y);
119
122 [[deprecated("Use normalizedCrossCorrelation instead")]]
123 OPENSWATHALGO_DLLAPI XCorrArrayType calcxcorr_legacy_mquest_(std::vector<double>& data1,
124 std::vector<double>& data2, bool normalize);
125
128 OPENSWATHALGO_DLLAPI XCorrArrayType normalizedCrossCorrelation(std::vector<double>& data1,
129 std::vector<double>& data2, const int maxdelay, const int lag);
130
132 OPENSWATHALGO_DLLAPI XCorrArrayType normalizedCrossCorrelationPost(std::vector<double>& normalized_data1,
133 std::vector<double>& normalized_data2, const int maxdelay, const int lag);
134
136 OPENSWATHALGO_DLLAPI XCorrArrayType calculateCrossCorrelation(const std::vector<double>& data1,
137 const std::vector<double>& data2, const int maxdelay, const int lag);
138
141
143 OPENSWATHALGO_DLLAPI void standardize_data(std::vector<double>& data);
144
146 [[deprecated("Use the std::vector& overload instead")]]
147 OPENSWATHALGO_DLLAPI void normalize_sum(double x[], unsigned int n);
148
153 OPENSWATHALGO_DLLAPI void normalize_sum(std::vector<double>& x);
154
155 // Compute rank of vector elements, append it to @p ranks and return the highest rank
156 OPENSWATHALGO_DLLAPI unsigned int computeAndAppendRank(const std::vector<double>& v, std::vector<unsigned int>& ranks);
157
158 // Compute rank of vector elements and its highest rank for each row in a 2D array
159 OPENSWATHALGO_DLLAPI std::vector<unsigned int> computeRankVector(const std::vector<std::vector<double>>& intensity, std::vector<std::vector<unsigned int>>& ranks);
160
161 // Estimate mutual information between two vectors of ranks
162 OPENSWATHALGO_DLLAPI double rankedMutualInformation(std::vector<unsigned int>& ranked_data1, std::vector<unsigned int>& ranked_data2, const unsigned int max_rank1, const unsigned int max_rank2);
163
165
166 }
167}
168
OPENSWATHALGO_DLLAPI double SpectralAngle(double x[], double y[], int n)
Calculate the Spectral angle (acosine of the normalized dotproduct)
OPENSWATHALGO_DLLAPI double NormalizedManhattanDist(double x[], double y[], int n)
Calculate the normalized Manhattan distance between two arrays.
OPENSWATHALGO_DLLAPI XCorrArrayType normalizedCrossCorrelationPost(std::vector< double > &normalized_data1, std::vector< double > &normalized_data2, const int maxdelay, const int lag)
Calculate crosscorrelation on std::vector data that is already normalized.
OPENSWATHALGO_DLLAPI void standardize_data(std::vector< double > &data)
Standardize a vector (subtract mean, divide by standard deviation)
std::pair< unsigned int, unsigned int > pos2D
Definition Scoring.h:31
OPENSWATHALGO_DLLAPI void normalize_sum(double x[], unsigned int n)
Divide each element of x by the sum of the vector.
OPENSWATHALGO_DLLAPI XCorrArrayType normalizedCrossCorrelation(std::vector< double > &data1, std::vector< double > &data2, const int maxdelay, const int lag)
OPENSWATHALGO_DLLAPI std::vector< unsigned int > computeRankVector(const std::vector< std::vector< double > > &intensity, std::vector< std::vector< unsigned int > > &ranks)
OPENSWATHALGO_DLLAPI double RootMeanSquareDeviation(double x[], double y[], int n)
Calculate the RMSD (root means square deviation)
std::pair< int, double > XCorrEntry
Cross Correlation array contains (lag,correlation) pairs.
Definition Scoring.h:44
OPENSWATHALGO_DLLAPI unsigned int computeAndAppendRank(const std::vector< double > &v, std::vector< unsigned int > &ranks)
OPENSWATHALGO_DLLAPI XCorrArrayType calculateCrossCorrelation(const std::vector< double > &data1, const std::vector< double > &data2, const int maxdelay, const int lag)
Calculate crosscorrelation on std::vector data without normalization.
OPENSWATHALGO_DLLAPI double rankedMutualInformation(std::vector< unsigned int > &ranked_data1, std::vector< unsigned int > &ranked_data2, const unsigned int max_rank1, const unsigned int max_rank2)
OPENSWATHALGO_DLLAPI XCorrArrayType::const_iterator xcorrArrayGetMaxPeak(const XCorrArrayType &array)
Find best peak in an cross-correlation (highest apex)
OPENSWATHALGO_DLLAPI XCorrArrayType calcxcorr_legacy_mquest_(std::vector< double > &data1, std::vector< double > &data2, bool normalize)
Definition Scoring.h:18
OPENSWATHALGO_DLLAPI void normalize(const std::vector< double > &intensities, double normalization_factor, std::vector< double > &normalized_intensities)
Normalize intensities in vector by normalization_factor.
Definition Scoring.h:46
std::vector< XCorrEntry >::const_iterator const_iterator
Definition Scoring.h:52
const_iterator begin() const
Definition Scoring.h:55
std::vector< XCorrEntry > data
Definition Scoring.h:48
iterator end()
Definition Scoring.h:56
const_iterator end() const
Definition Scoring.h:57
std::vector< XCorrEntry >::iterator iterator
Definition Scoring.h:51
iterator begin()
Definition Scoring.h:54
Simple hash function for Scoring::pos2D.
Definition Scoring.h:34
std::size_t operator()(const std::pair< T1, T2 > &p) const
Definition Scoring.h:36