35 #ifndef OPENMS_KERNEL_MSEXPERIMENT_H
36 #define OPENMS_KERNEL_MSEXPERIMENT_H
67 template <
typename PeakT = Peak1D,
typename ChromatogramPeakT = ChromatogramPeak>
95 typedef std::vector<SpectrumType>
Base;
100 typedef typename std::vector<SpectrumType>::iterator
Iterator;
201 if (&source ==
this)
return *
this;
247 template <
class Container>
250 for (
typename Base::const_iterator spec =
spectra_.begin(); spec !=
spectra_.end(); ++spec)
252 if (spec->getMSLevel() != 1)
256 for (
typename SpectrumType::const_iterator it = spec->begin(); it != spec->end(); ++it)
258 cont.push_back(
typename Container::value_type());
259 cont.back().setRT(spec->getRT());
260 cont.back().setMZ(it->getMZ());
261 cont.back().setIntensity(it->getIntensity());
274 template <
class Container>
279 if (cont.empty())
return;
283 for (
typename Container::const_iterator iter = cont.begin(); iter != cont.end(); ++iter)
286 if (current_rt != iter->getRT() || spectrum == 0)
288 if (current_rt > iter->getRT())
292 current_rt = iter->getRT();
295 spectrum->
setRT(current_rt);
300 spectrum->insert(spectrum->end(),
PeakType());
301 spectrum->back().setIntensity(iter->getIntensity());
302 spectrum->back().setPosition(iter->getMZ());
331 OPENMS_PRECONDITION(this->
isSorted(
true),
"Experiment is not sorted by RT and m/z! Using ConstAreaIterator will give invalid results!")
353 return lower_bound(
spectra_.begin(),
spectra_.end(), s,
typename SpectrumType::RTLess());
367 return upper_bound(
spectra_.begin(),
spectra_.end(), s,
typename SpectrumType::RTLess());
379 return lower_bound(
spectra_.begin(),
spectra_.end(), s,
typename SpectrumType::RTLess());
391 return upper_bound(
spectra_.begin(),
spectra_.end(), s,
typename SpectrumType::RTLess());
430 for (
typename Base::iterator it =
spectra_.begin(); it !=
spectra_.end(); ++it)
432 if (ms_level <
Int(0) ||
Int(it->getMSLevel()) == ms_level)
448 if (it->size() == 0)
continue;
462 if (ms_level == 1 && it->getMSLevel() == 2)
464 if (!it->getPrecursors().empty())
469 DoubleReal pc_mz = it->getPrecursors()[0].getMZ();
504 if (it->size() == 0)
continue;
577 std::sort(
spectra_.begin(),
spectra_.end(),
typename SpectrumType::RTLess());
584 iter->sortByPosition();
603 it->sortByPosition();
649 bool meta_present =
false;
652 if (
spectra_[i].getFloatDataArrays().size() != 0 ||
spectra_[i].getIntegerDataArrays().size() != 0 ||
spectra_[i].getStringDataArrays().size() != 0)
656 spectra_[i].getStringDataArrays().clear();
657 spectra_[i].getIntegerDataArrays().clear();
658 spectra_[i].getFloatDataArrays().clear();
686 UInt ms_level = iterator->getMSLevel();
690 if (iterator->getMSLevel() < ms_level)
695 while (iterator !=
spectra_.begin());
706 tmp.RangeManagerType::operator=(* this);
708 from.RangeManagerType::operator=(tmp);
711 tmp.ExperimentalSettings::operator=(* this);
713 from.ExperimentalSettings::operator=(tmp);
716 tmp.PersistentObject::operator=(* this);
718 from.PersistentObject::operator=(tmp);
784 for (
typename Base::const_iterator spec_it =
spectra_.begin(); spec_it !=
spectra_.end(); ++spec_it)
786 if (spec_it->getMSLevel() == 1)
790 for (
typename SpectrumType::const_iterator peak_it = spec_it->begin(); peak_it != spec_it->end(); ++peak_it)
792 totalIntensity += peak_it->getIntensity();
796 peak.
setRT(spec_it->getRT());
849 template <
typename PeakT,
typename ChromatogramPeakT>
850 std::ostream & operator<<(std::ostream & os, const MSExperiment<PeakT, ChromatogramPeakT> & exp)
852 os <<
"-- MSEXPERIMENT BEGIN --" << std::endl;
855 os << static_cast<const ExperimentalSettings &>(exp);
869 os <<
"-- MSEXPERIMENT END --" << std::endl;
876 #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
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:248
void reserveSpaceChromatograms(Size s)
Definition: MSExperiment.h:173
bool operator==(const ExperimentalSettings &rhs) const
Equality operator.
void reset()
Resets all internal values.
Definition: MSExperiment.h:635
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:226
Definition: ChromatogramSettings.h:70
CoordinateType maxX() const
Accessor for min_ coordinate maximum.
Definition: DIntervalBase.h:252
Base::value_type value_type
Definition: MSExperiment.h:113
std::vector< MSChromatogram< ChromatogramPeakType > > chromatograms_
chromatograms
Definition: MSExperiment.h:841
#define OPENMS_PRECONDITION(condition, message)
Precondition macro.
Definition: Macros.h:107
Iterator RTEnd(CoordinateType rt)
Fast search for spectrum range end (returns the past-the-end iterator)
Definition: MSExperiment.h:387
bool clearMetaDataArrays()
Clears the meta data arrays of all contained spectra (float, integer and string arrays) ...
Definition: MSExperiment.h:647
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:575
Base::const_iterator const_iterator
Definition: MSExperiment.h:115
void resize(Size s)
Definition: MSExperiment.h:122
PeakType::IntensityType IntensityType
Intenstiy 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:701
CoordinateType getMaxMZ() const
returns the maximal m/z value
Definition: MSExperiment.h:527
ConstIterator RTEnd(CoordinateType rt) const
Fast search for spectrum range end (returns the past-the-end iterator)
Definition: MSExperiment.h:363
Precondition failed exception.
Definition: Exception.h:167
const MSChromatogram< ChromatogramPeakType > getTIC() const
returns the total ion chromatogram (TIC)
Definition: MSExperiment.h:780
void addChromatogram(const MSChromatogram< ChromatogramPeakType > &chromatogram)
adds a chromatogram to the list
Definition: MSExperiment.h:762
ConstAreaIterator areaEndConst() const
Returns an non-mutable invalid area iterator marking the end of an area.
Definition: MSExperiment.h:337
CoordinateType getMinMZ() const
returns the minimal m/z value
Definition: MSExperiment.h:521
CoordinateType getMinRT() const
returns the minimal retention time value
Definition: MSExperiment.h:533
SpectrumType & operator[](Size n)
Definition: MSExperiment.h:137
RangeManager< 2 > RangeManagerType
RangeManager type.
Definition: MSExperiment.h:89
Iterator end()
Definition: MSExperiment.h:157
ConstIterator RTBegin(CoordinateType rt) const
Fast search for spectrum range begin.
Definition: MSExperiment.h:349
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:594
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:413
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:327
Base class for all persistent objects.
Definition: PersistentObject.h:52
void reserve(Size s)
Definition: MSExperiment.h:132
CoordinateType minX() const
Accessor for min_ coordinate minimum.
Definition: DIntervalBase.h:240
MSChromatogram< ChromatogramPeakType > & getChromatogram(Size id)
returns a single chromatogram
Definition: MSExperiment.h:774
RangeManager & operator=(const RangeManager &rhs)
Assignment operator.
Definition: RangeManager.h:77
Real IntensityType
Intensity type.
Definition: Peak1D.h:64
PersistentObject & operator=(const PersistentObject &rhs)
Assignment operator.
const ExperimentalSettings & getExperimentalSettings() const
returns the meta information of this experiment (const access)
Definition: MSExperiment.h:664
void clearRanges()
Resets the ranges.
Definition: RangeManager.h:140
void setMSLevel(UInt ms_level)
Sets the MS level.
Definition: MSSpectrum.h:237
ConstIterator end() const
Definition: MSExperiment.h:162
bool operator!=(const MSExperiment &rhs) const
Equality operator.
Definition: MSExperiment.h:234
Definition: ChromatogramSettings.h:77
AreaIterator areaBegin(CoordinateType min_rt, CoordinateType max_rt, CoordinateType min_mz, CoordinateType max_mz)
Returns an area iterator for area.
Definition: MSExperiment.h:311
const std::vector< MSSpectrum< PeakT > > & getSpectra() const
returns the spectra list
Definition: MSExperiment.h:744
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
OPENMS_UINT64_TYPE UInt64
Unsigned integer type (64bit)
Definition: Types.h:75
std::vector< SpectrumType > spectra_
spectra
Definition: MSExperiment.h:844
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:738
ExperimentalSettings & getExperimentalSettings()
returns the meta information of this experiment (mutable access)
Definition: MSExperiment.h:670
const std::vector< UInt > & getMSLevels() const
returns an array of MS levels
Definition: MSExperiment.h:561
MSExperiment(const MSExperiment &source)
Copy constructor.
Definition: MSExperiment.h:188
Representation of a mass spectrometry experiment.
Definition: MSExperiment.h:68
bool isSorted(bool check_mz=true) const
Checks if all spectra are sorted with respect to ascending RT.
Definition: MSExperiment.h:613
void clearId(bool deep=true)
Clears the persistence id.
ExperimentalSettings & operator=(const ExperimentalSettings &source)
Assignment operator.
void setChromatograms(const std::vector< MSChromatogram< ChromatogramPeakType > > &chromatograms)
sets the chromatogram list
Definition: MSExperiment.h:756
const AreaType & getDataRange() const
Returns RT and m/z range the data lies in.
Definition: MSExperiment.h:549
MSExperiment & operator=(const ExperimentalSettings &source)
Assignment operator.
Definition: MSExperiment.h:219
std::vector< MSSpectrum< PeakT > > & getSpectra()
returns the spectra list
Definition: MSExperiment.h:750
void set2DData(const Container &cont)
Assignment of a 2D spectrum to MSExperiment.
Definition: MSExperiment.h:275
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:321
CoordinateType getMaxRT() const
returns the maximal retention time value
Definition: MSExperiment.h:539
UInt64 getSize() const
returns the total number of peaks
Definition: MSExperiment.h:555
void setRT(DoubleReal rt)
Sets the absolute retention time (is seconds)
Definition: MSSpectrum.h:221
size_t Size
Size type e.g. used as variable which can hold result of size()
Definition: Types.h:144
void clear(bool clear_meta_data)
Clears all data and meta data.
Definition: MSExperiment.h:809
MSExperiment & operator=(const MSExperiment &source)
Assignment operator.
Definition: MSExperiment.h:199
bool empty() const
Definition: MSExperiment.h:127
Iterator RTBegin(CoordinateType rt)
Fast search for spectrum range begin.
Definition: MSExperiment.h:375
Feature::CoordinateType CoordinateType
Definition: AdditiveSeries.C:52
std::vector< SpectrumType > Base
STL base class type.
Definition: MSExperiment.h:95
A 1-dimensional raw data point or peak for chromatograms.
Definition: ChromatogramPeak.h:55
void setSpectra(const std::vector< MSSpectrum< PeakT > > &spectra)
sets the spectra list
Definition: MSExperiment.h:732
Handles the managment of a position and intensity range.
Definition: RangeManager.h:48
virtual void updateRanges()
Updates minimum and maximum position/intensity.
Definition: MSExperiment.h:403
UInt64 total_size_
Number of all data points.
Definition: MSExperiment.h:838
int Int
Signed integer type.
Definition: Types.h:100
ConstIterator getPrecursorSpectrum(ConstIterator iterator) const
Returns the precursor spectrum of the scan pointed to by iterator.
Definition: MSExperiment.h:680
Description of the experimental settings.
Definition: ExperimentalSettings.h:59
virtual void clearChildIds_()
Clears the persistence id of all sub-objects.
Definition: MSExperiment.h:827
const std::vector< MSChromatogram< ChromatogramPeakType > > & getChromatograms() const
returns the chromatogram list
Definition: MSExperiment.h:768
ConstIterator begin() const
Definition: MSExperiment.h:152
std::vector< UInt > ms_levels_
MS levels of the data.
Definition: MSExperiment.h:836
ExperimentalSettings()
Constructor.