23 #include "../../types.h"
24 #include "../../utils.h"
25 #include "../../pappsoexception.h"
26 #include "../../exception/exceptionoutofrange.h"
27 #include "../../exception/exceptionnotpossible.h"
84 const Trace &trace)
const
98 using TraceIter = std::vector<DataPoint>::const_iterator;
99 TraceIter trace_iter_begin = trace.begin();
100 TraceIter trace_iter = trace_iter_begin;
101 TraceIter trace_iter_end = trace.end();
110 using BinIter = std::vector<pappso_double>::const_iterator;
112 BinIter bin_iter =
m_bins.begin();
113 BinIter bin_end_iter =
m_bins.end();
136 auto bin_iter_for_mz = lower_bound(bin_iter, bin_end_iter, trace_iter->x);
138 if(bin_iter_for_mz != bin_end_iter)
143 if(bin_iter_for_mz !=
m_bins.begin())
144 bin_iter = --bin_iter_for_mz;
151 while(bin_iter != bin_end_iter)
153 current_bin_mz_value = *bin_iter;
169 bin_data_point.
x = current_bin_mz_value;
176 while(trace_iter != trace_iter_end)
178 bool trace_matched =
false;
197 trace_x = trace_iter->x;
198 trace_y = trace_iter->y;
204 if(trace_x <= current_bin_mz_value)
219 bin_data_point.
y -= trace_y;
225 trace_matched =
true;
256 trace_matched =
true;
287 std::pair<std::map<pappso_double, pappso_double>::iterator,
290 map_trace.insert(std::pair<pappso_double, pappso_double>(
291 bin_data_point.
x, -bin_data_point.
y));
311 result.first->second += bin_data_point.
y;
341 if(trace_iter == trace_iter_end)
350 std::pair<std::map<pappso_double, pappso_double>::iterator,
bool>
352 map_trace.insert(std::pair<pappso_double, pappso_double>(
353 bin_data_point.
x, -bin_data_point.
y));
375 result.first->second += bin_data_point.
y;
414 if(!map_trace_in.size())
418 return map_trace_out;
421 Trace trace(map_trace_in);
423 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
virtual MapTrace & combine(MapTrace &map_trace, const Trace &trace) const override
MassSpectrumMinusCombiner()
Construct an uninitialized instance.
virtual ~MassSpectrumMinusCombiner()
Destruct the instance.
MassSpectrumMinusCombiner & operator=(const MassSpectrumMinusCombiner &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...
std::shared_ptr< const MassSpectrumMinusCombiner > MassSpectrumMinusCombinerCstSPtr
double pappso_double
A type definition for doubles.