35 #ifndef OPENMS_KERNEL_MSEXPERIMENT_H 36 #define OPENMS_KERNEL_MSEXPERIMENT_H 68 template <
typename PeakT = Peak1D,
typename ChromatogramPeakT = ChromatogramPeak>
95 typedef std::vector<SpectrumType>
Base;
100 typedef typename std::vector<SpectrumType>::iterator
Iterator;
162 inline ConstIterator
end()
const 188 RangeManagerType(source),
199 if (&source ==
this)
return *
this;
244 template <
class Container>
247 for (
typename Base::const_iterator spec =
spectra_.begin(); spec !=
spectra_.end(); ++spec)
249 if (spec->getMSLevel() != 1)
253 typename Container::value_type s;
254 for (
typename SpectrumType::const_iterator it = spec->begin(); it != spec->end(); ++it)
257 cont.back().setRT(spec->getRT());
258 cont.back().setMZ(it->getMZ());
259 cont.back().setIntensity(it->getIntensity());
275 template <
class Container>
278 set2DData<false, Container>(container);
298 template <
bool add_mass_traces,
class Container>
304 SpectrumType* spectrum = 0;
308 for (
typename Container::const_iterator iter = container.begin(); iter != container.end(); ++iter)
311 if (current_rt != iter->getRT() || spectrum == 0)
314 if (current_rt > iter->getRT())
318 current_rt = iter->getRT();
321 spectrum->
setRT(current_rt);
335 AreaIterator
areaBegin(CoordinateType min_rt, CoordinateType max_rt, CoordinateType min_mz, CoordinateType max_mz)
352 ConstAreaIterator
areaBeginConst(CoordinateType min_rt, CoordinateType max_rt, CoordinateType min_mz, CoordinateType max_mz)
const 356 OPENMS_PRECONDITION(this->
isSorted(
true),
"Experiment is not sorted by RT and m/z! Using ConstAreaIterator will give invalid results!")
374 ConstIterator
RTBegin(CoordinateType rt)
const 378 return lower_bound(
spectra_.begin(),
spectra_.end(), s,
typename SpectrumType::RTLess());
388 ConstIterator
RTEnd(CoordinateType rt)
const 392 return upper_bound(
spectra_.begin(),
spectra_.end(), s,
typename SpectrumType::RTLess());
404 return lower_bound(
spectra_.begin(),
spectra_.end(), s,
typename SpectrumType::RTLess());
416 return upper_bound(
spectra_.begin(),
spectra_.end(), s,
typename SpectrumType::RTLess());
455 for (
typename Base::iterator it =
spectra_.begin(); it !=
spectra_.end(); ++it)
457 if (ms_level <
Int(0) ||
Int(it->getMSLevel()) == ms_level)
473 if (it->size() == 0)
continue;
487 if (ms_level == 1 && it->getMSLevel() == 2)
489 if (!it->getPrecursors().empty())
491 double pc_rt = it->getRT();
494 double pc_mz = it->getPrecursors()[0].getMZ();
529 if (it->size() == 0)
continue;
602 std::sort(
spectra_.begin(),
spectra_.end(),
typename SpectrumType::RTLess());
609 iter->sortByPosition();
628 it->sortByPosition();
674 bool meta_present =
false;
677 if (
spectra_[i].getFloatDataArrays().size() != 0 ||
spectra_[i].getIntegerDataArrays().size() != 0 ||
spectra_[i].getStringDataArrays().size() != 0)
681 spectra_[i].getStringDataArrays().clear();
682 spectra_[i].getIntegerDataArrays().clear();
683 spectra_[i].getFloatDataArrays().clear();
711 UInt ms_level = iterator->getMSLevel();
715 if (iterator->getMSLevel() < ms_level)
720 while (iterator !=
spectra_.begin());
731 tmp.RangeManagerType::operator=(* this);
733 from.RangeManagerType::operator=(tmp);
736 tmp.ExperimentalSettings::operator=(* this);
738 from.ExperimentalSettings::operator=(tmp);
825 for (
typename Base::const_iterator spec_it =
spectra_.begin(); spec_it !=
spectra_.end(); ++spec_it)
827 if (spec_it->getMSLevel() == 1)
829 double totalIntensity = 0;
831 for (
typename SpectrumType::const_iterator peak_it = spec_it->begin(); peak_it != spec_it->end(); ++peak_it)
833 totalIntensity += peak_it->getIntensity();
836 ChromatogramPeakType peak;
837 peak.
setRT(spec_it->getRT());
881 template<
typename ContainerIterator,
bool addMassTraces>
884 static void addData_(SpectrumType* spectrum, ContainerIterator& iter);
887 template<
typename ContainerIterator>
891 static void addData_(SpectrumType* spectrum, ContainerIterator& iter)
894 spectrum->insert(spectrum->end(),
PeakType());
895 spectrum->back().setIntensity(iter->getIntensity());
896 spectrum->back().setPosition(iter->getMZ());
900 template<
typename ContainerIterator>
904 static void addData_(SpectrumType* spectrum, ContainerIterator& iter)
906 if (iter->metaValueExists(
"num_of_masstraces"))
908 Size mts = iter->getMetaValue(
"num_of_masstraces");
909 int charge = (iter->getCharge()==0 ? 1 : iter->getCharge());
910 for (
Size i = 0; i < mts; ++i)
913 if (!iter->metaValueExists(meta_name))
915 throw Exception::Precondition(__FILE__, __LINE__, __PRETTY_FUNCTION__,
String(
"Meta value '") + meta_name +
"' expected but not found in container.");
917 spectrum->insert(spectrum->end(),
PeakType());
918 spectrum->back().setIntensity(iter->getMetaValue(meta_name));
930 template <
typename PeakT,
typename ChromatogramPeakT>
931 std::ostream & operator<<(std::ostream & os, const MSExperiment<PeakT, ChromatogramPeakT> & exp)
933 os <<
"-- MSEXPERIMENT BEGIN --" << std::endl;
936 os << static_cast<const ExperimentalSettings &>(exp);
950 os <<
"-- MSEXPERIMENT END --" << std::endl;
957 #endif // OPENMS_KERNEL_MSEXPERIMENT_H
void setRT(CoordinateType rt)
Mutable access to RT.
Definition: ChromatogramPeak.h:117
MSSpectrum< PeakType > SpectrumType
Spectrum Type.
Definition: MSExperiment.h:91
const double C13C12_MASSDIFF_U
Internal::AreaIterator< PeakT, PeakT &, PeakT *, Iterator, typename SpectrumType::Iterator > AreaIterator
Mutable area iterator type (for traversal of a rectangular subset of the peaks)
Definition: MSExperiment.h:105
void get2DData(Container &cont) const
Reads out a 2D Spectrum.
Definition: MSExperiment.h:245
Size getNrSpectra() const
get the total number of spectra available
Definition: MSExperiment.h:808
A more convenient string class.
Definition: String.h:57
void reserveSpaceChromatograms(Size s)
Definition: MSExperiment.h:173
void set2DData(const Container &container)
Assignment of a data container with RT and MZ to an MSExperiment.
Definition: MSExperiment.h:299
bool operator==(const ExperimentalSettings &rhs) const
Equality operator.
void reset()
Resets all internal values.
Definition: MSExperiment.h:660
PositionRangeType pos_range_
Position range (D-dimensional)
Definition: RangeManager.h:151
Size size() const
Definition: MSExperiment.h:117
std::vector< SpectrumType >::iterator Iterator
Mutable iterator.
Definition: MSExperiment.h:101
bool operator==(const MSExperiment &rhs) const
Equality operator.
Definition: MSExperiment.h:223
Definition: ChromatogramSettings.h:70
CoordinateType maxX() const
Accessor for min_ coordinate maximum.
Definition: DIntervalBase.h:253
Base::value_type value_type
Definition: MSExperiment.h:113
std::vector< MSChromatogram< ChromatogramPeakType > > chromatograms_
chromatograms
Definition: MSExperiment.h:873
#define OPENMS_PRECONDITION(condition, message)
Precondition macro.
Definition: openms/include/OpenMS/CONCEPT/Macros.h:107
Iterator RTEnd(CoordinateType rt)
Fast search for spectrum range end (returns the past-the-end iterator)
Definition: MSExperiment.h:412
bool clearMetaDataArrays()
Clears the meta data arrays of all contained spectra (float, integer and string arrays) ...
Definition: MSExperiment.h:672
MSExperiment()
Constructor.
Definition: MSExperiment.h:179
ChromatogramPeakT ChromatogramPeakType
Chromatogram peak type.
Definition: MSExperiment.h:81
Forward iterator for an area of peaks in an experiment.
Definition: AreaIterator.h:58
Iterator begin()
Definition: MSExperiment.h:147
void sortSpectra(bool sort_mz=true)
Sorts the data points by retention time.
Definition: MSExperiment.h:600
Base::const_iterator const_iterator
Definition: MSExperiment.h:115
void resize(Size s)
Definition: MSExperiment.h:122
PeakType::IntensityType IntensityType
Intensity type of peaks.
Definition: MSExperiment.h:87
void swap(MSExperiment &from)
Swaps the content of this map with the content of from.
Definition: MSExperiment.h:726
static void addData_(SpectrumType *spectrum, ContainerIterator &iter)
CoordinateType getMaxMZ() const
returns the maximal m/z value
Definition: MSExperiment.h:552
Main OpenMS namespace.
Definition: FeatureDeconvolution.h:47
ConstIterator RTEnd(CoordinateType rt) const
Fast search for spectrum range end (returns the past-the-end iterator)
Definition: MSExperiment.h:388
Precondition failed exception.
Definition: Exception.h:167
const MSChromatogram< ChromatogramPeakType > getTIC() const
returns the total ion chromatogram (TIC)
Definition: MSExperiment.h:821
void addChromatogram(const MSChromatogram< ChromatogramPeakType > &chromatogram)
adds a chromatogram to the list
Definition: MSExperiment.h:782
ConstAreaIterator areaEndConst() const
Returns an non-mutable invalid area iterator marking the end of an area.
Definition: MSExperiment.h:362
MSSpectrum< PeakT > & getSpectrum(Size id)
returns a single spectrum
Definition: MSExperiment.h:802
CoordinateType getMinMZ() const
returns the minimal m/z value
Definition: MSExperiment.h:546
CoordinateType getMinRT() const
returns the minimal retention time value
Definition: MSExperiment.h:558
SpectrumType & operator[](Size n)
Definition: MSExperiment.h:137
RangeManager< 2 > RangeManagerType
RangeManager type.
Definition: MSExperiment.h:89
Iterator end()
Definition: MSExperiment.h:157
static void addData_(SpectrumType *spectrum, ContainerIterator &iter)
specialization for adding feature mass traces
Definition: MSExperiment.h:904
ConstIterator RTBegin(CoordinateType rt) const
Fast search for spectrum range begin.
Definition: MSExperiment.h:374
Base::iterator iterator
Definition: MSExperiment.h:114
MSChromatogram< ChromatogramPeakType > ChromatogramType
Chromatogram type.
Definition: MSExperiment.h:93
void sortChromatograms(bool sort_rt=true)
Sorts the data points of the chromatograms by m/z.
Definition: MSExperiment.h:619
void updateRanges(Int ms_level)
Updates the m/z, intensity, retention time and MS level ranges of all spectra with a certain ms level...
Definition: MSExperiment.h:438
ConstAreaIterator areaBeginConst(CoordinateType min_rt, CoordinateType max_rt, CoordinateType min_mz, CoordinateType max_mz) const
Returns a non-mutable area iterator for area.
Definition: MSExperiment.h:352
void reserve(Size s)
Definition: MSExperiment.h:132
CoordinateType minX() const
Accessor for min_ coordinate minimum.
Definition: DIntervalBase.h:241
MSChromatogram< ChromatogramPeakType > & getChromatogram(Size id)
returns a single chromatogram
Definition: MSExperiment.h:796
RangeManager & operator=(const RangeManager &rhs)
Assignment operator.
Definition: RangeManager.h:77
Helper class to add either general data points in set2DData or use mass traces from meta values...
Definition: MSExperiment.h:882
const ExperimentalSettings & getExperimentalSettings() const
returns the meta information of this experiment (const access)
Definition: MSExperiment.h:689
void clearRanges()
Resets the ranges.
Definition: RangeManager.h:140
void setMSLevel(UInt ms_level)
Sets the MS level.
Definition: MSSpectrum.h:265
ConstIterator end() const
Definition: MSExperiment.h:162
bool operator!=(const MSExperiment &rhs) const
Equality operator.
Definition: MSExperiment.h:231
Definition: ChromatogramSettings.h:77
Size getNrChromatograms() const
get the total number of chromatograms available
Definition: MSExperiment.h:814
AreaIterator areaBegin(CoordinateType min_rt, CoordinateType max_rt, CoordinateType min_mz, CoordinateType max_mz)
Returns an area iterator for area.
Definition: MSExperiment.h:336
const std::vector< MSSpectrum< PeakT > > & getSpectra() const
returns the spectra list
Definition: MSExperiment.h:764
PeakType::CoordinateType CoordinateType
Coordinate type of peak positions.
Definition: MSExperiment.h:85
IntensityRangeType int_range_
Intensity range (1-dimensional)
Definition: RangeManager.h:149
PeakT PeakType
Peak type.
Definition: MSExperiment.h:79
void reserveSpaceSpectra(Size s)
Definition: MSExperiment.h:169
std::vector< SpectrumType > spectra_
spectra
Definition: MSExperiment.h:876
DRange< 2 > AreaType
Area type.
Definition: MSExperiment.h:83
Internal::AreaIterator< const PeakT, const PeakT &, const PeakT *, ConstIterator, typename SpectrumType::ConstIterator > ConstAreaIterator
Immutable area iterator type (for traversal of a rectangular subset of the peaks) ...
Definition: MSExperiment.h:107
void addSpectrum(const MSSpectrum< PeakT > &spectrum)
adds a spectra to the list
Definition: MSExperiment.h:758
ExperimentalSettings & getExperimentalSettings()
returns the meta information of this experiment (mutable access)
Definition: MSExperiment.h:695
void setRT(double rt)
Sets the absolute retention time (is seconds)
Definition: MSSpectrum.h:249
const std::vector< UInt > & getMSLevels() const
returns an array of MS levels
Definition: MSExperiment.h:586
MSExperiment(const MSExperiment &source)
Copy constructor.
Definition: MSExperiment.h:187
In-Memory representation of a mass spectrometry experiment.
Definition: MSExperiment.h:69
bool isSorted(bool check_mz=true) const
Checks if all spectra are sorted with respect to ascending RT.
Definition: MSExperiment.h:638
ExperimentalSettings & operator=(const ExperimentalSettings &source)
Assignment operator.
void setChromatograms(const std::vector< MSChromatogram< ChromatogramPeakType > > &chromatograms)
sets the chromatogram list
Definition: MSExperiment.h:776
const AreaType & getDataRange() const
Returns RT and m/z range the data lies in.
Definition: MSExperiment.h:574
MSExperiment & operator=(const ExperimentalSettings &source)
Assignment operator.
Definition: MSExperiment.h:216
std::vector< MSSpectrum< PeakT > > & getSpectra()
returns the spectra list
Definition: MSExperiment.h:770
std::vector< SpectrumType >::const_iterator ConstIterator
Non-mutable iterator.
Definition: MSExperiment.h:103
void setIntensity(IntensityType intensity)
Mutable access to the data point intensity (height)
Definition: ChromatogramPeak.h:108
AreaIterator areaEnd()
Returns an invalid area iterator marking the end of an area.
Definition: MSExperiment.h:346
CoordinateType getMaxRT() const
returns the maximal retention time value
Definition: MSExperiment.h:564
static void addData_(SpectrumType *spectrum, ContainerIterator &iter)
general method for adding data points (no mass traces desired or found)
Definition: MSExperiment.h:891
UInt64 getSize() const
returns the total number of peaks
Definition: MSExperiment.h:580
void clear(bool clear_meta_data)
Clears all data and meta data.
Definition: MSExperiment.h:850
MSExperiment & operator=(const MSExperiment &source)
Assignment operator.
Definition: MSExperiment.h:197
bool empty() const
Definition: MSExperiment.h:127
Iterator RTBegin(CoordinateType rt)
Fast search for spectrum range begin.
Definition: MSExperiment.h:400
std::vector< SpectrumType > Base
STL base class type.
Definition: MSExperiment.h:95
void setSpectra(const std::vector< MSSpectrum< PeakT > > &spectra)
sets the spectra list
Definition: MSExperiment.h:752
Handles the management of a position and intensity range.
Definition: RangeManager.h:48
void set2DData(const Container &container)
Assignment of a data container with RT and MZ to an MSExperiment.
Definition: MSExperiment.h:276
virtual void updateRanges()
Updates minimum and maximum position/intensity.
Definition: MSExperiment.h:428
UInt64 total_size_
Number of all data points.
Definition: MSExperiment.h:870
int Int
Signed integer type.
Definition: Types.h:96
ConstIterator getPrecursorSpectrum(ConstIterator iterator) const
Returns the precursor spectrum of the scan pointed to by iterator.
Definition: MSExperiment.h:705
Description of the experimental settings.
Definition: ExperimentalSettings.h:59
const std::vector< MSChromatogram< ChromatogramPeakType > > & getChromatograms() const
returns the chromatogram list
Definition: MSExperiment.h:788
ConstIterator begin() const
Definition: MSExperiment.h:152
std::vector< UInt > ms_levels_
MS levels of the data.
Definition: MSExperiment.h:868
ExperimentalSettings()
Constructor.