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 41 of file cosinesimilarity.h.

Constructor & Destructor Documentation

◆ CosineSimilarity() [1/2]

CosineSimilarity::CosineSimilarity ( PrecisionPtr precision)

Default constructor

Definition at line 38 of file cosinesimilarity.cpp.

39{
40 mp_precision = precision;
41
42 msp_filterExclusion = std::make_shared<FilterMzExclusion>(precision);
43}
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 45 of file cosinesimilarity.cpp.

References CosineSimilarity(), mp_precision, and msp_filterExclusion.

◆ ~CosineSimilarity()

CosineSimilarity::~CosineSimilarity ( )

Destructor

Definition at line 51 of file cosinesimilarity.cpp.

52{
53}

Member Function Documentation

◆ similarity()

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

Definition at line 56 of file cosinesimilarity.cpp.

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

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 64 of file cosinesimilarity.h.

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

◆ msp_filterExclusion

FilterInterfaceSPtr pappso::CosineSimilarity::msp_filterExclusion
private

Definition at line 65 of file cosinesimilarity.h.

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


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