OpenMS
MSExperiment.h
Go to the documentation of this file.
1 // --------------------------------------------------------------------------
2 // OpenMS -- Open-Source Mass Spectrometry
3 // --------------------------------------------------------------------------
4 // Copyright The OpenMS Team -- Eberhard Karls University Tuebingen,
5 // ETH Zurich, and Freie Universitaet Berlin 2002-2023.
6 //
7 // This software is released under a three-clause BSD license:
8 // * Redistributions of source code must retain the above copyright
9 // notice, this list of conditions and the following disclaimer.
10 // * Redistributions in binary form must reproduce the above copyright
11 // notice, this list of conditions and the following disclaimer in the
12 // documentation and/or other materials provided with the distribution.
13 // * Neither the name of any author or any participating institution
14 // may be used to endorse or promote products derived from this software
15 // without specific prior written permission.
16 // For a full list of authors, refer to the file AUTHORS.
17 // --------------------------------------------------------------------------
18 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 // ARE DISCLAIMED. IN NO EVENT SHALL ANY OF THE AUTHORS OR THE CONTRIBUTING
22 // INSTITUTIONS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
25 // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
26 // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
27 // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
28 // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 //
30 // --------------------------------------------------------------------------
31 // $Maintainer: Timo Sachsenberg $
32 // $Authors: Marc Sturm, Tom Waschischeck $
33 // --------------------------------------------------------------------------
34 
35 #pragma once
36 
43 
44 #include <vector>
45 
46 
47 namespace OpenMS
48 {
49  class Peak1D;
50  class ChromatogramPeak;
51 
70  class OPENMS_DLLAPI MSExperiment final : public RangeManagerContainer<RangeRT, RangeMZ, RangeIntensity, RangeMobility>,
72  {
73 
74 public:
75  typedef Peak1D PeakT;
77 
79 
80  typedef PeakT PeakType;
97  typedef std::vector<SpectrumType> Base;
99 
101 
102  typedef std::vector<SpectrumType>::iterator Iterator;
105  typedef std::vector<SpectrumType>::const_iterator ConstIterator;
111 
113  // Attention: these refer to the spectra vector only!
115  typedef Base::value_type value_type;
116  typedef Base::iterator iterator;
117  typedef Base::const_iterator const_iterator;
118 
121 
123  MSExperiment(const MSExperiment & source);
124 
127 
130 
133 
136 
138  ~MSExperiment() override;
139 
141  bool operator==(const MSExperiment & rhs) const;
142 
144  bool operator!=(const MSExperiment & rhs) const;
145 
147  inline Size size() const
148  {
149  return spectra_.size();
150  }
151 
153  inline void resize(Size n)
154  {
155  spectra_.resize(n);
156  }
157 
159  inline bool empty() const
160  {
161  return spectra_.empty();
162  }
163 
165  inline void reserve(Size n)
166  {
167  spectra_.reserve(n);
168  }
169 
172  {
173  return spectra_[n];
174  }
175 
177  inline const SpectrumType& operator[](Size n) const
178  {
179  return spectra_[n];
180  }
181 
182  inline Iterator begin()
183  {
184  return spectra_.begin();
185  }
186 
187  inline ConstIterator begin() const
188  {
189  return spectra_.begin();
190  }
191 
192  inline Iterator end()
193  {
194  return spectra_.end();
195  }
196 
197  inline ConstIterator end() const
198  {
199  return spectra_.end();
200  }
202 
203  // Aliases / chromatograms
206 
208 
209 
215  template <class Container>
216  void get2DData(Container& cont) const
217  {
218  for (typename Base::const_iterator spec = spectra_.begin(); spec != spectra_.end(); ++spec)
219  {
220  if (spec->getMSLevel() != 1)
221  {
222  continue;
223  }
224  typename Container::value_type s; // explicit object here, since instantiation within push_back() fails on VS<12
225  for (typename SpectrumType::const_iterator it = spec->begin(); it != spec->end(); ++it)
226  {
227  cont.push_back(s);
228  cont.back().setRT(spec->getRT());
229  cont.back().setMZ(it->getMZ());
230  cont.back().setIntensity(it->getIntensity());
231  }
232  }
233  }
234 
246  template <class Container>
247  void set2DData(const Container& container)
248  {
249  set2DData<false, Container>(container);
250  }
251 
266  template <class Container>
267  void set2DData(const Container& container, const StringList& store_metadata_names)
268  {
269  // clean up the container first
270  clear(true);
271  SpectrumType* spectrum = nullptr;
272  typename PeakType::CoordinateType current_rt = -std::numeric_limits<typename PeakType::CoordinateType>::max();
273  for (typename Container::const_iterator iter = container.begin(); iter != container.end(); ++iter)
274  {
275  // check if the retention time has changed
276  if (current_rt != iter->getRT() || spectrum == nullptr)
277  {
278  // append new spectrum
279  if (current_rt > iter->getRT())
280  {
281  throw Exception::Precondition(__FILE__, __LINE__, OPENMS_PRETTY_FUNCTION, "Input container is not sorted!");
282  }
283  current_rt = iter->getRT();
284  spectrum = createSpec_(current_rt, store_metadata_names);
285  }
286 
287  // add either data point or mass traces (depending on template argument value)
288  ContainerAdd_<typename Container::value_type, false>::addData_(spectrum, &(*iter), store_metadata_names);
289  }
290  }
291 
309  template <bool add_mass_traces, class Container>
310  void set2DData(const Container& container)
311  {
312  // clean up the container first
313  clear(true);
314  SpectrumType* spectrum = nullptr;
315  typename PeakType::CoordinateType current_rt = -std::numeric_limits<typename PeakType::CoordinateType>::max();
316  for (typename Container::const_iterator iter = container.begin(); iter != container.end(); ++iter)
317  {
318  // check if the retention time has changed
319  if (current_rt != iter->getRT() || spectrum == nullptr)
320  {
321  // append new spectrum
322  if (current_rt > iter->getRT())
323  {
324  throw Exception::Precondition(__FILE__, __LINE__, OPENMS_PRETTY_FUNCTION, "Input container is not sorted!");
325  }
326  current_rt = iter->getRT();
327  spectrum = createSpec_(current_rt);
328  }
329 
330  // add either data point or mass traces (depending on template argument value)
332  }
333  }
334 
336 
337 
339 
340  AreaIterator areaBegin(CoordinateType min_rt, CoordinateType max_rt, CoordinateType min_mz, CoordinateType max_mz, UInt ms_level = 1);
342 
344  AreaIterator areaBegin(const RangeManagerType& range, UInt ms_level = 1);
345 
348 
351 
353  ConstAreaIterator areaBeginConst(const RangeManagerType& range, UInt ms_level = 1) const;
354 
357 
358  // for fast pyOpenMS access to MS1 peak data in format: [rt, [mz, intensity]]
360  std::vector<float>& rt,
361  std::vector<std::vector<float>>& mz,
362  std::vector<std::vector<float>>& intensity) const
363  {
364  float t = -1.0;
365  for (auto it = areaBeginConst(min_rt, max_rt, min_mz, max_mz); it != areaEndConst(); ++it)
366  {
367  if (it.getRT() != t)
368  {
369  t = (float)it.getRT();
370  rt.push_back(t);
371  }
372  mz.back().push_back((float)it->getMZ());
373  intensity.back().push_back(it->getIntensity());
374  }
375  }
376 
377  // for fast pyOpenMS access to MS1 peak data in format: [rt, [mz, intensity, ion mobility]]
379  std::vector<float>& rt,
380  std::vector<std::vector<float>>& mz,
381  std::vector<std::vector<float>>& intensity,
382  std::vector<std::vector<float>>& ion_mobility) const
383  {
384  float t = -1.0;
385  for (auto it = areaBeginConst(min_rt, max_rt, min_mz, max_mz); it != areaEndConst(); ++it)
386  {
387  if (it.getRT() != t)
388  {
389  t = (float)it.getRT();
390  rt.push_back(t);
391  }
392 
393  const MSSpectrum& spectrum = it.getSpectrum();
394  bool has_IM = spectrum.containsIMData();
395  double peak_IM{-1.0};
396  if (has_IM)
397  {
398  const auto& im_data = spectrum.getIMData();
399  const Size peak_index = it.getPeakIndex().peak;
400  if (spectrum.getFloatDataArrays()[im_data.first].size() == spectrum.size())
401  {
402  peak_IM = spectrum.getFloatDataArrays()[im_data.first][peak_index];
403  }
404  }
405  ion_mobility.back().push_back(peak_IM);
406  mz.back().push_back((float)it->getMZ());
407  intensity.back().push_back(it->getIntensity());
408  }
409  }
410 
411  // for fast pyOpenMS access to MS1 peak data in format: [rt, mz, intensity]
413  CoordinateType min_rt,
414  CoordinateType max_rt,
415  CoordinateType min_mz,
416  CoordinateType max_mz,
417  std::vector<float>& rt,
418  std::vector<float>& mz,
419  std::vector<float>& intensity) const
420  {
421  for (auto it = areaBeginConst(min_rt, max_rt, min_mz, max_mz); it != areaEndConst(); ++it)
422  {
423  rt.push_back((float)it.getRT());
424  mz.push_back((float)it->getMZ());
425  intensity.push_back(it->getIntensity());
426  }
427  }
428 
429  // for fast pyOpenMS access to MS1 peak data in format: [rt, mz, intensity, ion mobility]
431  CoordinateType min_rt,
432  CoordinateType max_rt,
433  CoordinateType min_mz,
434  CoordinateType max_mz,
435  std::vector<float>& rt,
436  std::vector<float>& mz,
437  std::vector<float>& intensity,
438  std::vector<float>& ion_mobility) const
439  {
440  for (auto it = areaBeginConst(min_rt, max_rt, min_mz, max_mz); it != areaEndConst(); ++it)
441  {
442  rt.push_back((float)it.getRT());
443  mz.push_back((float)it->getMZ());
444  intensity.push_back(it->getIntensity());
445 
446  const MSSpectrum& spectrum = it.getSpectrum();
447  bool has_IM = spectrum.containsIMData();
448  float peak_IM = -1.0;
449  if (has_IM)
450  {
451  const auto& im_data = spectrum.getIMData();
452  const Size& peak_index = it.getPeakIndex().peak;
453  if (spectrum.getFloatDataArrays()[im_data.first].size() == spectrum.size())
454  {
455  peak_IM = spectrum.getFloatDataArrays()[im_data.first][peak_index];
456  }
457  }
458  ion_mobility.push_back(peak_IM);
459  }
460  }
461 
470 
479 
486 
493 
494 
503 
513 
520  // Docu in base class
521  void updateRanges() override;
522 
528  void updateRanges(Int ms_level);
529 
532 
535 
538 
541 
543  UInt64 getSize() const;
544 
546  const std::vector<UInt>& getMSLevels() const;
547 
549 
553 
555  void setSqlRunID(UInt64 id);
556 
559 
564  void sortSpectra(bool sort_mz = true);
565 
571  void sortChromatograms(bool sort_rt = true);
572 
578  bool isSorted(bool check_mz = true) const;
579 
581 
583  void reset();
584 
591 
594 
597 
599  void getPrimaryMSRunPath(StringList& toFill) const;
600 
607 
613  int getPrecursorSpectrum(int zero_based_index) const;
614 
616  void swap(MSExperiment& from);
617 
619  void setSpectra(const std::vector<MSSpectrum>& spectra);
620  void setSpectra(std::vector<MSSpectrum>&& spectra);
621 
623  void addSpectrum(const MSSpectrum& spectrum);
624  void addSpectrum(MSSpectrum&& spectrum);
625 
627  const std::vector<MSSpectrum>& getSpectra() const;
628 
630  std::vector<MSSpectrum>& getSpectra();
631 
633  void setChromatograms(const std::vector<MSChromatogram>& chromatograms);
634  void setChromatograms(std::vector<MSChromatogram>&& chromatograms);
635 
637  void addChromatogram(const MSChromatogram& chromatogram);
639 
641  const std::vector<MSChromatogram>& getChromatograms() const;
642 
644  std::vector<MSChromatogram>& getChromatograms();
645 
647 
648  MSChromatogram& getChromatogram(Size id);
650 
653 
656 
660 
671  const MSChromatogram calculateTIC(float rt_bin_size = 0, UInt ms_level = 1) const;
672 
678  void clear(bool clear_meta_data);
679 
681  bool containsScanOfLevel(size_t ms_level) const;
682 
684  bool hasZeroIntensities(size_t ms_level) const;
685 
688 
690  bool isIMFrame() const;
691 
692  protected:
694  std::vector<UInt> ms_levels_;
698  std::vector<MSChromatogram > chromatograms_;
700  std::vector<SpectrumType> spectra_;
701 
702 private:
703 
705  template<typename ContainerValueType, bool addMassTraces>
707  {
708  static void addData_(SpectrumType* spectrum, const ContainerValueType* item);
709  static void addData_(SpectrumType* spectrum, const ContainerValueType* item, const StringList& store_metadata_names);
710  };
711 
712  template<typename ContainerValueType>
713  struct ContainerAdd_<ContainerValueType, false>
714  {
716  static void addData_(SpectrumType* spectrum, const ContainerValueType* item)
717  {
718  // create temporary peak and insert it into spectrum
719  spectrum->insert(spectrum->end(), PeakType());
720  spectrum->back().setIntensity(item->getIntensity());
721  spectrum->back().setPosition(item->getMZ());
722  }
724  static void addData_(SpectrumType* spectrum, const ContainerValueType* item, const StringList& store_metadata_names)
725  {
726  addData_(spectrum, item);
727  for (StringList::const_iterator itm = store_metadata_names.begin(); itm != store_metadata_names.end(); ++itm)
728  {
729  float val = std::numeric_limits<float>::quiet_NaN();
730  if (item->metaValueExists(*itm)) val = item->getMetaValue(*itm);
731  spectrum->getFloatDataArrays()[itm - store_metadata_names.begin()].push_back(val);
732  }
733  }
734  };
735 
736  template<typename ContainerValueType>
737  struct ContainerAdd_<ContainerValueType, true>
738  {
740  static void addData_(SpectrumType* spectrum, const ContainerValueType* item)
741  {
742  if (item->metaValueExists("num_of_masstraces"))
743  {
744  Size mts = item->getMetaValue("num_of_masstraces");
745  int charge = (item->getCharge()==0 ? 1 : item->getCharge()); // set to 1 if charge is 0, otherwise div/0 below
746  for (Size i = 0; i < mts; ++i)
747  {
748  String meta_name = String("masstrace_intensity_") + i;
749  if (!item->metaValueExists(meta_name))
750  {
751  throw Exception::Precondition(__FILE__, __LINE__, OPENMS_PRETTY_FUNCTION, String("Meta value '") + meta_name + "' expected but not found in container.");
752  }
753  ContainerValueType p;
754  p.setIntensity(item->getMetaValue(meta_name));
755  p.setPosition(item->getMZ() + Constants::C13C12_MASSDIFF_U / charge * i);
757  }
758  }
760  }
761  };
762 
763  /*
764  @brief Append a spectrum to current MSExperiment
765 
766  @param rt RT of new spectrum
767  @return Pointer to newly created spectrum
768  */
770 
771  /*
772  @brief Append a spectrum including floatdata arrays to current MSExperiment
773 
774  @param rt RT of new spectrum
775  @param metadata_names Names of floatdata arrays attached to this spectrum
776  @return Pointer to newly created spectrum
777  */
779 
780  };
781 
783  OPENMS_DLLAPI std::ostream& operator<<(std::ostream& os, const MSExperiment& exp);
784 
785 } // namespace OpenMS
786 
788 
789 
A 1-dimensional raw data point or peak for chromatograms.
Definition: ChromatogramPeak.h:54
Precondition failed exception.
Definition: Exception.h:159
Description of the experimental settings.
Definition: ExperimentalSettings.h:62
Forward iterator for an area of peaks in an experiment.
Definition: AreaIterator.h:62
The representation of a chromatogram.
Definition: MSChromatogram.h:57
In-Memory representation of a mass spectrometry run.
Definition: MSExperiment.h:72
const std::vector< UInt > & getMSLevels() const
returns an array of MS levels
const ExperimentalSettings & getExperimentalSettings() const
returns the meta information of this experiment (const access)
MSExperiment(MSExperiment &&)=default
Move constructor.
ConstIterator IMBegin(CoordinateType im) const
Fast search for spectrum range begin.
std::vector< SpectrumType > spectra_
spectra
Definition: MSExperiment.h:700
const std::vector< MSChromatogram > & getChromatograms() const
returns the chromatogram list
std::vector< SpectrumType > Base
STL base class type.
Definition: MSExperiment.h:97
void setChromatograms(std::vector< MSChromatogram > &&chromatograms)
Base::iterator iterator
Definition: MSExperiment.h:116
bool containsScanOfLevel(size_t ms_level) const
returns true if at least one of the spectra has the specified level
ConstAreaIterator areaBeginConst(CoordinateType min_rt, CoordinateType max_rt, CoordinateType min_mz, CoordinateType max_mz, UInt ms_level=1) const
Returns a non-mutable area iterator for area.
~MSExperiment() override
D'tor.
PeakType::CoordinateType CoordinateType
Coordinate type of peak positions.
Definition: MSExperiment.h:85
void get2DData(Container &cont) const
Reads out a 2D Spectrum.
Definition: MSExperiment.h:216
void swap(MSExperiment &from)
Swaps the content of this map with the content of from.
MSChromatogram ChromatogramType
Chromatogram type.
Definition: MSExperiment.h:95
void addSpectrum(const MSSpectrum &spectrum)
adds a spectrum to the list
PeakType::IntensityType IntensityType
Intensity type of peaks.
Definition: MSExperiment.h:87
Iterator begin()
Definition: MSExperiment.h:182
void set2DData(const Container &container, const StringList &store_metadata_names)
Assignment of a data container with RT and MZ to an MSExperiment.
Definition: MSExperiment.h:267
std::vector< SpectrumType >::iterator Iterator
Mutable iterator.
Definition: MSExperiment.h:103
bool clearMetaDataArrays()
Clears the meta data arrays of all contained spectra (float, integer and string arrays)
SpectrumType * createSpec_(PeakType::CoordinateType rt)
ConstAreaIterator areaBeginConst(const RangeManagerType &range, UInt ms_level=1) const
Returns a non-mutable area iterator for all peaks in range. If a dimension is empty(),...
ConstIterator RTBegin(CoordinateType rt) const
Fast search for spectrum range begin.
Size getNrSpectra() const
get the total number of spectra available
UInt64 getSize() const
returns the total number of peaks
MSExperiment & operator=(MSExperiment &&) &=default
Move assignment operator.
ConstIterator RTEnd(CoordinateType rt) const
Fast search for spectrum range end (returns the past-the-end iterator)
RangeManagerContainer< RangeRT, RangeMZ, RangeIntensity, RangeMobility > RangeManagerContainerType
RangeManager type.
Definition: MSExperiment.h:91
void addChromatogram(MSChromatogram &&chrom)
ExperimentalSettings & getExperimentalSettings()
returns the meta information of this experiment (mutable access)
void reserveSpaceChromatograms(Size s)
void get2DPeakData(CoordinateType min_rt, CoordinateType max_rt, CoordinateType min_mz, CoordinateType max_mz, std::vector< float > &rt, std::vector< std::vector< float >> &mz, std::vector< std::vector< float >> &intensity, std::vector< std::vector< float >> &ion_mobility) const
Definition: MSExperiment.h:378
SpectrumType * createSpec_(PeakType::CoordinateType rt, const StringList &metadata_names)
ChromatogramPeakT ChromatogramPeakType
Chromatogram peak type.
Definition: MSExperiment.h:83
MSSpectrum & getSpectrum(Size id)
returns a single spectrum
void get2DPeakDataIon(CoordinateType min_rt, CoordinateType max_rt, CoordinateType min_mz, CoordinateType max_mz, std::vector< float > &rt, std::vector< float > &mz, std::vector< float > &intensity, std::vector< float > &ion_mobility) const
Definition: MSExperiment.h:430
CoordinateType getMinMZ() const
returns the minimal m/z value
AreaIterator areaBegin(const RangeManagerType &range, UInt ms_level=1)
Returns a area iterator for all peaks in range. If a dimension is empty(), it is ignored (i....
Iterator RTEnd(CoordinateType rt)
Fast search for spectrum range end (returns the past-the-end iterator)
MSExperiment & operator=(const MSExperiment &source)
Assignment operator.
MSSpectrum SpectrumType
Spectrum Type.
Definition: MSExperiment.h:93
bool empty() const
Are there any spectra (does not consider chromatograms)
Definition: MSExperiment.h:159
Size getNrChromatograms() const
get the total number of chromatograms available
ConstIterator end() const
Definition: MSExperiment.h:197
CoordinateType getMaxRT() const
returns the maximal retention time value
void get2DPeakData(CoordinateType min_rt, CoordinateType max_rt, CoordinateType min_mz, CoordinateType max_mz, std::vector< float > &rt, std::vector< std::vector< float >> &mz, std::vector< std::vector< float >> &intensity) const
Definition: MSExperiment.h:359
Base::value_type value_type
Definition: MSExperiment.h:115
MSExperiment()
Constructor.
bool operator!=(const MSExperiment &rhs) const
Equality operator.
CoordinateType getMaxMZ() const
returns the maximal m/z value
Peak1D PeakT
Definition: MSExperiment.h:75
ConstAreaIterator areaEndConst() const
Returns an non-mutable invalid area iterator marking the end of an area.
void set2DData(const Container &container)
Assignment of a data container with RT and MZ to an MSExperiment.
Definition: MSExperiment.h:247
void setSpectra(std::vector< MSSpectrum > &&spectra)
void getPrimaryMSRunPath(StringList &toFill) const
get the file path to the first MS run
std::vector< UInt > ms_levels_
MS levels of the data.
Definition: MSExperiment.h:694
void resize(Size n)
Resize to n spectra.
Definition: MSExperiment.h:153
std::vector< MSChromatogram > & getChromatograms()
returns the chromatogram list (mutable)
void setSpectra(const std::vector< MSSpectrum > &spectra)
sets the spectrum list
void updateRanges(Int ms_level)
Updates the m/z, intensity, retention time and MS level ranges of all spectra with a certain ms level...
void get2DPeakData(CoordinateType min_rt, CoordinateType max_rt, CoordinateType min_mz, CoordinateType max_mz, std::vector< float > &rt, std::vector< float > &mz, std::vector< float > &intensity) const
Definition: MSExperiment.h:412
void sortChromatograms(bool sort_rt=true)
Sorts the data points of the chromatograms by m/z.
Iterator RTBegin(CoordinateType rt)
Fast search for spectrum range begin.
Internal::AreaIterator< const PeakT, const PeakT &, const PeakT *, ConstIterator, SpectrumType::ConstIterator > ConstAreaIterator
Immutable area iterator type (for traversal of a rectangular subset of the peaks)
Definition: MSExperiment.h:109
void setChromatograms(const std::vector< MSChromatogram > &chromatograms)
sets the chromatogram list
Internal::AreaIterator< PeakT, PeakT &, PeakT *, Iterator, SpectrumType::Iterator > AreaIterator
Mutable area iterator type (for traversal of a rectangular subset of the peaks)
Definition: MSExperiment.h:107
CoordinateType getMinRT() const
returns the minimal retention time value
const SpectrumType & operator[](Size n) const
Random access to n'th spectrum.
Definition: MSExperiment.h:177
const MSChromatogram calculateTIC(float rt_bin_size=0, UInt ms_level=1) const
Computes the total ion chromatogram (TIC) for a given MS level (use ms_level = 0 for all levels).
const std::vector< MSSpectrum > & getSpectra() const
returns the spectrum list
Iterator end()
Definition: MSExperiment.h:192
UInt64 total_size_
Number of all data points.
Definition: MSExperiment.h:696
bool isSorted(bool check_mz=true) const
Checks if all spectra are sorted with respect to ascending RT.
MSExperiment(const MSExperiment &source)
Copy constructor.
RangeManager< RangeRT, RangeMZ, RangeIntensity, RangeMobility > RangeManagerType
RangeManager type.
Definition: MSExperiment.h:89
std::vector< MSSpectrum > & getSpectra()
returns the spectrum list (mutable)
void set2DData(const Container &container)
Assignment of a data container with RT and MZ to an MSExperiment.
Definition: MSExperiment.h:310
ChromatogramPeak ChromatogramPeakT
Definition: MSExperiment.h:76
void sortSpectra(bool sort_mz=true)
Sorts the data points by retention time.
Size size() const
The number of spectra.
Definition: MSExperiment.h:147
void reset()
Clear all internal data (spectra, ranges, metadata)
ConstIterator begin() const
Definition: MSExperiment.h:187
void addSpectrum(MSSpectrum &&spectrum)
void reserveSpaceSpectra(Size s)
bool hasZeroIntensities(size_t ms_level) const
returns true if any MS spectra of trthe specified level contain at least one peak with intensity of 0...
bool operator==(const MSExperiment &rhs) const
Equality operator.
ConstIterator IMEnd(CoordinateType im) const
Fast search for spectrum range end (returns the past-the-end iterator)
ConstIterator getPrecursorSpectrum(ConstIterator iterator) const
Returns the precursor spectrum of the scan pointed to by iterator.
void reserve(Size n)
Reserve space for n spectra.
Definition: MSExperiment.h:165
Base::const_iterator const_iterator
Definition: MSExperiment.h:117
void updateRanges() override
void setSqlRunID(UInt64 id)
sets the run-ID which is used when storing an sqMass file
MSExperiment & operator=(const ExperimentalSettings &source)
Assignment operator.
UInt64 getSqlRunID() const
void addChromatogram(const MSChromatogram &chromatogram)
adds a chromatogram to the list
std::vector< SpectrumType >::const_iterator ConstIterator
Non-mutable iterator.
Definition: MSExperiment.h:105
bool hasPeptideIdentifications() const
do any of the spectra have a PeptideID?
void clear(bool clear_meta_data)
Clears all data and meta data.
SpectrumType & operator[](Size n)
Random access to n'th spectrum.
Definition: MSExperiment.h:171
int getPrecursorSpectrum(int zero_based_index) const
Returns the index of the precursor spectrum for spectrum at index zero_based_index.
std::vector< MSChromatogram > chromatograms_
chromatograms
Definition: MSExperiment.h:698
AreaIterator areaEnd()
Returns an invalid area iterator marking the end of an area.
bool isIMFrame() const
Are all MSSpectra in this experiment part of an IM Frame? I.e. they all have the same RT,...
The representation of a 1D spectrum.
Definition: MSSpectrum.h:70
bool containsIMData() const
std::pair< Size, DriftTimeUnit > getIMData() const
Get the Ion mobility data array's index and its associated unit.
const FloatDataArrays & getFloatDataArrays() const
Returns a const reference to the float meta data arrays.
A 1-dimensional raw data point or peak.
Definition: Peak1D.h:54
double CoordinateType
Coordinate type.
Definition: Peak1D.h:66
float IntensityType
Intensity type.
Definition: Peak1D.h:62
Definition: RangeManager.h:898
A more convenient string class.
Definition: String.h:60
OPENMS_UINT64_TYPE UInt64
Unsigned integer type (64bit)
Definition: Types.h:77
int Int
Signed integer type.
Definition: Types.h:102
unsigned int UInt
Unsigned integer type.
Definition: Types.h:94
size_t Size
Size type e.g. used as variable which can hold result of size()
Definition: Types.h:127
std::vector< String > StringList
Vector of String.
Definition: ListUtils.h:70
const double C13C12_MASSDIFF_U
Definition: Constants.h:121
Main OpenMS namespace.
Definition: FeatureDeconvolution.h:48
Peak2D PeakType
Definition: MassTrace.h:47
std::ostream & operator<<(std::ostream &os, const AccurateMassSearchResult &amsr)
static void addData_(SpectrumType *spectrum, const ContainerValueType *item)
general method for adding data points
Definition: MSExperiment.h:716
static void addData_(SpectrumType *spectrum, const ContainerValueType *item, const StringList &store_metadata_names)
general method for adding data points, including metadata arrays (populated from metainfointerface)
Definition: MSExperiment.h:724
static void addData_(SpectrumType *spectrum, const ContainerValueType *item)
specialization for adding feature mass traces (does not support metadata_names currently)
Definition: MSExperiment.h:740
Helper class to add either general data points in set2DData or use mass traces from meta values.
Definition: MSExperiment.h:707
static void addData_(SpectrumType *spectrum, const ContainerValueType *item)
static void addData_(SpectrumType *spectrum, const ContainerValueType *item, const StringList &store_metadata_names)