pappsomspp
Library for mass spectrometry
pappso::FilterMorphoAntiSpike Class Reference

anti spike filter set to zero alone values inside the window More...

#include <filtermorpho.h>

Inheritance diagram for pappso::FilterMorphoAntiSpike:
pappso::FilterInterface

Public Member Functions

 FilterMorphoAntiSpike (std::size_t half_window_size)
 
 FilterMorphoAntiSpike (const FilterMorphoAntiSpike &other)
 
virtual ~FilterMorphoAntiSpike ()
 
Tracefilter (Trace &data_points) const override
 
std::size_t getHalfWindowSize () const
 

Private Attributes

std::size_t m_half_window_size = 0
 

Detailed Description

anti spike filter set to zero alone values inside the window

Definition at line 159 of file filtermorpho.h.

Constructor & Destructor Documentation

◆ FilterMorphoAntiSpike() [1/2]

FilterMorphoAntiSpike::FilterMorphoAntiSpike ( std::size_t  half_window_size)

Definition at line 216 of file filtermorpho.cpp.

218  : m_half_window_size(half_window_size)
219 {

◆ FilterMorphoAntiSpike() [2/2]

FilterMorphoAntiSpike::FilterMorphoAntiSpike ( const FilterMorphoAntiSpike other)

Definition at line 220 of file filtermorpho.cpp.

223 {

◆ ~FilterMorphoAntiSpike()

virtual pappso::FilterMorphoAntiSpike::~FilterMorphoAntiSpike ( )
inlinevirtual

Definition at line 167 of file filtermorpho.h.

167 {};

Member Function Documentation

◆ filter()

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

Implements pappso::FilterInterface.

Definition at line 231 of file filtermorpho.cpp.

233 {
234  if(m_half_window_size == 0)
235  return data_points;
236  Trace old_trace(data_points);
237  auto it = old_trace.begin();
238  auto it_target = data_points.begin();
239  auto itw = old_trace.begin();
240 
241  auto itend = old_trace.end() - m_half_window_size - 1;
242  // new_trace.reserve(data_points.size());
243 
244  while((it != old_trace.end()) &&
245  (std::distance(old_trace.begin(), it) < (int)m_half_window_size))
246  {
247  // no anti spike at the begining of the signal
248  it++;
249  it_target++;
250  }
251  while(it != itend)
252  {
253  auto itwend = it + m_half_window_size + 1;
254  itw = findDifferentYvalue(it - m_half_window_size, it + 1, 0);
255  if(itw == it)
256  {
257  itw = findDifferentYvalue(it + 1, itwend, 0);
258  if(itw == itwend)
259  {
260  it_target->y = 0;
261  }
262  }
263 
264  it++;
265  it_target++;
266  }
267 
268  return data_points;

References pappso::findDifferentYvalue(), and m_half_window_size.

◆ getHalfWindowSize()

std::size_t FilterMorphoAntiSpike::getHalfWindowSize ( ) const

Definition at line 226 of file filtermorpho.cpp.

228 {
229  return m_half_window_size;

References m_half_window_size.

Member Data Documentation

◆ m_half_window_size

std::size_t pappso::FilterMorphoAntiSpike::m_half_window_size = 0
private

Definition at line 162 of file filtermorpho.h.

Referenced by filter(), and getHalfWindowSize().


The documentation for this class was generated from the following files:
pappso::Trace
A simple container of DataPoint instances.
Definition: trace.h:125
pappso::findDifferentYvalue
std::vector< DataPoint >::iterator findDifferentYvalue(std::vector< DataPoint >::iterator begin, std::vector< DataPoint >::iterator end, const double &y_value)
find the first element in which Y is different of value
Definition: trace.cpp:86
pappso::FilterMorphoAntiSpike::m_half_window_size
std::size_t m_half_window_size
Definition: filtermorpho.h:162