libpappsomspp
Library for mass spectrometry
Loading...
Searching...
No Matches
tracepluscombiner.cpp
Go to the documentation of this file.
1#include <numeric>
2#include <limits>
3#include <vector>
4#include <map>
5#include <cmath>
6#include <iostream>
7#include <iomanip>
8
9#include <QDebug>
10
11#include "tracepluscombiner.h"
12#include "../../trace/trace.h"
13#include "../../types.h"
14#include "../../utils.h"
17
18
19namespace pappso
20{
21
22
26
27
29 : TraceCombiner(decimal_places)
30{
31}
32
33
38
39
45
46
50
51
53TracePlusCombiner::combine(MapTrace &map_trace, const Trace &trace) const
54{
55 // qDebug() << "With m_decimalPlaces:" << m_decimalPlaces;
56
57 if(!trace.size())
58 return map_trace;
59
60 for(auto &current_data_point : trace)
61 {
62
63 // If the data point is 0-intensity, then do nothing!
64 if(!current_data_point.y)
65 continue;
66
67 double x = Utils::roundToDecimals(current_data_point.x, m_decimalPlaces);
68
69 std::map<double, double>::iterator map_iterator;
70
71 std::pair<std::map<pappso_double, pappso_double>::iterator, bool> result;
72
73 result = map_trace.insert(
74 std::pair<pappso_double, pappso_double>(x, current_data_point.y));
75
76 if(result.second)
77 {
78 // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << " ()";
79 // The new element was inserted, we have nothing to do.
80 }
81 else
82 {
83 // The key already existed! The item was not inserted. We need to
84 // update the value.
85
86 result.first->second += current_data_point.y;
87 }
88 }
89
90 // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << " ()"
91 //<< "Prior to returning map_trace, its size is:" << map_trace.size();
92 // qDebug();
93 return map_trace;
94}
95
96
99 const MapTrace &map_trace_in) const
100{
101 // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << " ()"
102 //<< "map trace size:" << map_trace_out.size()
103 //<< "trace size:" << trace.size();
104
105 if(!map_trace_in.size())
106 return map_trace_out;
107
108 return combine(map_trace_out, map_trace_in.toTrace());
109}
110
111
112} // namespace pappso
Trace toTrace() const
Definition maptrace.cpp:219
int m_decimalPlaces
Number of decimals to use for the keys (x values)
virtual MapTrace & combine(MapTrace &map_trace, const Trace &trace) const override
A simple container of DataPoint instances.
Definition trace.h:148
static pappso_double roundToDecimals(pappso_double value, int decimal_places)
Definition utils.cpp:142
tries to keep as much as possible monoisotopes, removing any possible C13 peaks and changes multichar...
Definition aa.cpp:39
std::shared_ptr< const TracePlusCombiner > TracePlusCombinerCstSPtr
This header contains all the type re-definitions and all the global variables definitions used in the...