24 class ChromatogramPeak;
71 typedef std::vector<SpectrumType>
Base;
76 typedef std::vector<SpectrumType>::iterator
Iterator;
123 return spectra_.size();
135 return spectra_.empty();
158 return spectra_.begin();
163 return spectra_.cbegin();
168 return spectra_.cbegin();
173 return spectra_.end();
178 return spectra_.cend();
183 return spectra_.cend();
199 template <
class Container>
202 for (
typename Base::const_iterator spec = spectra_.begin(); spec != spectra_.end(); ++spec)
204 if (spec->getMSLevel() != 1)
208 typename Container::value_type s;
209 for (
typename SpectrumType::const_iterator it = spec->begin(); it != spec->end(); ++it)
212 cont.back().setRT(spec->getRT());
213 cont.back().setMZ(it->getMZ());
214 cont.back().setIntensity(it->getIntensity());
230 template <
class Container>
233 set2DData<false, Container>(container);
250 template <
class Container>
257 for (
typename Container::const_iterator iter = container.begin(); iter != container.end(); ++iter)
260 if (current_rt != iter->getRT() || spectrum ==
nullptr)
263 if (current_rt > iter->getRT())
267 current_rt = iter->getRT();
268 spectrum = createSpec_(current_rt, store_metadata_names);
294 template <
bool add_mass_traces,
class Container>
301 for (
typename Container::const_iterator iter = container.begin(); iter != container.end(); ++iter)
304 if (current_rt != iter->getRT() || spectrum ==
nullptr)
307 if (current_rt > iter->getRT())
311 current_rt = iter->getRT();
312 spectrum = createSpec_(current_rt);
325 AreaIterator areaBegin(CoordinateType min_rt, CoordinateType max_rt,
327 CoordinateType min_mz, CoordinateType max_mz,
UInt ms_level = 1);
363 std::vector<float>& rt,
364 std::vector<std::vector<float>>& mz,
365 std::vector<std::vector<float>>& intensity)
const
368 for (
auto it = areaBeginConst(min_rt, max_rt, min_mz, max_mz, ms_level); it != areaEndConst(); ++it)
372 t = (float)it.getRT();
374 mz.push_back(std::vector<float>());
375 intensity.push_back(std::vector<float>());
377 mz.back().push_back((
float)it->getMZ());
378 intensity.back().push_back(it->getIntensity());
402 std::vector<float>& rt,
403 std::vector<std::vector<float>>& mz,
404 std::vector<std::vector<float>>& intensity,
405 std::vector<std::vector<float>>& ion_mobility)
const
408 std::vector<float> im;
410 for (
auto it = areaBeginConst(min_rt, max_rt, min_mz, max_mz, ms_level); it != areaEndConst(); ++it)
414 t = (float)it.getRT();
416 std::tie(unit, im) = it.getSpectrum().maybeGetIMData();
417 mz.push_back(std::vector<float>());
418 intensity.push_back(std::vector<float>());
419 ion_mobility.push_back(std::vector<float>());
424 const Size peak_index = it.getPeakIndex().peak;
425 ion_mobility.back().push_back(im[peak_index]);
429 ion_mobility.back().push_back(-1.0);
431 mz.back().push_back((
float)it->getMZ());
432 intensity.back().push_back(it->getIntensity());
455 std::vector<float>& rt,
456 std::vector<float>& mz,
457 std::vector<float>& intensity)
460 for (
auto it = areaBeginConst(min_rt, max_rt, min_mz, max_mz, ms_level); it != areaEndConst(); ++it)
462 rt.push_back((
float)it.getRT());
463 mz.push_back((
float)it->getMZ());
464 intensity.push_back(it->getIntensity());
488 std::vector<float>& rt,
489 std::vector<float>& mz,
490 std::vector<float>& intensity,
491 std::vector<float>& ion_mobility)
const
493 for (
auto it = areaBeginConst(min_rt, max_rt, min_mz, max_mz, ms_level); it != areaEndConst(); ++it)
496 std::vector<float> im;
500 t = (float)it.getRT();
501 std::tie(unit, im) = it.getSpectrum().maybeGetIMData();
503 rt.push_back((
float)it.getRT());
504 mz.push_back((
float)it->getMZ());
505 intensity.push_back(it->getIntensity());
508 const Size peak_index = it.getPeakIndex().peak;
509 ion_mobility.push_back(im[peak_index]);
513 ion_mobility.push_back(-1.0);
530 template <
typename Iterator>
533 using ValueType =
typename std::iterator_traits<Iterator>::value_type;
534 using IntensityType = decltype(std::declval<ValueType>().getIntensity());
535 static_assert(std::is_member_function_pointer_v<decltype(&ValueType::getIntensity)>,
536 "Iterator value type must have getIntensity() member function");
539 for (
auto it = begin; it != end; ++it) {
540 sum += it->getIntensity();
595 template<
class MzReductionFunctionType>
596 std::vector<std::vector<MSExperiment::CoordinateType>>
aggregate(
597 const std::vector<std::pair<RangeMZ, RangeRT>>& mz_rt_ranges,
598 unsigned int ms_level,
599 MzReductionFunctionType func_mz_reduction)
const
602 if (mz_rt_ranges.empty())
609 std::vector<std::reference_wrapper<const MSSpectrum>> spectra_view;
610 spectra_view.reserve(spectra_.size());
611 std::copy_if(spectra_.begin(), spectra_.end(),
612 std::back_inserter(spectra_view),
613 [ms_level](
const auto& spec) {
614 return spec.getMSLevel() == ms_level;
618 if (spectra_view.empty()) {
624 auto getCoveredSpectra = [](
625 const std::vector<std::reference_wrapper<const MSSpectrum>>& spectra_view,
626 const std::vector<std::pair<RangeMZ, RangeRT>>& mz_rt_ranges)
627 -> std::vector<std::pair<size_t, size_t>>
629 std::vector<std::pair<size_t, size_t>> res;
630 res.reserve(mz_rt_ranges.size());
632 for (
const auto & mz_rt : mz_rt_ranges)
636 auto start_it = std::lower_bound(spectra_view.begin(), spectra_view.end(), mz_rt.second.getMin(),
637 [](
const auto& spec,
double rt)
638 { return spec.get().getRT() < rt; });
640 auto stop_it = std::upper_bound(spectra_view.begin(), spectra_view.end(), mz_rt.second.getMax(),
641 [](
double rt,
const auto& spec)
642 { return rt < spec.get().getRT(); });
645 std::distance(spectra_view.begin(), start_it),
646 std::distance(spectra_view.begin(), stop_it)
654 const std::vector<std::pair<size_t, size_t>> rt_ranges_idcs = getCoveredSpectra(spectra_view, mz_rt_ranges);
657 std::vector<std::vector<MSExperiment::CoordinateType>> result(mz_rt_ranges.size());
660 std::vector<std::vector<size_t>> spec_idx_to_range_idx(spectra_view.size());
663 for (
size_t i = 0; i < rt_ranges_idcs.size(); ++i)
665 const auto& [start, stop] = rt_ranges_idcs[i];
666 result[i].resize(stop - start);
668 for (
size_t j = start; j < stop; ++j)
670 spec_idx_to_range_idx[j].push_back(i);
674 #pragma omp parallel for schedule(dynamic)
675 for (
Int64 i = 0; i < (
Int64)spec_idx_to_range_idx.size(); ++i)
677 if (spec_idx_to_range_idx[i].empty())
continue;
679 const auto& spec = spectra_view[i].get();
680 auto spec_begin = spec.cbegin();
681 auto spec_end = spec.cend();
683 for (
size_t range_idx : spec_idx_to_range_idx[i])
685 const auto& mz_range = mz_rt_ranges[range_idx].first;
688 auto start_it = spec.PosBegin(spec_begin, mz_range.getMinMZ(), spec_end);
689 auto end_it = start_it;
691 while (end_it != spec_end && end_it->getPosition() <= mz_range.getMaxMZ())
699 result[range_idx][i - rt_ranges_idcs[range_idx].first] =
700 func_mz_reduction(start_it, end_it);
707 std::vector<std::vector<MSExperiment::CoordinateType>>
aggregate(
708 const std::vector<std::pair<RangeMZ, RangeRT>>& mz_rt_ranges,
709 unsigned int ms_level)
const
726 template<
class MzReductionFunctionType>
728 const std::vector<std::pair<RangeMZ, RangeRT>>& mz_rt_ranges,
729 unsigned int ms_level,
730 MzReductionFunctionType func_mz_reduction)
const
733 if (mz_rt_ranges.empty())
740 std::vector<std::reference_wrapper<const MSSpectrum>> spectra_view;
741 spectra_view.reserve(spectra_.size());
742 std::copy_if(spectra_.begin(), spectra_.end(),
743 std::back_inserter(spectra_view),
744 [ms_level](
const auto& spec) {
745 return spec.getMSLevel() == ms_level;
749 if (spectra_view.empty()) {
755 auto getCoveredSpectra = [](
756 const std::vector<std::reference_wrapper<const MSSpectrum>>& spectra_view,
757 const std::vector<std::pair<RangeMZ, RangeRT>>& mz_rt_ranges)
758 -> std::vector<std::pair<size_t, size_t>>
760 std::vector<std::pair<size_t, size_t>> res;
761 res.reserve(mz_rt_ranges.size());
763 for (
const auto & mz_rt : mz_rt_ranges)
765 auto start_it = std::lower_bound(spectra_view.begin(), spectra_view.end(), mz_rt.second.getMin(),
766 [](
const auto& spec,
double rt)
767 { return spec.get().getRT() < rt; });
769 auto stop_it = std::upper_bound(spectra_view.begin(), spectra_view.end(), mz_rt.second.getMax(),
770 [](
double rt,
const auto& spec)
771 { return rt < spec.get().getRT(); });
774 std::distance(spectra_view.begin(), start_it),
775 std::distance(spectra_view.begin(), stop_it)
782 const std::vector<std::pair<size_t, size_t>> rt_ranges_idcs = getCoveredSpectra(spectra_view, mz_rt_ranges);
785 std::vector<MSChromatogram> result(mz_rt_ranges.size());
788 std::vector<std::vector<size_t>> spec_idx_to_range_idx(spectra_view.size());
791 for (
size_t i = 0; i < rt_ranges_idcs.size(); ++i)
793 const auto& [start, stop] = rt_ranges_idcs[i];
794 result[i].resize(stop - start);
795 result[i].getProduct().setMZ(
796 (mz_rt_ranges[i].first.getMinMZ() + mz_rt_ranges[i].first.getMaxMZ()) / 2.0);
797 for (
size_t j = start; j < stop; ++j)
799 spec_idx_to_range_idx[j].push_back(i);
803 #pragma omp parallel for schedule(dynamic)
804 for (
Int64 i = 0; i < (
Int64)spec_idx_to_range_idx.size(); ++i)
806 if (spec_idx_to_range_idx[i].empty())
continue;
808 const auto& spec = spectra_view[i].get();
809 const double rt = spec.getRT();
810 auto spec_begin = spec.cbegin();
811 auto spec_end = spec.cend();
813 for (
size_t range_idx : spec_idx_to_range_idx[i])
815 const auto& mz_range = mz_rt_ranges[range_idx].first;
818 auto start_it = spec.PosBegin(spec_begin, mz_range.getMinMZ(), spec_end);
819 auto end_it = start_it;
821 while (end_it != spec_end && end_it->getPosition() <= mz_range.getMaxMZ())
827 result[range_idx][i - rt_ranges_idcs[range_idx].first] =
832 for (
auto& r : result) r.updateRanges();
839 const std::vector<std::pair<RangeMZ, RangeRT>>& mz_rt_ranges,
840 unsigned int ms_level)
const
855 unsigned int ms_level,
856 const std::string& mz_agg)
const
859 if (ranges.cols() != 4)
862 "Range matrix must have 4 columns [mz_min, mz_max, rt_min, rt_max]");
866 std::vector<std::pair<RangeMZ, RangeRT>> mz_rt_ranges;
867 mz_rt_ranges.reserve((
Size)ranges.rows());
869 for (
Size i = 0; i < (
Size)ranges.rows(); ++i)
871 mz_rt_ranges.emplace_back(
872 RangeMZ(ranges(i, 0), ranges(i, 1)),
873 RangeRT(ranges(i, 2), ranges(i, 3))
881 return aggregate(mz_rt_ranges, ms_level,
882 [](
auto begin_it,
auto end_it)
884 return std::accumulate(begin_it, end_it, 0.0,
888 else if (mz_agg ==
"max")
890 return aggregate(mz_rt_ranges, ms_level,
891 [](
auto begin_it,
auto end_it)->
double
893 if (begin_it == end_it)
return 0.0;
894 return std::max_element(begin_it, end_it,
899 else if (mz_agg ==
"min")
901 return aggregate(mz_rt_ranges, ms_level,
902 [](
auto begin_it,
auto end_it)->
double
904 if (begin_it == end_it)
return 0.0;
905 return std::min_element(begin_it, end_it,
910 else if (mz_agg ==
"mean")
912 return aggregate(mz_rt_ranges, ms_level,
913 [](
auto begin_it,
auto end_it)
915 if (begin_it == end_it)
return 0.0;
916 double sum = std::accumulate(begin_it, end_it, 0.0,
918 return sum /
static_cast<double>(std::distance(begin_it, end_it));
924 "Invalid aggregation function", mz_agg);
938 unsigned int ms_level,
939 const std::string& mz_agg)
const
942 if (ranges.cols() != 4)
945 "Range matrix must have 4 columns [mz_min, mz_max, rt_min, rt_max]");
949 std::vector<std::pair<RangeMZ, RangeRT>> mz_rt_ranges;
950 mz_rt_ranges.reserve((
Size)ranges.rows());
952 for (
Size i = 0; i < (
Size)ranges.rows(); ++i)
954 mz_rt_ranges.emplace_back(
955 RangeMZ(ranges(i, 0), ranges(i, 1)),
956 RangeRT(ranges(i, 2), ranges(i, 3))
963 return extractXICs(mz_rt_ranges, ms_level,
964 [](
auto begin_it,
auto end_it)
966 return std::accumulate(begin_it, end_it, 0.0,
970 else if (mz_agg ==
"max")
972 return extractXICs(mz_rt_ranges, ms_level,
973 [](
auto begin_it,
auto end_it)->
double
975 if (begin_it == end_it)
return 0.0;
976 return std::max_element(begin_it, end_it,
981 else if (mz_agg ==
"min")
983 return extractXICs(mz_rt_ranges, ms_level,
984 [](
auto begin_it,
auto end_it)->
double
986 if (begin_it == end_it)
return 0.0;
987 return std::min_element(begin_it, end_it,
992 else if (mz_agg ==
"mean")
994 return extractXICs(mz_rt_ranges, ms_level,
995 [](
auto begin_it,
auto end_it)
997 if (begin_it == end_it)
return 0.0;
998 double sum = std::accumulate(begin_it, end_it, 0.0,
1000 return sum /
static_cast<double>(std::distance(begin_it, end_it));
1006 "Invalid aggregation function", mz_agg);
1294 template<
typename ContainerValueType,
bool addMassTraces>
1301 template<
typename ContainerValueType>
1308 spectrum->insert(spectrum->end(),
PeakType());
1309 spectrum->back().setIntensity(item->getIntensity());
1310 spectrum->back().setPosition(item->getMZ());
1315 addData_(spectrum, item);
1316 for (StringList::const_iterator itm = store_metadata_names.begin(); itm != store_metadata_names.end(); ++itm)
1318 float val = std::numeric_limits<float>::quiet_NaN();
1319 if (item->metaValueExists(*itm)) val = item->getMetaValue(*itm);
1325 template<
typename ContainerValueType>
1331 if (item->metaValueExists(
"num_of_masstraces"))
1333 Size mts = item->getMetaValue(
"num_of_masstraces");
1334 int charge = (item->getCharge()==0 ? 1 : item->getCharge());
1335 for (
Size i = 0; i < mts; ++i)
1338 if (!item->metaValueExists(meta_name))
1340 throw Exception::Precondition(__FILE__, __LINE__, OPENMS_PRETTY_FUNCTION,
String(
"Meta value '") + meta_name +
"' expected but not found in container.");
1342 ContainerValueType p;
1343 p.setIntensity(item->getMetaValue(meta_name));
A 1-dimensional raw data point or peak for chromatograms.
Definition: ChromatogramPeak.h:28
Exception indicating that an invalid parameter was handed over to an algorithm.
Definition: Exception.h:316
Invalid value exception.
Definition: Exception.h:305
Precondition failed exception.
Definition: Exception.h:128
Description of the experimental settings.
Definition: ExperimentalSettings.h:36
Forward iterator for an area of peaks in an experiment.
Definition: AreaIterator.h:36
The representation of a chromatogram.
Definition: MSChromatogram.h:30
In-Memory representation of a mass spectrometry run.
Definition: MSExperiment.h:46
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.
ConstIterator getClosestSpectrumInRT(const double RT, UInt ms_level) const
Returns the closest(=nearest) spectrum in retention time to the given RT of a certain MS level.
std::vector< SpectrumType > spectra_
spectra
Definition: MSExperiment.h:1289
const std::vector< MSChromatogram > & getChromatograms() const
returns the chromatogram list
std::vector< SpectrumType > Base
STL base class type.
Definition: MSExperiment.h:71
void setChromatograms(std::vector< MSChromatogram > &&chromatograms)
Base::iterator iterator
Definition: MSExperiment.h:90
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:59
void get2DData(Container &cont) const
Reads out a 2D Spectrum.
Definition: MSExperiment.h:200
void swap(MSExperiment &from)
Swaps the content of this map with the content of from.
MSChromatogram ChromatogramType
Chromatogram type.
Definition: MSExperiment.h:69
void addSpectrum(const MSSpectrum &spectrum)
adds a spectrum to the list
PeakType::IntensityType IntensityType
Intensity type of peaks.
Definition: MSExperiment.h:61
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:251
std::vector< SpectrumType >::iterator Iterator
Mutable iterator.
Definition: MSExperiment.h:77
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
std::vector< MSChromatogram > extractXICs(const std::vector< std::pair< RangeMZ, RangeRT >> &mz_rt_ranges, unsigned int ms_level, MzReductionFunctionType func_mz_reduction) const
Extracts extracted ion chromatograms (XICs) from the MSExperiment.
Definition: MSExperiment.h:727
bool empty() const noexcept
Are there any spectra (does not consider chromatograms)
Definition: MSExperiment.h:133
UInt64 getSize() const
returns the total number of peaks
std::vector< MSChromatogram > extractXICs(const std::vector< std::pair< RangeMZ, RangeRT >> &mz_rt_ranges, unsigned int ms_level) const
Definition: MSExperiment.h:838
ConstIterator begin() const noexcept
Definition: MSExperiment.h:161
MSExperiment & operator=(MSExperiment &&) &=default
Move assignment operator.
ConstIterator cbegin() const noexcept
Definition: MSExperiment.h:166
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:65
void addChromatogram(MSChromatogram &&chrom)
ExperimentalSettings & getExperimentalSettings()
returns the meta information of this experiment (mutable access)
void reserveSpaceChromatograms(Size s)
Iterator getClosestSpectrumInRT(const double RT, UInt ms_level)
Iterator begin() noexcept
Definition: MSExperiment.h:156
SpectrumType * createSpec_(PeakType::CoordinateType rt, const StringList &metadata_names)
ChromatogramPeakT ChromatogramPeakType
Chromatogram peak type.
Definition: MSExperiment.h:57
MSSpectrum & getSpectrum(Size id)
returns a single spectrum
AreaIterator areaBegin(const RangeManagerType &range, UInt ms_level=1)
Returns an 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:67
Size getNrChromatograms() const
get the total number of chromatograms available
Iterator getClosestSpectrumInRT(const double RT)
Base::value_type value_type
Definition: MSExperiment.h:89
Size size() const noexcept
The number of spectra.
Definition: MSExperiment.h:121
MSExperiment()
Constructor.
bool operator!=(const MSExperiment &rhs) const
Equality operator.
Peak1D PeakT
Definition: MSExperiment.h:49
ConstAreaIterator areaEndConst() const
Returns a non-mutable invalid area iterator marking the end of an area.
void get2DPeakDataIMPerSpectrum(CoordinateType min_rt, CoordinateType max_rt, CoordinateType min_mz, CoordinateType max_mz, Size ms_level, 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:396
void set2DData(const Container &container)
Assignment of a data container with RT and MZ to an MSExperiment.
Definition: MSExperiment.h:231
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:1283
void resize(Size n)
Resize to n spectra.
Definition: MSExperiment.h:127
ConstIterator cend() const noexcept
Definition: MSExperiment.h:181
void get2DPeakData(CoordinateType min_rt, CoordinateType max_rt, CoordinateType min_mz, CoordinateType max_mz, Size ms_level, std::vector< float > &rt, std::vector< float > &mz, std::vector< float > &intensity) const
Definition: MSExperiment.h:449
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 get2DPeakDataIM(CoordinateType min_rt, CoordinateType max_rt, CoordinateType min_mz, CoordinateType max_mz, Size ms_level, std::vector< float > &rt, std::vector< float > &mz, std::vector< float > &intensity, std::vector< float > &ion_mobility) const
Definition: MSExperiment.h:482
void sortChromatograms(bool sort_rt=true)
Sorts the data points of the chromatograms by m/z.
int getFirstProductSpectrum(int zero_based_index) const
Returns the index of the first product spectrum given an index.
Iterator RTBegin(CoordinateType rt)
Fast search for spectrum range begin.
std::vector< std::vector< MSExperiment::CoordinateType > > aggregateFromMatrix(const Matrix< double > &ranges, unsigned int ms_level, const std::string &mz_agg) const
Wrapper for aggregate function that takes a matrix of m/z and RT ranges.
Definition: MSExperiment.h:853
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:83
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:81
const SpectrumType & operator[](Size n) const
Random access to n'th spectrum.
Definition: MSExperiment.h:151
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
std::vector< MSChromatogram > extractXICsFromMatrix(const Matrix< double > &ranges, unsigned int ms_level, const std::string &mz_agg) const
Wrapper for extractXICs function that takes a matrix of m/z and RT ranges.
Definition: MSExperiment.h:936
Iterator end()
Definition: MSExperiment.h:171
std::vector< std::vector< MSExperiment::CoordinateType > > aggregate(const std::vector< std::pair< RangeMZ, RangeRT >> &mz_rt_ranges, unsigned int ms_level) const
Definition: MSExperiment.h:707
UInt64 total_size_
Number of all data points.
Definition: MSExperiment.h:1285
bool isSorted(bool check_mz=true) const
Checks if all spectra are sorted with respect to ascending RT.
MSExperiment(const MSExperiment &source)
Copy constructor.
ConstIterator end() const noexcept
Definition: MSExperiment.h:176
RangeManager< RangeRT, RangeMZ, RangeIntensity, RangeMobility > RangeManagerType
RangeManager type.
Definition: MSExperiment.h:63
std::vector< MSSpectrum > & getSpectra()
returns the spectrum list (mutable)
ConstIterator getClosestSpectrumInRT(const double RT) const
Returns the closest(=nearest) spectrum in retention time to the given RT.
void set2DData(const Container &container)
Assignment of a data container with RT and MZ to an MSExperiment.
Definition: MSExperiment.h:295
ChromatogramPeak ChromatogramPeakT
Definition: MSExperiment.h:50
void sortSpectra(bool sort_mz=true)
Sorts the data points by retention time.
void reset()
Clear all internal data (spectra, ranges, metadata)
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)
void get2DPeakDataPerSpectrum(CoordinateType min_rt, CoordinateType max_rt, CoordinateType min_mz, CoordinateType max_mz, Size ms_level, std::vector< float > &rt, std::vector< std::vector< float >> &mz, std::vector< std::vector< float >> &intensity) const
Definition: MSExperiment.h:357
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:139
Base::const_iterator const_iterator
Definition: MSExperiment.h:91
void updateRanges() override
std::vector< std::vector< MSExperiment::CoordinateType > > aggregate(const std::vector< std::pair< RangeMZ, RangeRT >> &mz_rt_ranges, unsigned int ms_level, MzReductionFunctionType func_mz_reduction) const
Aggregates data over specified m/z and RT ranges at a given MS level using a custom reduction functio...
Definition: MSExperiment.h:596
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:79
bool hasPeptideIdentifications() const
do any of the spectra have a PeptideID?
void clear(bool clear_meta_data)
Clears all data and meta data.
ConstIterator getFirstProductSpectrum(ConstIterator iterator) const
SpectrumType & operator[](Size n)
Random access to n'th spectrum.
Definition: MSExperiment.h:145
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:1287
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:44
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:28
double CoordinateType
Coordinate type.
Definition: Peak1D.h:40
IntensityType getIntensity() const
Definition: Peak1D.h:82
float IntensityType
Intensity type.
Definition: Peak1D.h:36
Definition: RangeManager.h:871
A more convenient string class.
Definition: String.h:34
int64_t Int64
Signed integer type (64bit)
Definition: Types.h:40
int Int
Signed integer type.
Definition: Types.h:72
uint64_t UInt64
Unsigned integer type (64bit)
Definition: Types.h:47
unsigned int UInt
Unsigned integer type.
Definition: Types.h:64
size_t Size
Size type e.g. used as variable which can hold result of size()
Definition: Types.h:97
std::vector< String > StringList
Vector of String.
Definition: ListUtils.h:44
static double sum(IteratorType begin, IteratorType end)
Calculates the sum of a range of values.
Definition: StatisticFunctions.h:81
const double C13C12_MASSDIFF_U
Definition: Constants.h:95
Main OpenMS namespace.
Definition: openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/ISpectrumAccess.h:19
Peak2D PeakType
Definition: MassTrace.h:21
std::ostream & operator<<(std::ostream &os, const AccurateMassSearchResult &amsr)
DriftTimeUnit
Drift time unit for ion mobility.
Definition: IMTypes.h:23
static void addData_(SpectrumType *spectrum, const ContainerValueType *item)
general method for adding data points
Definition: MSExperiment.h:1305
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:1313
static void addData_(SpectrumType *spectrum, const ContainerValueType *item)
specialization for adding feature mass traces (does not support metadata_names currently)
Definition: MSExperiment.h:1329
Helper class to add either general data points in set2DData or use mass traces from meta values.
Definition: MSExperiment.h:1296
static void addData_(SpectrumType *spectrum, const ContainerValueType *item)
static void addData_(SpectrumType *spectrum, const ContainerValueType *item, const StringList &store_metadata_names)
Calculates the sum of intensities for a range of elements.
Definition: MSExperiment.h:528
auto operator()(Iterator begin, Iterator end) const
Definition: MSExperiment.h:531
Definition: RangeManager.h:346
Definition: RangeManager.h:285