libpappsomspp
Library for mass spectrometry
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.

◆ CosineSimilarity() [2/2]

CosineSimilarity::CosineSimilarity ( const CosineSimilarity other)

Copy constructor

Parameters
otherTODO

Definition at line 43 of file cosinesimilarity.cpp.

References 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.

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

References pappso::MzRange::lower(), 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().

◆ msp_filterExclusion

FilterInterfaceSPtr pappso::CosineSimilarity::msp_filterExclusion
private

Definition at line 67 of file cosinesimilarity.h.

Referenced by CosineSimilarity().


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