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 ~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: