libpappsomspp
Library for mass spectrometry
pappso::MassSpectrum Class Reference

Class to represent a mass spectrum. More...

#include <massspectrum.h>

Inheritance diagram for pappso::MassSpectrum:
pappso::Trace

Public Member Functions

 MassSpectrum ()
 
 MassSpectrum (std::vector< std::pair< pappso_double, pappso_double >> &data_point_vector)
 
 MassSpectrum (std::vector< DataPoint > &data_point_vector)
 
 MassSpectrum (const MapTrace &other)
 
 MassSpectrum (const Trace &other)
 
 MassSpectrum (Trace &&other)
 
 MassSpectrum (const MassSpectrum &other)
 
 MassSpectrum (MassSpectrum &&other)
 
virtual ~MassSpectrum ()
 
virtual MassSpectrumoperator= (const MassSpectrum &other)
 
virtual MassSpectrumoperator= (MassSpectrum &&other)
 
MassSpectrumSPtr makeMassSpectrumSPtr () const
 
MassSpectrumCstSPtr makeMassSpectrumCstSPtr () const
 
virtual MassSpectrummassSpectrumFilter (const MassSpectrumFilterInterface &filter) final
 apply a filter on this MassSpectrum More...
 
pappso_double totalIonCurrent () const
 Compute the total ion current of this mass spectrum. More...
 
pappso_double tic () const
 Compute the total ion current of this mass spectrum. More...
 
pappso_double tic (double mzStart, double mzEnd)
 
const DataPointmaxIntensityDataPoint () const
 Find the DataPoint instance having the greatest intensity (y) value. More...
 
const DataPointminIntensityDataPoint () const
 Find the DataPoint instance having the smallest intensity (y) value. More...
 
void sortMz ()
 Sort the DataPoint instances of this spectrum. More...
 
bool equals (const MassSpectrum &other, PrecisionPtr precision) const
 Tells if this MassSpectrum is equal to massSpectrum. More...
 
MassSpectrum filterSum (const MzRange &mass_range) const
 
void debugPrintValues () const
 
- Public Member Functions inherited from pappso::Trace
 Trace ()
 
 Trace (const std::vector< pappso_double > &xVector, const std::vector< pappso_double > &yVector)
 
 Trace (const std::vector< std::pair< pappso_double, pappso_double >> &dataPoints)
 
 Trace (const std::vector< DataPoint > &dataPoints)
 
 Trace (const std::vector< DataPoint > &&dataPoints)
 
 Trace (const MapTrace &map_trace)
 
 Trace (const Trace &other)
 
 Trace (const Trace &&other)
 
virtual ~Trace ()
 
size_t initialize (const std::vector< pappso_double > &xVector, const std::vector< pappso_double > &yVector)
 
size_t initialize (const Trace &other)
 
size_t initialize (const std::map< pappso_double, pappso_double > &map)
 
virtual Traceoperator= (const Trace &x)
 
virtual Traceoperator= (Trace &&x)
 
TraceSPtr makeTraceSPtr () const
 
TraceCstSPtr makeTraceCstSPtr () const
 
std::vector< pappso_doublexValues () const
 
std::vector< pappso_doubleyValues () const
 
std::map< pappso_double, pappso_doubletoMap () const
 
DataPoint containsX (pappso_double value, PrecisionPtr precision_p=nullptr) const
 
const DataPointminYDataPoint () const
 
const DataPointmaxYDataPoint () const
 
pappso_double minY () const
 
pappso_double maxY () const
 
pappso_double maxY (double mzStart, double mzEnd) const
 
pappso_double sumY () const
 
pappso_double sumY (double mzStart, double mzEnd) const
 
void sortX ()
 
void unique ()
 
virtual Tracefilter (const FilterInterface &filter) final
 apply a filter on this trace More...
 
QString toString () const
 

Additional Inherited Members

- Protected Member Functions inherited from pappso::Trace
std::size_t dataPointIndexWithX (pappso_double value) const
 
std::vector< DataPoint >::iterator dataPointIteratorWithX (pappso_double value)
 
std::vector< DataPoint >::const_iterator dataPointCstIteratorWithX (pappso_double value) const
 

Detailed Description

Class to represent a mass spectrum.

