libpappsomspp
Library for mass spectrometry
Loading...
Searching...
No Matches
pappso::FilterGreatestYperWindow Class Reference

keep N datapoints form the greatest intensities to the lowest within a mass range in dalton More...

#include <filterpass.h>

Inheritance diagram for pappso::FilterGreatestYperWindow:
pappso::FilterInterface

Public Member Functions

 FilterGreatestYperWindow (double window_range, std::size_t number_of_points_per_window)
 constructor with the number of datapoints to keep
 FilterGreatestYperWindow (const FilterGreatestYperWindow &other)
virtual ~FilterGreatestYperWindow ()
FilterGreatestYperWindowoperator= (const FilterGreatestYperWindow &other)
Tracefilter (Trace &data_points) const override
std::size_t getNumberOfPoints () const
Public Member Functions inherited from pappso::FilterInterface
virtual ~FilterInterface ()

Private Attributes

double m_xWindowRange = 1
std::size_t m_numberOfPoints = 0

Detailed Description

keep N datapoints form the greatest intensities to the lowest within a mass range in dalton

Definition at line 121 of file filterpass.h.

Constructor & Destructor Documentation

◆ FilterGreatestYperWindow() [1/2]

FilterGreatestYperWindow::FilterGreatestYperWindow ( double window_range,
std::size_t number_of_points_per_window )

constructor with the number of datapoints to keep

Parameters
window_rangemass range to consider (must be greater than 0.5)
number_of_points_per_windowmaximum number of points accepted per mass window in resulting spectrum

Definition at line 194 of file filterpass.cpp.

196 : m_xWindowRange(window_range), m_numberOfPoints(number_of_points_per_window)
197{
198
199 qDebug();
200 if(m_xWindowRange < 0.5)
201 {
202 throw pappso::ExceptionOutOfRange(QObject::tr("window_range must be greater than 0.5"));
203 }
204
205 qDebug();
206}

References m_numberOfPoints, and m_xWindowRange.

Referenced by FilterGreatestYperWindow(), and operator=().

◆ FilterGreatestYperWindow() [2/2]

FilterGreatestYperWindow::FilterGreatestYperWindow ( const FilterGreatestYperWindow & other)

Definition at line 209 of file filterpass.cpp.

211{
212 qDebug();
213}

References FilterGreatestYperWindow(), m_numberOfPoints, and m_xWindowRange.

◆ ~FilterGreatestYperWindow()

virtual pappso::FilterGreatestYperWindow::~FilterGreatestYperWindow ( )
inlinevirtual

Definition at line 132 of file filterpass.h.

132{};

Member Function Documentation

◆ filter()

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

Implements pappso::FilterInterface.

Definition at line 227 of file filterpass.cpp.

228{
229
230 std::vector<DataPoint> new_trace(data_points);
231 data_points.clear();
232
233 int window_number = 0;
234 int old_window_number = -1;
235 std::size_t number_of_peaks_in_window = 0;
236 auto itbegin = data_points.begin();
237 std::vector<DataPoint>::iterator it_min;
238
239
240 // std::sort(data_points.begin(),
241 // data_points.end(),
242 // [](const DataPoint &a, const DataPoint &b) { return (a.y > b.y);
243 // });
244
245 qDebug() << " m_xWindowRange=" << m_xWindowRange << " m_numberOfPoints=" << m_numberOfPoints;
246 for(const pappso::DataPoint &data_point : new_trace)
247 {
248 qDebug() << " data_point.x=" << data_point.x << " data_point.y=" << data_point.y;
249 window_number = trunc(data_point.x / m_xWindowRange);
250 qDebug() << window_number;
251 if(window_number != old_window_number)
252 {
253 old_window_number = window_number;
254 number_of_peaks_in_window = 0;
255 itbegin = data_points.end();
256 }
257 if(number_of_peaks_in_window < m_numberOfPoints)
258 {
259 qDebug();
260 data_points.push_back(data_point);
261 number_of_peaks_in_window++;
262 if(number_of_peaks_in_window == 1)
263 {
264 itbegin = data_points.begin() + (data_points.size() - 1);
265 }
266 }
267 else
268 {
269 qDebug();
270
271 it_min = minYDataPoint(itbegin, data_points.end());
272 if(it_min != data_points.end())
273 {
274 qDebug();
275 if(it_min->y < data_point.y)
276 {
277 qDebug();
278 *it_min = data_point;
279 // it_min->x = data_point.x;
280 // it_min->y = data_point.y;
281 }
282 }
283 }
284 }
285 qDebug();
286 // new_trace.sortX();
287 // qDebug() << new_trace.size();
288 // data_points.clear();
289 // data_points = new_trace;
290 // data_points = std::move(new_trace);
291 // qDebug() << data_points.size();
292 data_points.sortX();
293 qDebug();
294 return data_points;
295}
void sortX(Enums::SortOrder sort_order=Enums::SortOrder::ascending)
Definition trace.cpp:1071
std::vector< DataPoint >::const_iterator minYDataPoint(std::vector< DataPoint >::const_iterator begin, std::vector< DataPoint >::const_iterator end)
Definition trace.cpp:152

References m_numberOfPoints, m_xWindowRange, pappso::minYDataPoint(), and pappso::Trace::sortX().

◆ getNumberOfPoints()

std::size_t FilterGreatestYperWindow::getNumberOfPoints ( ) const

Definition at line 298 of file filterpass.cpp.

299{
300 return m_numberOfPoints;
301}

References m_numberOfPoints.

◆ operator=()

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

Definition at line 216 of file filterpass.cpp.

217{
218 qDebug();
221
222 return *this;
223}

References FilterGreatestYperWindow(), m_numberOfPoints, and m_xWindowRange.

Member Data Documentation

◆ m_numberOfPoints

std::size_t pappso::FilterGreatestYperWindow::m_numberOfPoints = 0
private

◆ m_xWindowRange

double pappso::FilterGreatestYperWindow::m_xWindowRange = 1
private

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