libpappsomspp
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 
46 Trace &
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  m_value = other.m_value;
77 
78  return *this;
79 }
80 
81 Trace &
83 {
84  qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__
85  << " spectrum.size()=" << spectrum.size();
86  auto last_it = findFirstGreaterX(spectrum.begin(), spectrum.end(), m_value);
87  spectrum.erase(spectrum.begin(), last_it);
88  qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__
89  << " spectrum.size()=" << spectrum.size();
90  return spectrum;
91 }
92 
94  double max_x)
95  : m_minX(min_x), m_maxX(max_x)
96 {
97 }
98 
100  const FilterResampleRemoveXRange &other)
101  : FilterResampleRemoveXRange(other.m_minX, other.m_maxX)
102 {
103 }
104 
105 
108 {
109  m_minX = other.m_minX;
110  m_maxX = other.m_maxX;
111 
112  return *this;
113 }
114 
115 
116 Trace &
118 {
119 
120  // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__
121  // << " m_min_x=" << m_min_x;
122  // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__
123  // << " m_max_x=" << m_max_x;
124  auto begin_it =
125  findFirstEqualOrGreaterX(spectrum.begin(), spectrum.end(), m_minX);
126  // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__
127  // << " begin_it->x=" << begin_it->x;
128  auto end_it = findFirstGreaterX(begin_it, spectrum.end(), m_maxX);
129  // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__
130  // << " end_it->x=" << end_it->x;
131  spectrum.erase(begin_it, end_it);
132 
133  // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__
134  // << " spectrum.size()=" << spectrum.size();
135  return spectrum;
136 }
137 
138 
140  : m_minX(min_x), m_maxX(max_x)
141 {
142 }
143 
145  const FilterResampleKeepXRange &other)
146  : FilterResampleKeepXRange(other.m_minX, other.m_maxX)
147 {
148 }
149 
150 
153 {
154  m_minX = other.m_minX;
155  m_maxX = other.m_maxX;
156 
157  return *this;
158 }
159 
160 
161 Trace &
163 {
164  auto begin_it =
165  findFirstEqualOrGreaterX(spectrum.begin(), spectrum.end(), m_minX);
166  // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__
167  //<< " begin_it->x=" << begin_it->x;
168  auto end_it = findFirstGreaterX(begin_it, spectrum.end(), m_maxX);
169  // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__
170  //<< " end_it->x=" << end_it->x;
171 
172  spectrum.erase(end_it, spectrum.end());
173  spectrum.erase(spectrum.begin(), begin_it);
174  // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__
175  //<< " spectrum.size()=" << spectrum.size();
176 
177  return spectrum;
178 }
179 
180 
183  : m_filterRange(mz_range.lower(), mz_range.upper())
184 {
185 }
186 
190  : m_filterRange(other.m_filterRange)
191 {
192 }
193 
194 MassSpectrum &
196 {
197  qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
198  m_filterRange.filter(spectrum);
199  qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
200  return spectrum;
201 }
202 
203 
205  const MzRange &mz_range)
206  : m_filterRange(mz_range.lower(), mz_range.upper())
207 {
208 }
209 
212  : m_filterRange(other.m_filterRange)
213 {
214 }
215 
216 MassSpectrum &
218 {
219  m_filterRange.filter(spectrum);
220  return spectrum;
221 }
pappso::MassSpectrumFilterResampleRemoveMzRange::filter
MassSpectrum & filter(MassSpectrum &spectrum) const override
Definition: filterresample.cpp:195
pappso::FilterResampleKeepXRange::m_minX
double m_minX
Definition: filterresample.h:103
pappso::FilterResampleKeepXRange::m_maxX
double m_maxX
Definition: filterresample.h:104
pappso::FilterResampleRemoveXRange::FilterResampleRemoveXRange
FilterResampleRemoveXRange(double min_x, double max_x)
Definition: filterresample.cpp:93
pappso::FilterResampleKeepGreater::FilterResampleKeepGreater
FilterResampleKeepGreater(double x_value)
Definition: filterresample.cpp:55
pappso::MassSpectrumFilterResampleKeepMzRange::m_filterRange
const FilterResampleKeepXRange m_filterRange
Definition: filterresample.h:135
pappso::FilterResampleKeepSmaller::FilterResampleKeepSmaller
FilterResampleKeepSmaller(double x_value)
Definition: filterresample.cpp:34
pappso::FilterResampleKeepGreater::getThresholdX
double getThresholdX() const
Definition: filterresample.cpp:68
pappso
tries to keep as much as possible monoisotopes, removing any possible C13 peaks and changes multichar...
Definition: aa.cpp:39
pappso::MassSpectrum
Class to represent a mass spectrum.
Definition: massspectrum.h:92
pappso::MassSpectrumFilterResampleKeepMzRange::MassSpectrumFilterResampleKeepMzRange
MassSpectrumFilterResampleKeepMzRange(const MzRange &mz_range)
Definition: filterresample.cpp:204
pappso::FilterResampleKeepGreater
Definition: filterresample.h:69
pappso::FilterResampleKeepXRange::filter
Trace & filter(Trace &trace) const override
Definition: filterresample.cpp:162
pappso::MassSpectrumFilterResampleKeepMzRange
Definition: filterresample.h:133
filterresample.h
pappso::FilterResampleKeepXRange::FilterResampleKeepXRange
FilterResampleKeepXRange(double min_x=0, double max_x=0)
Definition: filterresample.cpp:139
pappso::MassSpectrumFilterResampleRemoveMzRange
Definition: filterresample.h:118
pappso::MzRange
Definition: mzrange.h:67
pappso::Trace
A simple container of DataPoint instances.
Definition: trace.h:132
pappso::FilterResampleRemoveXRange::filter
Trace & filter(Trace &trace) const override
Definition: filterresample.cpp:117
pappso::FilterResampleKeepSmaller::filter
Trace & filter(Trace &trace) const override
Definition: filterresample.cpp:47
pappso::FilterResampleKeepSmaller::m_value
double m_value
Definition: filterresample.h:77
pappso::FilterResampleKeepXRange::operator=
FilterResampleKeepXRange & operator=(const FilterResampleKeepXRange &other)
Definition: filterresample.cpp:152
pappso::MassSpectrumFilterResampleRemoveMzRange::m_filterRange
const FilterResampleRemoveXRange m_filterRange
Definition: filterresample.h:120
pappso::FilterResampleRemoveXRange::m_maxX
double m_maxX
Definition: filterresample.h:88
pappso::FilterResampleKeepGreater::filter
Trace & filter(Trace &trace) const override
Definition: filterresample.cpp:82
pappso::FilterResampleRemoveXRange::m_minX
double m_minX
Definition: filterresample.h:87
pappso::FilterResampleRemoveXRange::operator=
FilterResampleRemoveXRange & operator=(const FilterResampleRemoveXRange &other)
Definition: filterresample.cpp:107
pappso::MassSpectrumFilterResampleRemoveMzRange::MassSpectrumFilterResampleRemoveMzRange
MassSpectrumFilterResampleRemoveMzRange(const MzRange &mz_range)
Definition: filterresample.cpp:182
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:31
pappso::FilterResampleKeepSmaller
Definition: filterresample.h:57
pappso::FilterResampleKeepXRange
Definition: filterresample.h:101
pappso::FilterResampleRemoveXRange
Definition: filterresample.h:85
pappso::FilterResampleKeepGreater::m_value
double m_value
Definition: filterresample.h:71
pappso::MassSpectrumFilterResampleKeepMzRange::filter
MassSpectrum & filter(MassSpectrum &spectrum) const override
Definition: filterresample.cpp:217
pappso::FilterResampleKeepGreater::operator=
FilterResampleKeepGreater & operator=(const FilterResampleKeepGreater &other)
Definition: filterresample.cpp:74
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:59