OpenMS
Scoring.h
Go to the documentation of this file.
1 // Copyright (c) 2002-2023, The OpenMS Team -- 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 
17 namespace 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  {
47 public:
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  OPENSWATHALGO_DLLAPI double NormalizedManhattanDist(double x[], double y[], int n);
75 
84  OPENSWATHALGO_DLLAPI double RootMeanSquareDeviation(double x[], double y[], int n);
85 
94  OPENSWATHALGO_DLLAPI double SpectralAngle(double x[], double y[], int n);
95 
98  OPENSWATHALGO_DLLAPI XCorrArrayType calcxcorr_legacy_mquest_(std::vector<double>& data1,
99  std::vector<double>& data2, bool normalize);
100 
103  OPENSWATHALGO_DLLAPI XCorrArrayType normalizedCrossCorrelation(std::vector<double>& data1,
104  std::vector<double>& data2, const int maxdelay, const int lag);
105 
107  OPENSWATHALGO_DLLAPI XCorrArrayType normalizedCrossCorrelationPost(std::vector<double>& normalized_data1,
108  std::vector<double>& normalized_data2, const int maxdelay, const int lag);
109 
111  OPENSWATHALGO_DLLAPI XCorrArrayType calculateCrossCorrelation(const std::vector<double>& data1,
112  const std::vector<double>& data2, const int maxdelay, const int lag);
113 
116 
118  OPENSWATHALGO_DLLAPI void standardize_data(std::vector<double>& data);
119 
121  OPENSWATHALGO_DLLAPI void normalize_sum(double x[], unsigned int n);
122 
123  // Compute rank of vector elements, append it to @p ranks and return the highest rank
124  OPENSWATHALGO_DLLAPI unsigned int computeAndAppendRank(const std::vector<double>& v, std::vector<unsigned int>& ranks);
125 
126  // Compute rank of vector elements and its highest rank for each row in a 2D array
127  OPENSWATHALGO_DLLAPI std::vector<unsigned int> computeRankVector(const std::vector<std::vector<double>>& intensity, std::vector<std::vector<unsigned int>>& ranks);
128 
129  // Estimate mutual information between two vectors of ranks
130  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);
131 
133 
134  }
135 }
136 
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.
std::pair< unsigned int, unsigned int > pos2D
Definition: Scoring.h:31
OPENSWATHALGO_DLLAPI double RootMeanSquareDeviation(double x[], double y[], int n)
Calculate the RMSD (root means square deviation)
OPENSWATHALGO_DLLAPI std::vector< unsigned int > computeRankVector(const std::vector< std::vector< double >> &intensity, std::vector< std::vector< unsigned int >> &ranks)
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 double NormalizedManhattanDist(double x[], double y[], int n)
Calculate the normalized Manhattan distance between two arrays.
std::pair< int, double > XCorrEntry
Cross Correlation array contains (lag,correlation) pairs.
Definition: Scoring.h:44
OPENSWATHALGO_DLLAPI void standardize_data(std::vector< double > &data)
Standardize a vector (subtract mean, divide by standard deviation)
OPENSWATHALGO_DLLAPI double SpectralAngle(double x[], double y[], int n)
Calculate the Spectral angle (acosine of the normalized dotproduct)
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 XCorrArrayType::const_iterator xcorrArrayGetMaxPeak(const XCorrArrayType &array)
Find best peak in an cross-correlation (highest apex)
OPENSWATHALGO_DLLAPI XCorrArrayType normalizedCrossCorrelation(std::vector< double > &data1, std::vector< double > &data2, const int maxdelay, const int lag)
OPENSWATHALGO_DLLAPI XCorrArrayType calcxcorr_legacy_mquest_(std::vector< double > &data1, std::vector< double > &data2, bool normalize)
OPENSWATHALGO_DLLAPI void normalize_sum(double x[], unsigned int n)
Divide each element of x by the sum of the vector.
OPENSWATHALGO_DLLAPI unsigned int computeAndAppendRank(const std::vector< double > &v, std::vector< unsigned int > &ranks)
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