23 #include "../../types.h"
24 #include "../../utils.h"
25 #include "../../pappsoexception.h"
26 #include "../../exception/exceptionoutofrange.h"
27 #include "../../exception/exceptionnotpossible.h"
106 using TraceIter = std::vector<DataPoint>::const_iterator;
107 TraceIter trace_iter_begin = trace.begin();
108 TraceIter trace_iter = trace_iter_begin;
109 TraceIter trace_iter_end = trace.end();
118 using BinIter = std::vector<pappso_double>::const_iterator;
120 BinIter bin_iter =
m_bins.begin();
121 BinIter bin_end_iter =
m_bins.end();
141 auto bin_iter_for_mz = lower_bound(bin_iter, bin_end_iter, trace_iter->x);
143 if(bin_iter_for_mz != bin_end_iter)
145 if(bin_iter_for_mz !=
m_bins.begin())
146 bin_iter = --bin_iter_for_mz;
151 while(bin_iter != bin_end_iter)
153 current_bin_mz = *bin_iter;
171 new_data_point.
x = current_bin_mz;
181 while(trace_iter != trace_iter_end)
187 bool trace_matched =
false;
201 trace_x = trace_iter->x;
202 trace_y = trace_iter->y;
230 if(trace_x <= current_bin_mz)
239 new_data_point.
y += trace_y;
246 trace_matched =
true;
274 trace_matched =
true;
296 std::pair<std::map<pappso_double, pappso_double>::iterator,
299 map_trace.insert(std::pair<pappso_double, pappso_double>(
300 new_data_point.
x, new_data_point.
y));
307 result.first->second += new_data_point.
y;
332 if(trace_iter == trace_iter_end)
341 std::pair<std::map<pappso_double, pappso_double>::iterator,
bool>
343 map_trace.insert(std::pair<pappso_double, pappso_double>(
344 new_data_point.
x, new_data_point.
y));
348 result.first->second += new_data_point.
y;
375 if(!map_trace_in.size())
379 return map_trace_out;
382 Trace trace(map_trace_in);
384 return combine(map_trace_out, trace);
int m_decimalPlaces
Number of decimals to use for the keys (x values)
std::vector< pappso_double > m_bins
MassSpectrumPlusCombiner()
Construct an uninitialized instance.
virtual ~MassSpectrumPlusCombiner()
Destruct the instance.
virtual MapTrace & combine(MapTrace &map_trace, const Trace &trace) const override
MassSpectrumPlusCombiner & operator=(const MassSpectrumPlusCombiner &other)
A simple container of DataPoint instances.
static pappso_double roundToDecimals(pappso_double value, int decimal_places)
tries to keep as much as possible monoisotopes, removing any possible C13 peaks and changes multichar...
double pappso_double
A type definition for doubles.
std::shared_ptr< const MassSpectrumPlusCombiner > MassSpectrumPlusCombinerCstSPtr