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"
17
18
19namespace pappso
20{
21
22
26
27
28TracePlusCombiner::TracePlusCombiner(int decimal_places) : TraceCombiner(decimal_places)
29{
30}
31
32
36
37
42
43
47
48
50TracePlusCombiner::combine(MapTrace &map_trace, const Trace &trace) const
51{
52 // qDebug() << "With m_decimalPlaces:" << m_decimalPlaces << "map trace size:" << map_trace.size()
53 // << "trace size:" << trace.size();
54
55 if(!trace.size())
56 return map_trace;
57
58 for(auto &current_data_point : trace)
59 {
60
61 // If the data point is 0-intensity, then do nothing!
62 if(!current_data_point.y)
63 continue;
64
65 double x = Utils::roundToDecimals(current_data_point.x, m_decimalPlaces);
66 // double x = current_data_point.x;
67
68 std::map<double, double>::iterator map_iterator;
69
70 std::pair<std::map<pappso_double, pappso_double>::iterator, bool> result;
71
72 result = map_trace.insert(std::pair<pappso_double, pappso_double>(x, current_data_point.y));
73
74 if(result.second)
75 {
76 // qDebug() << " The element to insert was not there already, we added it.";
77 // The new element was inserted, we have nothing to do.
78 }
79 else
80 {
81 // The key already existed! The item was not inserted. We need to
82 // update the value.
83
84 // qDebug() << " The element to insert was there already, we increment y.";
85 result.first->second += current_data_point.y;
86 }
87 }
88
89 // qDebug() << "Prior to returning map_trace, its size is:" << map_trace.size();
90 return map_trace;
91}
92
93
95TracePlusCombiner::combine(MapTrace &map_trace_out, const MapTrace &map_trace_in) const
96{
97 // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << " ()"
98 //<< "map trace size:" << map_trace_out.size()
99 //<< "trace size:" << trace.size();
100
101 if(!map_trace_in.size())
102 return map_trace_out;
103
104 return combine(map_trace_out, map_trace_in.toTrace());
105}
106
107
108} // namespace pappso
Trace toTrace() const
Definition maptrace.cpp:214
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:152
static pappso_double roundToDecimals(pappso_double value, int decimal_places)
Definition utils.cpp:140
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