libpappsomspp
Library for mass spectrometry
Loading...
Searching...
No Matches
pappso::CosineSimilarity Class Reference

#include <cosinesimilarity.h>

Public Member Functions

 CosineSimilarity (PrecisionPtr precision)
 CosineSimilarity (const CosineSimilarity &other)
 ~CosineSimilarity ()
double similarity (pappso::Trace trace_a, pappso::Trace trace_b) const

Private Attributes

PrecisionPtr mp_precision
FilterInterfaceSPtr msp_filterExclusion

Detailed Description

Todo
write docs

Definition at line 43 of file cosinesimilarity.h.

Constructor & Destructor Documentation

◆ CosineSimilarity() [1/2]

CosineSimilarity::CosineSimilarity ( PrecisionPtr precision)

Default constructor

Definition at line 36 of file cosinesimilarity.cpp.

37{
38 mp_precision = precision;
39
40 msp_filterExclusion = std::make_shared<FilterMzExclusion>(precision);
41}
FilterInterfaceSPtr msp_filterExclusion

References mp_precision, and msp_filterExclusion.

Referenced by CosineSimilarity().

◆ CosineSimilarity() [2/2]

CosineSimilarity::CosineSimilarity ( const CosineSimilarity & other)

Copy constructor

Parameters
otherTODO

Definition at line 43 of file cosinesimilarity.cpp.

References CosineSimilarity(), mp_precision, and msp_filterExclusion.

◆ ~CosineSimilarity()

CosineSimilarity::~CosineSimilarity ( )

Destructor

Definition at line 49 of file cosinesimilarity.cpp.

50{
51}

Member Function Documentation

◆ similarity()

double pappso::CosineSimilarity::similarity ( pappso::Trace trace_a,
pappso::Trace trace_b ) const

Definition at line 54 of file cosinesimilarity.cpp.

55{
56 // get inner peaks
57 // we need a filter to get pairs of common peaks between a & b
58 // or at least compute quickly intensity square of common pairs
59
60 msp_filterExclusion.get()->filter(trace_a);
61 msp_filterExclusion.get()->filter(trace_b);
62
63 auto itb = trace_b.begin();
64 double inner_intensity_product = 0;
65 for(const auto &peak_a : trace_a)
66 {
67 MzRange range(peak_a.x, mp_precision);
68 double low = range.lower();
69 double up = range.upper();
70
71 while((itb != trace_b.end()) && (itb->x < low))
72 {
73 itb++;
74 }
75 if(itb->x < up)
76 {
77 inner_intensity_product += peak_a.y * itb->y;
78 }
79 }
80
81 double tracea_product = 0;
82 // a intensity sum of intensity square
83 for(const auto &peak_a : trace_a)
84 {
85 tracea_product += peak_a.y * peak_a.y;
86 }
87
88
89 double traceb_product = 0;
90 // a intensity sum of intensity square
91 for(const auto &peak_a : trace_b)
92 {
93 traceb_product += peak_a.y * peak_a.y;
94 }
95
96 return (inner_intensity_product / (sqrt(tracea_product) * sqrt(traceb_product)));
97}

References pappso::MzRange::lower(), mp_precision, msp_filterExclusion, and pappso::MzRange::upper().

Member Data Documentation

◆ mp_precision

PrecisionPtr pappso::CosineSimilarity::mp_precision
private

Definition at line 66 of file cosinesimilarity.h.

Referenced by CosineSimilarity(), CosineSimilarity(), and similarity().

◆ msp_filterExclusion

FilterInterfaceSPtr pappso::CosineSimilarity::msp_filterExclusion
private

Definition at line 67 of file cosinesimilarity.h.

Referenced by CosineSimilarity(), CosineSimilarity(), and similarity().


The documentation for this class was generated from the following files: