39 #include "../trace/datapoint.h"
40 #include "../trace/trace.h"
42 #include "../processing/combiners/massspectrumcombiner.h"
43 #include "../mzrange.h"
44 #include "../pappsoexception.h"
46 #include "../peptide/peptidefragmentionlistbase.h"
47 #include "../exception/exceptionoutofrange.h"
48 #include "../processing/filters/filterresample.h"
61 std::vector<std::pair<pappso_double, pappso_double>> &data_point_vector)
67 std::vector<DataPoint> &data_point_vector)
112 assign(other.begin(), other.end());
120 vector<DataPoint>::operator=(std::move(other));
128 return std::make_shared<MassSpectrum>(*
this);
135 return std::make_shared<const MassSpectrum>(*
this);
221 if(size() != other.size())
223 qDebug() << __FILE__ <<
"@" << __LINE__ << __FUNCTION__ <<
"()"
224 <<
"The other mass spectrum size is not equal to *this size"
225 <<
"*this size:" << size() <<
"trace size:" << other.size();
232 auto trace_it = other.begin();
234 for(
auto &&data_point : *
this)
236 qDebug() <<
"first:" << data_point.x <<
"," << data_point.y
237 <<
" second:" << trace_it->x <<
"," << trace_it->y;
241 qDebug() <<
"x:" << data_point.x <<
" != " << trace_it->x;
247 qDebug() <<
"y:" << data_point.y <<
" != " << trace_it->y;
263 std::vector<DataPoint>::const_iterator it = begin();
264 std::vector<DataPoint>::const_iterator itEnd = end();
266 std::vector<DataPoint>::const_reverse_iterator itRev = rbegin();
267 std::vector<DataPoint>::const_reverse_iterator itRevEnd = rend();
272 while((it != itEnd) && (it->x <= itRev->x) && (itRev != itRevEnd))
280 else if(sumX > upper)
286 massSpectrum.push_back(*it);
287 massSpectrum.push_back(*itRev);
289 std::vector<DataPoint>::const_reverse_iterator itRevIn = itRev;
293 sumX = it->x + itRevIn->x;
294 while((sumX > lower) && (it->x <= itRevIn->x) &&
295 (itRevIn != itRevEnd))
297 sumX = it->x + itRevIn->x;
299 massSpectrum.push_back(*itRevIn);
307 std::sort(massSpectrum.begin(),
313 std::vector<DataPoint>::iterator itEndFix =
314 std::unique(massSpectrum.begin(),
318 return (a.x == b.x) && (a.y == b.y);
321 massSpectrum.resize(std::distance(massSpectrum.begin(), itEndFix));
331 qDebug() << __FILE__ <<
" " << __FUNCTION__ <<
" " << __LINE__ << size();
332 for(std::size_t i = 0; i < size(); i++)
334 qDebug() << __FILE__ <<
" " << __FUNCTION__ <<
" " << __LINE__;
335 qDebug() <<
"mz = " << this->operator[](i).x
336 <<
", int = " << this->operator[](i).y;
339 qDebug() << __FILE__ <<
" " << __FUNCTION__ <<
" " << __LINE__;
346 quint32 vector_size = massSpectrum.size();
347 outstream << vector_size;
348 for(
auto &&peak : massSpectrum)
364 if(!instream.atEnd())
366 instream >> vector_size;
367 qDebug() << __FILE__ <<
" " << __FUNCTION__ <<
" " << __LINE__
368 <<
" vector_size=" << vector_size;
370 for(quint32 i = 0; i < vector_size; i++)
373 if(instream.status() != QDataStream::Ok)
376 QString(
"error in QDataStream unserialize operator>> of "
377 "massSpectrum :\nread datastream failed status=%1 "
380 .arg(instream.status())
385 massSpectrum.push_back(peak);
387 if(instream.status() != QDataStream::Ok)
391 "error in QDataStream unserialize operator>> of massSpectrum "
392 ":\nread datastream failed status=%1")
393 .arg(instream.status()));