A mass spectrum is a collection of DataPoint instances. Moreover, it has internal data that represent the context of the acquisition of the data: retention time and drift time (if the experiment was an ion mobility mass spectrometry experiment).

A MassSpectrum cannot perform combinations. For combination of mass spectra, the class to use is MassSpectrumCombinator.

Definition at line 70 of file massspectrum.h.

Constructor & Destructor Documentation

◆ MassSpectrum() [1/8]

pappso::MassSpectrum::MassSpectrum ( )

Definition at line 55 of file massspectrum.cpp.

56 {
57 }

◆ MassSpectrum() [2/8]

pappso::MassSpectrum::MassSpectrum ( std::vector< std::pair< pappso_double, pappso_double >> &  data_point_vector)

Definition at line 60 of file massspectrum.cpp.

62  : Trace::Trace(data_point_vector)
63 {
64 }

◆ MassSpectrum() [3/8]

pappso::MassSpectrum::MassSpectrum ( std::vector< DataPoint > &  data_point_vector)

Definition at line 66 of file massspectrum.cpp.

68  : Trace::Trace(data_point_vector)
69 {
70 }

◆ MassSpectrum() [4/8]

pappso::MassSpectrum::MassSpectrum ( const MapTrace other)

Definition at line 76 of file massspectrum.cpp.

76  : Trace(other)
77 {
78 }

◆ MassSpectrum() [5/8]

pappso::MassSpectrum::MassSpectrum ( const Trace other)

Definition at line 72 of file massspectrum.cpp.

72  : Trace(other)
73 {
74 }

◆ MassSpectrum() [6/8]

pappso::MassSpectrum::MassSpectrum ( Trace &&  other)

Definition at line 81 of file massspectrum.cpp.

81  : Trace(std::move(other))
82 {
83 }

◆ MassSpectrum() [7/8]

pappso::MassSpectrum::MassSpectrum ( const MassSpectrum other)

Definition at line 86 of file massspectrum.cpp.

86  : Trace(other)
87 {
88  // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "()";
89 }

◆ MassSpectrum() [8/8]

pappso::MassSpectrum::MassSpectrum ( MassSpectrum &&  other)

Definition at line 92 of file massspectrum.cpp.

92  : Trace(std::move(other))
93 {
94  // Specify std::move so that && reference is passed to the Trace constructor
95  // that takes std::vector<DataPoint> && as rvalue reference.
96 
97  // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "()"
98  //<< "Moving MassSpectrum::MassSpectrum(MassSpectrum &&)";
99 }

◆ ~MassSpectrum()

pappso::MassSpectrum::~MassSpectrum ( )
virtual

Definition at line 102 of file massspectrum.cpp.

103 {
104 }

Member Function Documentation

◆ debugPrintValues()

void pappso::MassSpectrum::debugPrintValues ( ) const

Definition at line 328 of file massspectrum.cpp.

329 {
330 
331  qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ << size();
332  for(std::size_t i = 0; i < size(); i++)
333  {
334  qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
335  qDebug() << "mz = " << this->operator[](i).x
336  << ", int = " << this->operator[](i).y;
337  }
338 
339  qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
340 }

◆ equals()

bool pappso::MassSpectrum::equals ( const MassSpectrum other,
PrecisionPtr  precision 
) const

Tells if this MassSpectrum is equal to massSpectrum.

To compare this to massSpectrum, a tolerance is applied to both the x and y values, that is defined using precision.

Parameters
massSpectrumMass spectrum to compare to this.
precisionPrecision to be used to perform the comparison of the x and y values of the data points in this and \massSpectrum mass spectra.

Definition at line 219 of file massspectrum.cpp.

220 {
221  if(size() != other.size())
222  {
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();
226 
227  return false;
228  }
229 
231 
232  auto trace_it = other.begin();
233 
234  for(auto &&data_point : *this)
235  {
236  qDebug() << "first:" << data_point.x << "," << data_point.y
237  << " second:" << trace_it->x << "," << trace_it->y;
238 
239  if(!MzRange(data_point.x, precision).contains(trace_it->x))
240  {
241  qDebug() << "x:" << data_point.x << " != " << trace_it->x;
242  return false;
243  }
244 
245  if(!MzRange(data_point.y, precint).contains(trace_it->y))
246  {
247  qDebug() << "y:" << data_point.y << " != " << trace_it->y;
248  return false;
249  }
250 
251  trace_it++;
252  }
253 
254  return true;
255 }

