libpappsomspp
Library for mass spectrometry
pappso::FilterLocalMaximum Class Reference

finds all local maxima, i.e. any point that has a greater y value than both of its neighboring points and only keep those points More...

#include <filterlocalmaximum.h>

Inheritance diagram for pappso::FilterLocalMaximum:
pappso::FilterInterface

Public Member Functions

 FilterLocalMaximum (std::size_t half_window_size)
 
 FilterLocalMaximum (const FilterLocalMaximum &other)
 
virtual ~FilterLocalMaximum ()
 
Tracefilter (Trace &data_points) const override
 
std::size_t getHalfWindowSize () const
 
- Public Member Functions inherited from pappso::FilterInterface
virtual Tracefilter (Trace &data_points) const =0
 
virtual ~FilterInterface ()
 

Private Attributes

std::size_t m_halfWindowSize = 0
 

Detailed Description

finds all local maxima, i.e. any point that has a greater y value than both of its neighboring points and only keep those points

usefull documentation : http://pd.chem.ucl.ac.uk/pdnn/peaks/peakindx.htm

Definition at line 43 of file filterlocalmaximum.h.

Constructor & Destructor Documentation

◆ FilterLocalMaximum() [1/2]

FilterLocalMaximum::FilterLocalMaximum ( std::size_t  half_window_size)

Default constructor

Definition at line 34 of file filterlocalmaximum.cpp.

35 : m_halfWindowSize(half_window_size)
36{
37}

◆ FilterLocalMaximum() [2/2]

FilterLocalMaximum::FilterLocalMaximum ( const FilterLocalMaximum other)

Copy constructor

Parameters
otherTODO

Definition at line 39 of file filterlocalmaximum.cpp.

41{
42}

◆ ~FilterLocalMaximum()

FilterLocalMaximum::~FilterLocalMaximum ( )
virtual

Destructor

Definition at line 44 of file filterlocalmaximum.cpp.

45{
46}

Member Function Documentation

◆ filter()

Trace & FilterLocalMaximum::filter ( Trace data_points) const
overridevirtual

Implements pappso::FilterInterface.

Definition at line 49 of file filterlocalmaximum.cpp.

50{
51
52 if(m_halfWindowSize == 0)
53 return data_points;
54 Trace new_trace;
55 auto it = data_points.begin();
56
57 auto itend =
58 data_points.end() - m_halfWindowSize - 1; // no filter at the end of signal
59 // new_trace.reserve(data_points.size());
60
61 while((it != data_points.end()) &&
62 (std::distance(data_points.begin(), it) < (int)m_halfWindowSize))
63 {
64 // no filter at the begining of the signal
65 it++;
66 }
67 while(it != itend)
68 {
69 auto itwend = it + m_halfWindowSize + 1;
70 auto itw = maxYDataPoint(it - m_halfWindowSize, it + 1);
71 if(itw == it)
72 {
73 itw = maxYDataPoint(it, itwend);
74 if(itw == it)
75 {
76 new_trace.push_back({it->x, it->y});
77 }
78 }
79
80 it++;
81 }
82
83 data_points = std::move(new_trace);
84 return data_points;
85}
A simple container of DataPoint instances.
Definition: trace.h:148
std::vector< DataPoint >::const_iterator maxYDataPoint(std::vector< DataPoint >::const_iterator begin, std::vector< DataPoint >::const_iterator end)
Definition: trace.cpp:180

References m_halfWindowSize, and pappso::maxYDataPoint().

◆ getHalfWindowSize()

std::size_t FilterLocalMaximum::getHalfWindowSize ( ) const

Definition at line 88 of file filterlocalmaximum.cpp.

89{
90 return m_halfWindowSize;
91}

References m_halfWindowSize.

Member Data Documentation

◆ m_halfWindowSize

std::size_t pappso::FilterLocalMaximum::m_halfWindowSize = 0
private

Definition at line 68 of file filterlocalmaximum.h.

Referenced by filter(), and getHalfWindowSize().


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