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
67 std::map<double, double>::iterator map_iterator;
68
69 std::pair<std::map<pappso_double, pappso_double>::iterator, bool> result;
70
71 result = map_trace.insert(std::pair<pappso_double, pappso_double>(x, current_data_point.y));
72
73 if(result.second)
74 {
75 // qDebug() << " The element to insert was not there already, we added it.";
76 // The new element was inserted, we have nothing to do.
77 }
78 else
79 {
80 // The key already existed! The item was not inserted. We need to
81 // update the value.
82
83 // qDebug() << " The element to insert was there already, we increment y.";
84 result.first->second += current_data_point.y;
85 }
86 }
87
88 // qDebug() << "Prior to returning map_trace, its size is:" << map_trace.size();
89 return map_trace;
90}
91
92
94TracePlusCombiner::combine(MapTrace &map_trace_out, const MapTrace &map_trace_in) const
95{
96 // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << " ()"
97 //<< "map trace size:" << map_trace_out.size()
98 //<< "trace size:" << trace.size();
99
100 if(!map_trace_in.size())
101 return map_trace_out;
102
103 return combine(map_trace_out, map_trace_in.toTrace());
104}
105
106
107} // 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: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