References pappso::MzRange::contains(), and pappso::PrecisionFactory::getPpmInstance().

◆ filterSum()

MassSpectrum pappso::MassSpectrum::filterSum ( const MzRange mass_range) const

Definition at line 259 of file massspectrum.cpp.

260 {
261  MassSpectrum massSpectrum;
262 
263  std::vector<DataPoint>::const_iterator it = begin();
264  std::vector<DataPoint>::const_iterator itEnd = end();
265 
266  std::vector<DataPoint>::const_reverse_iterator itRev = rbegin();
267  std::vector<DataPoint>::const_reverse_iterator itRevEnd = rend();
268 
269  pappso_double lower = range.lower();
270  pappso_double upper = range.upper();
271 
272  while((it != itEnd) && (it->x <= itRev->x) && (itRev != itRevEnd))
273  {
274  pappso_double sumX = it->x + itRev->x;
275 
276  if(sumX < lower)
277  {
278  it++;
279  }
280  else if(sumX > upper)
281  {
282  itRev++;
283  }
284  else
285  {
286  massSpectrum.push_back(*it);
287  massSpectrum.push_back(*itRev);
288 
289  std::vector<DataPoint>::const_reverse_iterator itRevIn = itRev;
290  itRevIn++;
291 
292  // FIXME Attention buggy code FR 20180626.
293  sumX = it->x + itRevIn->x;
294  while((sumX > lower) && (it->x <= itRevIn->x) &&
295  (itRevIn != itRevEnd))
296  {
297  sumX = it->x + itRevIn->x;
298  // trace.push_back(*it);
299  massSpectrum.push_back(*itRevIn);
300  itRevIn++;
301  }
302  it++;
303  }
304  }
305 
306  // Sort all the data points in increasing order by x
307  std::sort(massSpectrum.begin(),
308  massSpectrum.end(),
309  [](const DataPoint &a, const DataPoint &b) { return (a.x < b.x); });
310 
311  // Remove all the but the first element of a series of elements that are
312  // considered equal. Sort of deduplication.
313  std::vector<DataPoint>::iterator itEndFix =
314  std::unique(massSpectrum.begin(),
315  massSpectrum.end(),
316  [](const DataPoint &a, const DataPoint &b) {
317  // Return true if both elements should be considered equal.
318  return (a.x == b.x) && (a.y == b.y);
319  });
320 
321  massSpectrum.resize(std::distance(massSpectrum.begin(), itEndFix));
322 
323  return massSpectrum;
324 }

References pappso::MzRange::lower(), and pappso::MzRange::upper().

◆ makeMassSpectrumCstSPtr()

MassSpectrumCstSPtr pappso::MassSpectrum::makeMassSpectrumCstSPtr ( ) const

Definition at line 133 of file massspectrum.cpp.

134 {
135  return std::make_shared<const MassSpectrum>(*this);
136 }

◆ makeMassSpectrumSPtr()

MassSpectrumSPtr pappso::MassSpectrum::makeMassSpectrumSPtr ( ) const

Definition at line 126 of file massspectrum.cpp.

127 {
128  return std::make_shared<MassSpectrum>(*this);
129 }

Referenced by pappso::PwizMsRunReader::qualifiedMassSpectrumFromPwizSpectrumPtr(), and pappso::XyMsRunReader::qualifiedMassSpectrumFromXyMSDataFile().

◆ massSpectrumFilter()

MassSpectrum & pappso::MassSpectrum::massSpectrumFilter ( const MassSpectrumFilterInterface filter)
finalvirtual

apply a filter on this MassSpectrum

Parameters
filterto process the MassSpectrum
Returns
reference on the modified MassSpectrum

Definition at line 402 of file massspectrum.cpp.

403 {
404  return filter.filter(*this);
405 }

References pappso::Trace::filter().

Referenced by pappso::XtandemSpectrumProcess::process().

◆ maxIntensityDataPoint()

const DataPoint & pappso::MassSpectrum::maxIntensityDataPoint ( ) const

Find the DataPoint instance having the greatest intensity (y) value.

