pappsomspp
Library for mass spectrometry
filterresample.cpp
Go to the documentation of this file.
1 /**
2  * \file pappsomspp/filers/filterresample.cpp
3  * \date 28/04/2019
4  * \author Olivier Langella
5  * \brief collection of filters concerned by X selection
6  */
7 
8 /*******************************************************************************
9  * Copyright (c) 2019 Olivier Langella <Olivier.Langella@u-psud.fr>.
10  *
11  * This file is part of the PAPPSOms++ library.
12  *
13  * PAPPSOms++ is free software: you can redistribute it and/or modify
14  * it under the terms of the GNU General Public License as published by
15  * the Free Software Foundation, either version 3 of the License, or
16  * (at your option) any later version.
17  *
18  * PAPPSOms++ is distributed in the hope that it will be useful,
19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21  * GNU General Public License for more details.
22  *
23  * You should have received a copy of the GNU General Public License
24  * along with PAPPSOms++. If not, see <http://www.gnu.org/licenses/>.
25  *
26  ******************************************************************************/
27 
28 #include "filterresample.h"
29 #include "../../massspectrum/massspectrum.h"
30 #include <QDebug>
31 
32 using namespace pappso;
33 
35  : m_value(x_value)
36 {
37 }
38 
40  const FilterResampleKeepSmaller &other)
41  : FilterResampleKeepSmaller(other.m_value)
42 {
43 }
44 
45 
48 {
49  auto begin_it =
50  findFirstEqualOrGreaterX(spectrum.begin(), spectrum.end(), m_value);
51  spectrum.erase(begin_it, spectrum.end());
52  return spectrum;
53 }
54 
56  : m_value(x_value)
57 {
58 }
59 
61  const FilterResampleKeepGreater &other)
62  : FilterResampleKeepGreater(other.m_value)
63 {
64 }
65 
66 
67 double
69 {
70  return m_value;
71 }
72 
75 {
76  qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__
77  << " spectrum.size()=" << spectrum.size();
78  auto last_it = findFirstGreaterX(spectrum.begin(), spectrum.end(), m_value);
79  spectrum.erase(spectrum.begin(), last_it);
80  qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__
81  << " spectrum.size()=" << spectrum.size();
82  return spectrum;
83 }
84 
86  double max_x)
87  : m_min_x(min_x), m_max_x(max_x)
88 {
89 }
90 
92  const FilterResampleRemoveXRange &other)
93  : FilterResampleRemoveXRange(other.m_min_x, other.m_max_x)
94 {
95 }
96 
97 
100 {
101 
102  // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__
103  // << " m_min_x=" << m_min_x;
104  // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__
105  // << " m_max_x=" << m_max_x;
106  auto begin_it =
107  findFirstEqualOrGreaterX(spectrum.begin(), spectrum.end(), m_min_x);
108  // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__
109  // << " begin_it->x=" << begin_it->x;
110  auto end_it = findFirstGreaterX(begin_it, spectrum.end(), m_max_x);
111  // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__
112  // << " end_it->x=" << end_it->x;
113  spectrum.erase(begin_it, end_it);
114 
115  // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__
116  // << " spectrum.size()=" << spectrum.size();
117  return spectrum;
118 }
119 
120 
121 FilterResampleKeepXRange::FilterResampleKeepXRange(double min_x, double max_x)
122  : m_min_x(min_x), m_max_x(max_x)
123 {
124 }
125 
127  const FilterResampleKeepXRange &other)
128  : FilterResampleKeepXRange(other.m_min_x, other.m_max_x)
129 {
130 }
131 
132 
135 {
136  auto begin_it =
137  findFirstEqualOrGreaterX(spectrum.begin(), spectrum.end(), m_min_x);
138  // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__
139  //<< " begin_it->x=" << begin_it->x;
140  auto end_it = findFirstGreaterX(begin_it, spectrum.end(), m_max_x);
141  // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__
142  //<< " end_it->x=" << end_it->x;
143 
144  spectrum.erase(end_it, spectrum.end());
145  spectrum.erase(spectrum.begin(), begin_it);
146  // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__
147  //<< " spectrum.size()=" << spectrum.size();
148 
149  return spectrum;
150 }
151 
152 
155  : m_filterRange(mz_range.lower(), mz_range.upper())
156 {
157 }
158 
162  : m_filterRange(other.m_filterRange)
163 {
164 }
165 
168 {
169  qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
170  m_filterRange.filter(spectrum);
171  qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
172  return spectrum;
173 }
174 
175 
177  const MzRange &mz_range)
178  : m_filterRange(mz_range.lower(), mz_range.upper())
179 {
180 }
181 
184  : m_filterRange(other.m_filterRange)
185 {
186 }
187 
190 {
191  m_filterRange.filter(spectrum);
192  return spectrum;
193 }
pappso::MassSpectrumFilterResampleRemoveMzRange::filter
MassSpectrum & filter(MassSpectrum &spectrum) const override
Definition: filterresample.cpp:166
pappso::FilterResampleRemoveXRange::FilterResampleRemoveXRange
FilterResampleRemoveXRange(double min_x, double max_x)
Definition: filterresample.cpp:84
pappso::FilterResampleKeepGreater::FilterResampleKeepGreater
FilterResampleKeepGreater(double x_value)
Definition: filterresample.cpp:54
pappso::MassSpectrumFilterResampleKeepMzRange::m_filterRange
const FilterResampleKeepXRange m_filterRange
Definition: filterresample.h:124
pappso::FilterResampleKeepSmaller::FilterResampleKeepSmaller
FilterResampleKeepSmaller(double x_value)
Definition: filterresample.cpp:33
pappso::FilterResampleKeepGreater::getThresholdX
double getThresholdX() const
Definition: filterresample.cpp:67
pappso
Definition: aa.cpp:38
pappso::MassSpectrum
Class to represent a mass spectrum.
Definition: massspectrum.h:89
pappso::MassSpectrumFilterResampleKeepMzRange::MassSpectrumFilterResampleKeepMzRange
MassSpectrumFilterResampleKeepMzRange(const MzRange &mz_range)
Definition: filterresample.cpp:175
pappso::FilterResampleKeepGreater
Definition: filterresample.h:66
pappso::FilterResampleKeepXRange::filter
Trace & filter(Trace &trace) const override
Definition: filterresample.cpp:133
pappso::MassSpectrumFilterResampleKeepMzRange
Definition: filterresample.h:121
filterresample.h
pappso::FilterResampleKeepXRange::FilterResampleKeepXRange
FilterResampleKeepXRange(double min_x=0, double max_x=0)
Definition: filterresample.cpp:120
pappso::MassSpectrumFilterResampleRemoveMzRange
Definition: filterresample.h:106
pappso::MzRange
Definition: mzrange.h:64
pappso::Trace
A simple container of DataPoint instances.
Definition: trace.h:125
pappso::FilterResampleRemoveXRange::filter
Trace & filter(Trace &trace) const override
Definition: filterresample.cpp:98
pappso::FilterResampleRemoveXRange::m_min_x
double m_min_x
Definition: filterresample.h:83
pappso::FilterResampleKeepXRange::m_min_x
double m_min_x
Definition: filterresample.h:96
pappso::FilterResampleKeepSmaller::filter
Trace & filter(Trace &trace) const override
Definition: filterresample.cpp:46
pappso::FilterResampleKeepSmaller::m_value
double m_value
Definition: filterresample.h:74
pappso::MassSpectrumFilterResampleRemoveMzRange::m_filterRange
const FilterResampleRemoveXRange m_filterRange
Definition: filterresample.h:110
pappso::FilterResampleKeepGreater::filter
Trace & filter(Trace &trace) const override
Definition: filterresample.cpp:73
pappso::FilterResampleKeepXRange::m_max_x
double m_max_x
Definition: filterresample.h:97
pappso::FilterResampleRemoveXRange::m_max_x
double m_max_x
Definition: filterresample.h:84
pappso::MassSpectrumFilterResampleRemoveMzRange::MassSpectrumFilterResampleRemoveMzRange
MassSpectrumFilterResampleRemoveMzRange(const MzRange &mz_range)
Definition: filterresample.cpp:153
pappso::findFirstEqualOrGreaterX
std::vector< DataPoint >::iterator findFirstEqualOrGreaterX(std::vector< DataPoint >::iterator begin, std::vector< DataPoint >::iterator end, const double &value)
find the first element in which X is equal or greater than the value searched important : it implies ...
Definition: trace.cpp:29
pappso::FilterResampleKeepSmaller
Definition: filterresample.h:54
pappso::FilterResampleKeepXRange
Definition: filterresample.h:93
pappso::FilterResampleRemoveXRange
Definition: filterresample.h:80
pappso::FilterResampleKeepGreater::m_value
double m_value
Definition: filterresample.h:69
pappso::MassSpectrumFilterResampleKeepMzRange::filter
MassSpectrum & filter(MassSpectrum &spectrum) const override
Definition: filterresample.cpp:188
pappso::findFirstGreaterX
std::vector< DataPoint >::iterator findFirstGreaterX(std::vector< DataPoint >::iterator begin, std::vector< DataPoint >::iterator end, const double &value)
find the first element in which X is greater than the value searched important : it implies that Trac...
Definition: trace.cpp:57