libpappsomspp
Library for mass spectrometry
Toggle main menu visibility
Loading...
Searching...
No Matches
filterexclusionmz.cpp
Go to the documentation of this file.
1
/**
2
* \file pappsomspp/processing/filters/filterexclusionmz.cpp
3
* \date 09/02/2021
4
* \author Thomas Renne
5
* \brief Delete small peaks in the exclusion range
6
*/
7
8
/*******************************************************************************
9
* Copyright (c) 2021 Thomas Renne <thomas.renne@e.email>.
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 "
filterexclusionmz.h
"
29
#include <QDebug>
30
#include "
pappsomspp/core/exception/exceptionnotrecognized.h
"
31
#include "
pappsomspp/core/mzrange.h
"
32
33
using namespace
pappso
;
34
35
FilterMzExclusion::FilterMzExclusion
(
const
QString &strBuildParams)
36
{
37
buildFilterFromString
(strBuildParams);
38
}
39
40
FilterMzExclusion::FilterMzExclusion
(
pappso::PrecisionPtr
precision_ptr)
41
:
m_exclusionPrecision
(precision_ptr)
42
{
43
}
44
45
FilterMzExclusion::FilterMzExclusion
(
const
pappso::FilterMzExclusion
&other)
46
:
m_exclusionPrecision
(other.
m_exclusionPrecision
)
47
{
48
}
49
50
FilterMzExclusion::~FilterMzExclusion
()
51
{
52
}
53
54
void
55
pappso::FilterMzExclusion::buildFilterFromString
(
const
QString &strBuildParams)
56
{
57
qDebug();
58
if
(strBuildParams.startsWith(
"mzExclusion|"
))
59
{
60
QStringList params = strBuildParams.split(
"|"
).back().split(
";"
, Qt::SkipEmptyParts);
61
62
QString precision = params.at(0);
63
m_exclusionPrecision
=
PrecisionFactory::fromString
(
64
precision.replace(
"dalton"
,
" dalton"
).replace(
"ppm"
,
" ppm"
).replace(
"res"
,
" res"
));
65
}
66
else
67
{
68
throw
pappso::ExceptionNotRecognized
(
69
QString(
"building mzExclusion from string %1 is not possible"
).arg(strBuildParams));
70
}
71
qDebug();
72
}
73
74
pappso::Trace
&
75
pappso::FilterMzExclusion::filter
(
pappso::Trace
&data_points)
const
76
{
77
qDebug();
78
qDebug() <<
"before"
<< data_points.size();
79
data_points.
sortY
(
Enums::SortOrder::descending
);
80
81
Trace
new_trace =
removeTraceInExclusionMargin
(data_points);
82
new_trace.
sortX
();
83
data_points = std::move(new_trace);
84
qDebug() <<
"after"
<< data_points.size();
85
qDebug();
86
return
data_points;
87
}
88
89
QString
90
pappso::FilterMzExclusion::name
()
const
91
{
92
return
"mzExclusion"
;
93
}
94
95
96
QString
97
pappso::FilterMzExclusion::toString
()
const
98
{
99
QString strCode = QString(
"%1|%2"
).arg(
name
()).arg(
m_exclusionPrecision
->toString());
100
101
strCode.replace(
" "
,
""
);
102
103
return
strCode;
104
}
105
106
pappso::Trace
107
pappso::FilterMzExclusion::removeTraceInExclusionMargin
(
pappso::Trace
&points)
const
108
{
109
Trace
new_trace;
110
std::vector<MzRange> excluded_ranges;
111
112
for
(
auto
&data_point : points)
113
{
114
auto
exclude_index = excluded_ranges.begin(), end = excluded_ranges.end();
115
116
exclude_index = std::find_if(exclude_index, end, [&data_point](
MzRange
range) {
117
return
(data_point.x >= range.
lower
() && data_point.x <= range.
upper
());
118
});
119
if
(exclude_index == end)
120
{
121
new_trace.push_back(data_point);
122
MzRange
new_range(data_point.x,
m_exclusionPrecision
);
123
excluded_ranges.push_back(new_range);
124
}
125
}
126
127
return
new_trace;
128
}
pappso::ExceptionNotRecognized
excetion to use when an item type is not recognized
Definition
exceptionnotrecognized.h:42
pappso::FilterMzExclusion
Definition
filterexclusionmz.h:37
pappso::FilterMzExclusion::buildFilterFromString
void buildFilterFromString(const QString &strBuildParams) override
build this filter using a string
Definition
filterexclusionmz.cpp:55
pappso::FilterMzExclusion::toString
QString toString() const override
Definition
filterexclusionmz.cpp:97
pappso::FilterMzExclusion::filter
Trace & filter(Trace &data_points) const override
get all the datapoints and remove different isotope and add their intensity and change to charge = 1 ...
Definition
filterexclusionmz.cpp:75
pappso::FilterMzExclusion::~FilterMzExclusion
virtual ~FilterMzExclusion()
Definition
filterexclusionmz.cpp:50
pappso::FilterMzExclusion::removeTraceInExclusionMargin
Trace removeTraceInExclusionMargin(Trace &points) const
Definition
filterexclusionmz.cpp:107
pappso::FilterMzExclusion::FilterMzExclusion
FilterMzExclusion(PrecisionPtr precision_ptr)
Definition
filterexclusionmz.cpp:40
pappso::FilterMzExclusion::name
QString name() const override
Definition
filterexclusionmz.cpp:90
pappso::FilterMzExclusion::m_exclusionPrecision
PrecisionPtr m_exclusionPrecision
Definition
filterexclusionmz.h:79
pappso::MzRange
Definition
mzrange.h:46
pappso::MzRange::lower
pappso_double lower() const
Definition
mzrange.h:71
pappso::MzRange::upper
pappso_double upper() const
Definition
mzrange.h:77
pappso::PrecisionFactory::fromString
static PrecisionPtr fromString(const QString &str)
get a precision pointer from a string
Definition
precision.cpp:80
pappso::Trace
A simple container of DataPoint instances.
Definition
trace.h:152
pappso::Trace::sortY
void sortY(Enums::SortOrder sort_order=Enums::SortOrder::ascending)
Definition
trace.cpp:1080
pappso::Trace::sortX
void sortX(Enums::SortOrder sort_order=Enums::SortOrder::ascending)
Definition
trace.cpp:1070
exceptionnotrecognized.h
filterexclusionmz.h
mzrange.h
pappso::Enums::SortOrder::descending
@ descending
Definition
types.h:223
pappso
tries to keep as much as possible monoisotopes, removing any possible C13 peaks and changes multichar...
Definition
aa.cpp:39
pappso::PrecisionPtr
const PrecisionBase * PrecisionPtr
Definition
precision.h:122
pappsomspp
core
processing
filters
filterexclusionmz.cpp
Generated on
for libpappsomspp by
1.17.0