Returns
<const DataPoint &> The data point having the maximum intensity (y) value of the whole mass spectrum.

Definition at line 178 of file massspectrum.cpp.

179 {
180  return Trace::maxYDataPoint();
181 }

References pappso::Trace::maxYDataPoint().

◆ minIntensityDataPoint()

const DataPoint & pappso::MassSpectrum::minIntensityDataPoint ( ) const

Find the DataPoint instance having the smallest intensity (y) value.

Returns
<const DataPoint &> The data point having the minimum intensity (y) value of the whole mass spectrum.

Definition at line 190 of file massspectrum.cpp.

191 {
192  return Trace::minYDataPoint();
193 }

References pappso::Trace::minYDataPoint().

◆ operator=() [1/2]

MassSpectrum & pappso::MassSpectrum::operator= ( const MassSpectrum other)
virtual

Definition at line 108 of file massspectrum.cpp.

109 {
110  // qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << " ()";
111 
112  assign(other.begin(), other.end());
113  return *this;
114 }

◆ operator=() [2/2]

MassSpectrum & pappso::MassSpectrum::operator= ( MassSpectrum &&  other)
virtual

Definition at line 118 of file massspectrum.cpp.

119 {
120  vector<DataPoint>::operator=(std::move(other));
121  return *this;
122 }

◆ sortMz()

void pappso::MassSpectrum::sortMz ( )

Sort the DataPoint instances of this spectrum.

The DataPoint instances are sorted according to the x value (the m/z value) and in increasing order.

Definition at line 202 of file massspectrum.cpp.

203 {
204  Trace::sortX();
205 }

References pappso::Trace::sortX().

Referenced by pappso::PwizMsRunReader::qualifiedMassSpectrumFromPwizSpectrumPtr().

◆ tic() [1/2]

pappso_double pappso::MassSpectrum::tic ( ) const

Compute the total ion current of this mass spectrum.

Convenience function that returns totalIonCurrent();

Definition at line 159 of file massspectrum.cpp.

160 {
161  return totalIonCurrent();
162 }

References totalIonCurrent().

◆ tic() [2/2]

pappso_double pappso::MassSpectrum::tic ( double  mzStart,
double  mzEnd 
)

Definition at line 166 of file massspectrum.cpp.

167 {
168  return Trace::sumY(mzStart, mzEnd);
169 }

References pappso::Trace::sumY().

◆ totalIonCurrent()

pappso_double pappso::MassSpectrum::totalIonCurrent ( ) const

Compute the total ion current of this mass spectrum.

The sum of all the separate ion currents carried by the ions of different m/z contributing to a complete mass massSpectrum or in a specified m/z range of a mass massSpectrum. MS:1000285

Returns
<pappso_double> The total ion current.

Definition at line 148 of file massspectrum.cpp.

149 {
150  return Trace::sumY();
151 }

References pappso::Trace::sumY().

Referenced by tic().


The documentation for this class was generated from the following files:
pappso::Trace::maxYDataPoint
const DataPoint & maxYDataPoint() const
Definition: trace.cpp:708
pappso::pappso_double
double pappso_double
A type definition for doubles.
Definition: types.h:48
pappso::PrecisionFactory::getPpmInstance
static PrecisionPtr getPpmInstance(pappso_double value)
Definition: precision.cpp:149
pappso::MassSpectrum::totalIonCurrent
pappso_double totalIonCurrent() const
Compute the total ion current of this mass spectrum.
Definition: massspectrum.cpp:148
pappso::Trace::Trace
Trace()
Definition: trace.cpp:375
pappso::MassSpectrum::MassSpectrum
MassSpectrum()
Definition: massspectrum.cpp:55
pappso::Trace::filter
virtual Trace & filter(const FilterInterface &filter) final
apply a filter on this trace
Definition: trace.cpp:828
pappso::Trace::sumY
pappso_double sumY() const
Definition: trace.cpp:741
pappso::PrecisionPtr
const PrecisionBase * PrecisionPtr
Definition: precision.h:122
pappso::Trace::sortX
void sortX()
Definition: trace.cpp:790
pappso::Trace::minYDataPoint
const DataPoint & minYDataPoint() const
Definition: trace.cpp:689