OpenMS  2.8.0
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-2021.
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 :
71  public RangeManagerContainer<RangeRT, RangeMZ, RangeIntensity>,
73  {
74 
75 public:
76  typedef Peak1D PeakT;
78 
80 
81  typedef PeakT PeakType;
98  typedef std::vector<SpectrumType> Base;
100 
102 
103  typedef std::vector<SpectrumType>::iterator Iterator;
106  typedef std::vector<SpectrumType>::const_iterator ConstIterator;
112 
114  // Attention: these refer to the spectra vector only!
116  typedef Base::value_type value_type;
117  typedef Base::iterator iterator;
118  typedef Base::const_iterator const_iterator;
119 
120  inline Size size() const
121  {
122  return spectra_.size();
123  }
124 
125  inline void resize(Size s)
126  {
127  spectra_.resize(s);
128  }
129 
130  inline bool empty() const
131  {
132  return spectra_.empty();
133  }
134 
135  inline void reserve(Size s)
136  {
137  spectra_.reserve(s);
138  }
139 
140  inline SpectrumType& operator[] (Size n)
141  {
142  return spectra_[n];
143  }
144 
145  inline const SpectrumType& operator[] (Size n) const
146  {
147  return spectra_[n];
148  }
149 
150  inline Iterator begin()
151  {
152  return spectra_.begin();
153  }
154 
155  inline ConstIterator begin() const
156  {
157  return spectra_.begin();
158  }
159 
160  inline Iterator end()
161  {
162  return spectra_.end();
163  }
164 
165  inline ConstIterator end() const
166  {
167  return spectra_.end();
168  }
170 
171  // Aliases / chromatograms
174 
177 
179  MSExperiment(const MSExperiment & source);
180 
183 
186 
189 
192 
194  bool operator==(const MSExperiment & rhs) const;
195 
197  bool operator!=(const MSExperiment & rhs) const;
198 
200 
201 
207  template <class Container>
208  void get2DData(Container& cont) const
209  {
210  for (typename Base::const_iterator spec = spectra_.begin(); spec != spectra_.end(); ++spec)
211  {
212  if (spec->getMSLevel() != 1)
213  {
214  continue;
215  }
216  typename Container::value_type s; // explicit object here, since instantiation within push_back() fails on VS<12
217  for (typename SpectrumType::const_iterator it = spec->begin(); it != spec->end(); ++it)
218  {
219  cont.push_back(s);
220  cont.back().setRT(spec->getRT());
221  cont.back().setMZ(it->getMZ());
222  cont.back().setIntensity(it->getIntensity());
223  }
224  }
225  }
226 
238  template <class Container>
239  void set2DData(const Container& container)
240  {
241  set2DData<false, Container>(container);
242  }
243 
258  template <class Container>
259  void set2DData(const Container& container, const StringList& store_metadata_names)
260  {
261  // clean up the container first
262  clear(true);
263  SpectrumType* spectrum = nullptr;
264  typename PeakType::CoordinateType current_rt = -std::numeric_limits<typename PeakType::CoordinateType>::max();
265  for (typename Container::const_iterator iter = container.begin(); iter != container.end(); ++iter)
266  {
267  // check if the retention time has changed
268  if (current_rt != iter->getRT() || spectrum == nullptr)
269  {
270  // append new spectrum
271  if (current_rt > iter->getRT())
272  {
273  throw Exception::Precondition(__FILE__, __LINE__, OPENMS_PRETTY_FUNCTION, "Input container is not sorted!");
274  }
275  current_rt = iter->getRT();
276  spectrum = createSpec_(current_rt, store_metadata_names);
277  }
278 
279  // add either data point or mass traces (depending on template argument value)
280  ContainerAdd_<typename Container::value_type, false>::addData_(spectrum, &(*iter), store_metadata_names);
281  }
282  }
283 
301  template <bool add_mass_traces, class Container>
302  void set2DData(const Container& container)
303  {
304  // clean up the container first
305  clear(true);
306  SpectrumType* spectrum = nullptr;
307  typename PeakType::CoordinateType current_rt = -std::numeric_limits<typename PeakType::CoordinateType>::max();
308  for (typename Container::const_iterator iter = container.begin(); iter != container.end(); ++iter)
309  {
310  // check if the retention time has changed
311  if (current_rt != iter->getRT() || spectrum == nullptr)
312  {
313  // append new spectrum
314  if (current_rt > iter->getRT())
315  {
316  throw Exception::Precondition(__FILE__, __LINE__, OPENMS_PRETTY_FUNCTION, "Input container is not sorted!");
317  }
318  current_rt = iter->getRT();
319  spectrum = createSpec_(current_rt);
320  }
321 
322  // add either data point or mass traces (depending on template argument value)
324  }
325  }
326 
328 
329 
331 
332  AreaIterator areaBegin(CoordinateType min_rt, CoordinateType max_rt, CoordinateType min_mz, CoordinateType max_mz);
334 
337 
340 
343 
344  // for fast pyOpenMS access to MS1 peak data in format: [rt, [mz, intensity]]
346  std::vector<float>& rt,
347  std::vector<std::vector<float>>& mz,
348  std::vector<std::vector<float>>& intensity) const
349  {
350  float t = -1.0;
351  for (auto it = areaBeginConst(min_rt, max_rt, min_mz, max_mz); it != areaEndConst(); ++it)
352  {
353  if (it.getRT() != t)
354  {
355  t = it.getRT();
356  rt.emplace_back(t);
357  mz.resize(mz.size() + 1);
358  rt.resize(rt.size() + 1);
359  intensity.resize(intensity.size() + 1);
360  }
361  mz.back().emplace_back(it->getMZ());
362  intensity.back().emplace_back(it->getIntensity());
363  }
364  }
365 
366  // for fast pyOpenMS access to MS1 peak data in format: [rt, mz, intensity]
368  std::vector<float>& rt,
369  std::vector<float>& mz,
370  std::vector<float>& intensity) const
371  {
372  for (auto it = areaBeginConst(min_rt, max_rt, min_mz, max_mz); it != areaEndConst(); ++it)
373  {
374  rt.emplace_back(it.getRT());
375  mz.emplace_back(it->getMZ());
376  intensity.emplace_back(it->getIntensity());
377  }
378  }
379 
380 
389 
398 
405 
412 
414 
421  // Docu in base class
422  void updateRanges() override;
423 
429  void updateRanges(Int ms_level);
430 
433 
436 
439 
442 
444  UInt64 getSize() const;
445 
447  const std::vector<UInt>& getMSLevels() const;
448 
450 
454 
456  void setSqlRunID(UInt64 id);
457 
460 
465  void sortSpectra(bool sort_mz = true);
466 
472  void sortChromatograms(bool sort_rt = true);
473 
479  bool isSorted(bool check_mz = true) const;
480 
482 
484  void reset();
485 
492 
495 
498 
500  void getPrimaryMSRunPath(StringList& toFill) const;
501 
508 
514  int getPrecursorSpectrum(int zero_based_index) const;
515 
517  void swap(MSExperiment& from);
518 
520  void setSpectra(const std::vector<MSSpectrum>& spectra);
521  void setSpectra(std::vector<MSSpectrum>&& spectra);
522 
524  void addSpectrum(const MSSpectrum& spectrum);
525  void addSpectrum(MSSpectrum&& spectrum);
526 
528  const std::vector<MSSpectrum>& getSpectra() const;
529 
531  std::vector<MSSpectrum>& getSpectra();
532 
534  void setChromatograms(const std::vector<MSChromatogram>& chromatograms);
535  void setChromatograms(std::vector<MSChromatogram>&& chromatograms);
536 
538  void addChromatogram(const MSChromatogram& chromatogram);
540 
542  const std::vector<MSChromatogram>& getChromatograms() const;
543 
545  std::vector<MSChromatogram>& getChromatograms();
546 
548 
549  MSChromatogram& getChromatogram(Size id);
551 
554 
557 
561 
572  const MSChromatogram calculateTIC(float rt_bin_size = 0, UInt ms_level = 1) const;
573 
579  void clear(bool clear_meta_data);
580 
582  bool containsScanOfLevel(size_t ms_level) const;
583 
585  bool hasZeroIntensities(size_t ms_level) const;
586 
589 
590  protected:
592  std::vector<UInt> ms_levels_;
596  std::vector<MSChromatogram > chromatograms_;
598  std::vector<SpectrumType> spectra_;
599 
600 private:
601 
603  template<typename ContainerValueType, bool addMassTraces>
605  {
606  static void addData_(SpectrumType* spectrum, const ContainerValueType* item);
607  static void addData_(SpectrumType* spectrum, const ContainerValueType* item, const StringList& store_metadata_names);
608  };
609 
610  template<typename ContainerValueType>
611  struct ContainerAdd_<ContainerValueType, false>
612  {
614  static void addData_(SpectrumType* spectrum, const ContainerValueType* item)
615  {
616  // create temporary peak and insert it into spectrum
617  spectrum->insert(spectrum->end(), PeakType());
618  spectrum->back().setIntensity(item->getIntensity());
619  spectrum->back().setPosition(item->getMZ());
620  }
622  static void addData_(SpectrumType* spectrum, const ContainerValueType* item, const StringList& store_metadata_names)
623  {
624  addData_(spectrum, item);
625  for (StringList::const_iterator itm = store_metadata_names.begin(); itm != store_metadata_names.end(); ++itm)
626  {
627  float val = std::numeric_limits<float>::quiet_NaN();
628  if (item->metaValueExists(*itm)) val = item->getMetaValue(*itm);
629  spectrum->getFloatDataArrays()[itm - store_metadata_names.begin()].push_back(val);
630  }
631  }
632  };
633 
634  template<typename ContainerValueType>
635  struct ContainerAdd_<ContainerValueType, true>
636  {
638  static void addData_(SpectrumType* spectrum, const ContainerValueType* item)
639  {
640  if (item->metaValueExists("num_of_masstraces"))
641  {
642  Size mts = item->getMetaValue("num_of_masstraces");
643  int charge = (item->getCharge()==0 ? 1 : item->getCharge()); // set to 1 if charge is 0, otherwise div/0 below
644  for (Size i = 0; i < mts; ++i)
645  {
646  String meta_name = String("masstrace_intensity_") + i;
647  if (!item->metaValueExists(meta_name))
648  {
649  throw Exception::Precondition(__FILE__, __LINE__, OPENMS_PRETTY_FUNCTION, String("Meta value '") + meta_name + "' expected but not found in container.");
650  }
651  ContainerValueType p;
652  p.setIntensity(item->getMetaValue(meta_name));
653  p.setPosition(item->getMZ() + Constants::C13C12_MASSDIFF_U / charge * i);
655  }
656  }
658  }
659  };
660 
661  /*
662  @brief Append a spectrum to current MSExperiment
663 
664  @param rt RT of new spectrum
665  @return Pointer to newly created spectrum
666  */
668 
669  /*
670  @brief Append a spectrum including floatdata arrays to current MSExperiment
671 
672  @param rt RT of new spectrum
673  @param metadata_names Names of floatdata arrays attached to this spectrum
674  @return Pointer to newly created spectrum
675  */
677 
678  };
679 
681  OPENMS_DLLAPI std::ostream& operator<<(std::ostream& os, const MSExperiment& exp);
682 
683 } // namespace OpenMS
684 
686 
687 
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:59
The representation of a chromatogram.
Definition: MSChromatogram.h:57
In-Memory representation of a mass spectrometry run.
Definition: MSExperiment.h:73
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.
std::vector< SpectrumType > spectra_
spectra
Definition: MSExperiment.h:598
const std::vector< MSChromatogram > & getChromatograms() const
returns the chromatogram list
std::vector< SpectrumType > Base
STL base class type.
Definition: MSExperiment.h:98
void setChromatograms(std::vector< MSChromatogram > &&chromatograms)
Base::iterator iterator
Definition: MSExperiment.h:117
bool containsScanOfLevel(size_t ms_level) const
returns true if at least one of the spectra has the specified level
PeakType::CoordinateType CoordinateType
Coordinate type of peak positions.
Definition: MSExperiment.h:86
void get2DData(Container &cont) const
Reads out a 2D Spectrum.
Definition: MSExperiment.h:208
void swap(MSExperiment &from)
Swaps the content of this map with the content of from.
MSChromatogram ChromatogramType
Chromatogram type.
Definition: MSExperiment.h:96
void addSpectrum(const MSSpectrum &spectrum)
adds a spectrum to the list
PeakType::IntensityType IntensityType
Intensity type of peaks.
Definition: MSExperiment.h:88
Iterator begin()
Definition: MSExperiment.h:150
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:259
RangeManager< RangeRT, RangeMZ, RangeIntensity > RangeManagerType
RangeManager type.
Definition: MSExperiment.h:90
std::vector< SpectrumType >::iterator Iterator
Mutable iterator.
Definition: MSExperiment.h:104
bool clearMetaDataArrays()
Clears the meta data arrays of all contained spectra (float, integer and string arrays)
SpectrumType * createSpec_(PeakType::CoordinateType rt)
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)
void addChromatogram(MSChromatogram &&chrom)
ExperimentalSettings & getExperimentalSettings()
returns the meta information of this experiment (mutable access)
void reserveSpaceChromatograms(Size s)
SpectrumType * createSpec_(PeakType::CoordinateType rt, const StringList &metadata_names)
ChromatogramPeakT ChromatogramPeakType
Chromatogram peak type.
Definition: MSExperiment.h:84
MSSpectrum & getSpectrum(Size id)
returns a single spectrum
CoordinateType getMinMZ() const
returns the minimal m/z value
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:94
bool empty() const
Definition: MSExperiment.h:130
Size getNrChromatograms() const
get the total number of chromatograms available
ConstIterator end() const
Definition: MSExperiment.h:165
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:345
Base::value_type value_type
Definition: MSExperiment.h:116
MSExperiment()
Constructor.
bool operator!=(const MSExperiment &rhs) const
Equality operator.
CoordinateType getMaxMZ() const
returns the maximal m/z value
Peak1D PeakT
Definition: MSExperiment.h:76
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:239
RangeManagerContainer< RangeRT, RangeMZ, RangeIntensity > RangeManagerContainerType
RangeManager type.
Definition: MSExperiment.h:92
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:592
ConstAreaIterator areaBeginConst(CoordinateType min_rt, CoordinateType max_rt, CoordinateType min_mz, CoordinateType max_mz) const
Returns a non-mutable area iterator for area.
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:367
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:110
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:108
CoordinateType getMinRT() const
returns the minimal retention time value
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:160
UInt64 total_size_
Number of all data points.
Definition: MSExperiment.h:594
bool isSorted(bool check_mz=true) const
Checks if all spectra are sorted with respect to ascending RT.
MSExperiment(const MSExperiment &source)
Copy constructor.
std::vector< MSSpectrum > & getSpectra()
returns the spectrum list (mutable)
void resize(Size s)
Definition: MSExperiment.h:125
void set2DData(const Container &container)
Assignment of a data container with RT and MZ to an MSExperiment.
Definition: MSExperiment.h:302
ChromatogramPeak ChromatogramPeakT
Definition: MSExperiment.h:77
void sortSpectra(bool sort_mz=true)
Sorts the data points by retention time.
Size size() const
Definition: MSExperiment.h:120
void reset()
Clear all internal data (spectra, ranges, metadata)
ConstIterator begin() const
Definition: MSExperiment.h:155
void addSpectrum(MSSpectrum &&spectrum)
void reserveSpaceSpectra(Size s)
bool hasZeroIntensities(size_t ms_level) const
returns true if any MS spectra of the specified level contain at least one peak with intensity of 0....
bool operator==(const MSExperiment &rhs) const
Equality operator.
ConstIterator getPrecursorSpectrum(ConstIterator iterator) const
Returns the precursor spectrum of the scan pointed to by iterator.
Base::const_iterator const_iterator
Definition: MSExperiment.h:118
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:106
bool hasPeptideIdentifications() const
do any of the spectra have a PeptideID?
void clear(bool clear_meta_data)
Clears all data and meta data.
void reserve(Size s)
Definition: MSExperiment.h:135
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:596
AreaIterator areaEnd()
Returns an invalid area iterator marking the end of an area.
The representation of a 1D spectrum.
Definition: MSSpectrum.h:70
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
float IntensityType
Intensity type.
Definition: Peak1D.h:62
double CoordinateType
Coordinate type.
Definition: Peak1D.h:66
Definition: RangeManager.h:652
Handles the management of a multidimensional range, e.g. RangeMZ and RangeIntensity for spectra.
Definition: RangeManager.h:455
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:47
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:614
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:622
static void addData_(SpectrumType *spectrum, const ContainerValueType *item)
specialization for adding feature mass traces (does not support metadata_names currently)
Definition: MSExperiment.h:638
Helper class to add either general data points in set2DData or use mass traces from meta values.
Definition: MSExperiment.h:605
static void addData_(SpectrumType *spectrum, const ContainerValueType *item)
static void addData_(SpectrumType *spectrum, const ContainerValueType *item, const StringList &store_metadata_names)