libpappsomspp
Library for mass spectrometry
Loading...
Searching...
No Matches
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 ~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}

References m_halfWindowSize.

Referenced by FilterLocalMaximum().

◆ FilterLocalMaximum() [2/2]

FilterLocalMaximum::FilterLocalMaximum ( const FilterLocalMaximum & other)

Copy constructor

Parameters
otherTODO

Definition at line 39 of file filterlocalmaximum.cpp.

41{
42}

References FilterLocalMaximum(), and m_halfWindowSize.

◆ ~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 = data_points.end() - m_halfWindowSize - 1; // no filter at the end of signal
58 // new_trace.reserve(data_points.size());
59
60 while((it != data_points.end()) &&
61 (std::distance(data_points.begin(), it) < (int)m_halfWindowSize))
62 {
63 // no filter at the begining of the signal
64 it++;
65 }
66 while(it != itend)
67 {
68 auto itwend = it + m_halfWindowSize + 1;
69 auto itw = maxYDataPoint(it - m_halfWindowSize, it + 1);
70 if(itw == it)
71 {
72 itw = maxYDataPoint(it, itwend);
73 if(itw == it)
74 {
75 new_trace.push_back({it->x, it->y});
76 }
77 }
78
79 it++;
80 }
81
82 data_points = std::move(new_trace);
83 return data_points;
84}
std::vector< DataPoint >::const_iterator maxYDataPoint(std::vector< DataPoint >::const_iterator begin, std::vector< DataPoint >::const_iterator end)
Definition trace.cpp:169

References m_halfWindowSize, and pappso::maxYDataPoint().

◆ getHalfWindowSize()

std::size_t FilterLocalMaximum::getHalfWindowSize ( ) const

Definition at line 87 of file filterlocalmaximum.cpp.

88{
89 return m_halfWindowSize;
90}

References m_halfWindowSize.

Member Data Documentation

◆ m_halfWindowSize

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

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