libpappsomspp
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 ()
 
FilterMorphoAntiSpikeoperator= (const FilterMorphoAntiSpike &other)
 
Tracefilter (Trace &data_points) const override
 
std::size_t getHalfWindowSize () const
 

Private Attributes

std::size_t m_halfWindowSize = 0
 

Detailed Description

anti spike filter set to zero alone values inside the window

Definition at line 175 of file filtermorpho.h.

Constructor & Destructor Documentation

◆ FilterMorphoAntiSpike() [1/2]

FilterMorphoAntiSpike::FilterMorphoAntiSpike ( std::size_t  half_window_size)

Definition at line 272 of file filtermorpho.cpp.

273  : m_halfWindowSize(half_window_size)
274 {
275 }

◆ FilterMorphoAntiSpike() [2/2]

FilterMorphoAntiSpike::FilterMorphoAntiSpike ( const FilterMorphoAntiSpike other)

Definition at line 276 of file filtermorpho.cpp.

278 {
279 }

◆ ~FilterMorphoAntiSpike()

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

Definition at line 183 of file filtermorpho.h.

183 {};

Member Function Documentation

◆ filter()

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

Implements pappso::FilterInterface.

Definition at line 295 of file filtermorpho.cpp.

296 {
297  if(m_halfWindowSize == 0)
298  return data_points;
299  Trace old_trace(data_points);
300  auto it = old_trace.begin();
301  auto it_target = data_points.begin();
302  auto itw = old_trace.begin();
303 
304  auto itend = old_trace.end() - m_halfWindowSize - 1;
305  // new_trace.reserve(data_points.size());
306 
307  while((it != old_trace.end()) &&
308  (std::distance(old_trace.begin(), it) < (int)m_halfWindowSize))
309  {
310  // no anti spike at the begining of the signal
311  it++;
312  it_target++;
313  }
314  while(it != itend)
315  {
316  auto itwend = it + m_halfWindowSize + 1;
317  itw = findDifferentYvalue(it - m_halfWindowSize, it + 1, 0);
318  if(itw == it)
319  {
320  itw = findDifferentYvalue(it + 1, itwend, 0);
321  if(itw == itwend)
322  {
323  it_target->y = 0;
324  }
325  }
326 
327  it++;
328  it_target++;
329  }
330 
331  return data_points;
332 }

References pappso::findDifferentYvalue(), and m_halfWindowSize.

◆ getHalfWindowSize()

std::size_t FilterMorphoAntiSpike::getHalfWindowSize ( ) const

Definition at line 290 of file filtermorpho.cpp.

291 {
292  return m_halfWindowSize;
293 }

References m_halfWindowSize.

◆ operator=()

FilterMorphoAntiSpike & FilterMorphoAntiSpike::operator= ( const FilterMorphoAntiSpike other)

Definition at line 282 of file filtermorpho.cpp.

283 {
285 
286  return *this;
287 }

References m_halfWindowSize.

Member Data Documentation

◆ m_halfWindowSize

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

Definition at line 178 of file filtermorpho.h.

Referenced by filter(), getHalfWindowSize(), and operator=().


The documentation for this class was generated from the following files:
pappso::Trace
A simple container of DataPoint instances.
Definition: trace.h:126
pappso::FilterMorphoAntiSpike::m_halfWindowSize
std::size_t m_halfWindowSize
Definition: filtermorpho.h:178
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:87