26 class ChromatogramPeak;
78 typedef std::vector<SpectrumType>
Base;
84 typedef std::vector<SpectrumType>::iterator
Iterator;
134 bool empty() const noexcept;
159 void reserveSpaceSpectra(
Size s);
160 void reserveSpaceChromatograms(
Size s);
170 template <class Container>
171 void get2DData(Container& cont)
const
173 for (
typename Base::const_iterator spec = spectra_.begin(); spec != spectra_.end(); ++spec)
175 if (spec->getMSLevel() != 1)
179 typename Container::value_type s;
180 for (
typename SpectrumType::const_iterator it = spec->begin(); it != spec->end(); ++it)
183 cont.back().
setRT(spec->getRT());
184 cont.back().setMZ(it->getMZ());
185 cont.back().setIntensity(it->getIntensity());
201 template <
class Container>
204 set2DData<false, Container>(container);
221 template <
class Container>
228 for (
typename Container::const_iterator iter = container.begin(); iter != container.end(); ++iter)
231 if (current_rt != iter->getRT() || spectrum ==
nullptr)
234 if (current_rt > iter->getRT())
238 current_rt = iter->getRT();
239 spectrum = createSpec_(current_rt, store_metadata_names);
265 template <
bool add_mass_traces,
class Container>
272 for (
typename Container::const_iterator iter = container.begin(); iter != container.end(); ++iter)
275 if (current_rt != iter->getRT() || spectrum ==
nullptr)
278 if (current_rt > iter->getRT())
282 current_rt = iter->getRT();
283 spectrum = createSpec_(current_rt);
334 std::vector<float>& rt,
335 std::vector<std::vector<float>>& mz,
336 std::vector<std::vector<float>>& intensity)
const;
358 std::vector<float>& rt,
359 std::vector<std::vector<float>>& mz,
360 std::vector<std::vector<float>>& intensity,
361 std::vector<std::vector<float>>& ion_mobility)
const;
382 std::vector<float>& rt,
383 std::vector<float>& mz,
384 std::vector<float>& intensity)
const;
406 std::vector<float>& rt,
407 std::vector<float>& mz,
408 std::vector<float>& intensity,
409 std::vector<float>& ion_mobility)
const;
423 template <
typename Iterator>
426 using ValueType =
typename std::iterator_traits<Iterator>::value_type;
427 using IntensityType =
decltype(std::declval<ValueType>().getIntensity());
428 static_assert(std::is_member_function_pointer_v<
decltype(&ValueType::getIntensity)>,
429 "Iterator value type must have getIntensity() member function");
432 for (
auto it = begin; it != end; ++it) {
433 sum += it->getIntensity();
487template<
class MzReductionFunctionType>
488std::vector<std::vector<MSExperiment::CoordinateType>>
aggregate(
489 const std::vector<std::pair<RangeMZ, RangeRT>>& mz_rt_ranges,
490 unsigned int ms_level,
491 MzReductionFunctionType func_mz_reduction)
const
494 if (mz_rt_ranges.empty())
501 std::vector<std::reference_wrapper<const MSSpectrum>> spectra_view;
502 spectra_view.reserve(spectra_.size());
503 std::copy_if(spectra_.begin(), spectra_.end(),
504 std::back_inserter(spectra_view),
505 [ms_level](
const auto& spec) {
506 return spec.getMSLevel() == ms_level;
510 if (spectra_view.empty()) {
516 auto getCoveredSpectra = [](
517 const std::vector<std::reference_wrapper<const MSSpectrum>>& spectra_view,
518 const std::vector<std::pair<RangeMZ, RangeRT>>& mz_rt_ranges)
519 -> std::vector<std::pair<size_t, size_t>>
521 std::vector<std::pair<size_t, size_t>> res;
522 res.reserve(mz_rt_ranges.size());
524 for (
const auto & mz_rt : mz_rt_ranges)
528 auto start_it = std::lower_bound(spectra_view.begin(), spectra_view.end(), mz_rt.second.getMin(),
529 [](
const auto& spec,
double rt)
530 { return spec.get().getRT() < rt; });
532 auto stop_it = std::upper_bound(spectra_view.begin(), spectra_view.end(), mz_rt.second.getMax(),
533 [](
double rt,
const auto& spec)
534 { return rt < spec.get().getRT(); });
537 std::distance(spectra_view.begin(), start_it),
538 std::distance(spectra_view.begin(), stop_it)
546 const std::vector<std::pair<size_t, size_t>> rt_ranges_idcs = getCoveredSpectra(spectra_view, mz_rt_ranges);
549 std::vector<std::vector<MSExperiment::CoordinateType>> result(mz_rt_ranges.size());
552 std::vector<std::vector<size_t>> spec_idx_to_range_idx(spectra_view.size());
555 for (
size_t i = 0; i < rt_ranges_idcs.size(); ++i)
557 const auto& [start, stop] = rt_ranges_idcs[i];
558 result[i].resize(stop - start);
560 for (
size_t j = start; j < stop; ++j)
562 spec_idx_to_range_idx[j].push_back(i);
566 #pragma omp parallel for schedule(dynamic)
567 for (
Int64 i = 0; i < (
Int64)spec_idx_to_range_idx.size(); ++i)
569 if (spec_idx_to_range_idx[i].empty())
continue;
571 const auto& spec = spectra_view[i].get();
572 auto spec_begin = spec.cbegin();
573 auto spec_end = spec.cend();
575 for (
size_t range_idx : spec_idx_to_range_idx[i])
577 const auto& mz_range = mz_rt_ranges[range_idx].first;
580 auto start_it = spec.PosBegin(spec_begin, mz_range.getMinMZ(), spec_end);
581 auto end_it = start_it;
583 while (end_it != spec_end && end_it->getPosition() <= mz_range.getMaxMZ())
591 result[range_idx][i - rt_ranges_idcs[range_idx].first] =
592 func_mz_reduction(start_it, end_it);
599std::vector<std::vector<MSExperiment::CoordinateType>>
aggregate(
600 const std::vector<std::pair<RangeMZ, RangeRT>>& mz_rt_ranges,
601 unsigned int ms_level)
const
618template<
class MzReductionFunctionType>
620 const std::vector<std::pair<RangeMZ, RangeRT>>& mz_rt_ranges,
621 unsigned int ms_level,
622 MzReductionFunctionType func_mz_reduction)
const
625 if (mz_rt_ranges.empty())
632 std::vector<std::reference_wrapper<const MSSpectrum>> spectra_view;
633 spectra_view.reserve(spectra_.size());
634 std::copy_if(spectra_.begin(), spectra_.end(),
635 std::back_inserter(spectra_view),
636 [ms_level](
const auto& spec) {
637 return spec.getMSLevel() == ms_level;
641 if (spectra_view.empty()) {
647 auto getCoveredSpectra = [](
648 const std::vector<std::reference_wrapper<const MSSpectrum>>& spectra_view,
649 const std::vector<std::pair<RangeMZ, RangeRT>>& mz_rt_ranges)
650 -> std::vector<std::pair<size_t, size_t>>
652 std::vector<std::pair<size_t, size_t>> res;
653 res.reserve(mz_rt_ranges.size());
655 for (
const auto & mz_rt : mz_rt_ranges)
657 auto start_it = std::lower_bound(spectra_view.begin(), spectra_view.end(), mz_rt.second.getMin(),
658 [](
const auto& spec,
double rt)
659 { return spec.get().getRT() < rt; });
661 auto stop_it = std::upper_bound(spectra_view.begin(), spectra_view.end(), mz_rt.second.getMax(),
662 [](
double rt,
const auto& spec)
663 { return rt < spec.get().getRT(); });
666 std::distance(spectra_view.begin(), start_it),
667 std::distance(spectra_view.begin(), stop_it)
674 const std::vector<std::pair<size_t, size_t>> rt_ranges_idcs = getCoveredSpectra(spectra_view, mz_rt_ranges);
677 std::vector<MSChromatogram> result(mz_rt_ranges.size());
680 std::vector<std::vector<size_t>> spec_idx_to_range_idx(spectra_view.size());
683 for (
size_t i = 0; i < rt_ranges_idcs.size(); ++i)
685 const auto& [start, stop] = rt_ranges_idcs[i];
686 result[i].resize(stop - start);
687 result[i].getProduct().setMZ(
688 (mz_rt_ranges[i].first.getMinMZ() + mz_rt_ranges[i].first.getMaxMZ()) / 2.0);
689 for (
size_t j = start; j < stop; ++j)
691 spec_idx_to_range_idx[j].push_back(i);
695 #pragma omp parallel for schedule(dynamic)
696 for (
Int64 i = 0; i < (
Int64)spec_idx_to_range_idx.size(); ++i)
698 if (spec_idx_to_range_idx[i].empty())
continue;
700 const auto& spec = spectra_view[i].get();
701 const double rt = spec.getRT();
702 auto spec_begin = spec.cbegin();
703 auto spec_end = spec.cend();
705 for (
size_t range_idx : spec_idx_to_range_idx[i])
707 const auto& mz_range = mz_rt_ranges[range_idx].first;
710 auto start_it = spec.PosBegin(spec_begin, mz_range.getMinMZ(), spec_end);
711 auto end_it = start_it;
713 while (end_it != spec_end && end_it->getPosition() <= mz_range.getMaxMZ())
719 result[range_idx][i - rt_ranges_idcs[range_idx].first] =
724 for (
auto& r : result) r.updateRanges();
731 const std::vector<std::pair<RangeMZ, RangeRT>>& mz_rt_ranges,
732 unsigned int ms_level)
const
747 unsigned int ms_level,
748 const std::string& mz_agg)
const
751 if (ranges.
cols() != 4)
754 "Range matrix must have 4 columns [mz_min, mz_max, rt_min, rt_max]");
758 std::vector<std::pair<RangeMZ, RangeRT>> mz_rt_ranges;
759 mz_rt_ranges.reserve((
Size)ranges.
rows());
763 mz_rt_ranges.emplace_back(
764 RangeMZ(ranges(i, 0), ranges(i, 1)),
765 RangeRT(ranges(i, 2), ranges(i, 3))
773 return aggregate(mz_rt_ranges, ms_level,
774 [](
auto begin_it,
auto end_it)
776 return std::accumulate(begin_it, end_it, 0.0,
780 else if (mz_agg ==
"max")
782 return aggregate(mz_rt_ranges, ms_level,
783 [](
auto begin_it,
auto end_it)->
double
785 if (begin_it == end_it)
return 0.0;
786 return std::max_element(begin_it, end_it,
791 else if (mz_agg ==
"min")
793 return aggregate(mz_rt_ranges, ms_level,
794 [](
auto begin_it,
auto end_it)->
double
796 if (begin_it == end_it)
return 0.0;
797 return std::min_element(begin_it, end_it,
802 else if (mz_agg ==
"mean")
804 return aggregate(mz_rt_ranges, ms_level,
805 [](
auto begin_it,
auto end_it)
807 if (begin_it == end_it)
return 0.0;
808 double sum = std::accumulate(begin_it, end_it, 0.0,
810 return sum /
static_cast<double>(std::distance(begin_it, end_it));
816 "Invalid aggregation function", mz_agg);
830 unsigned int ms_level,
831 const std::string& mz_agg)
const
834 if (ranges.
cols() != 4)
837 "Range matrix must have 4 columns [mz_min, mz_max, rt_min, rt_max]");
841 std::vector<std::pair<RangeMZ, RangeRT>> mz_rt_ranges;
842 mz_rt_ranges.reserve((
Size)ranges.
rows());
846 mz_rt_ranges.emplace_back(
847 RangeMZ(ranges(i, 0), ranges(i, 1)),
848 RangeRT(ranges(i, 2), ranges(i, 3))
855 return extractXICs(mz_rt_ranges, ms_level,
856 [](
auto begin_it,
auto end_it)
858 return std::accumulate(begin_it, end_it, 0.0,
862 else if (mz_agg ==
"max")
864 return extractXICs(mz_rt_ranges, ms_level,
865 [](
auto begin_it,
auto end_it)->
double
867 if (begin_it == end_it)
return 0.0;
868 return std::max_element(begin_it, end_it,
873 else if (mz_agg ==
"min")
875 return extractXICs(mz_rt_ranges, ms_level,
876 [](
auto begin_it,
auto end_it)->
double
878 if (begin_it == end_it)
return 0.0;
879 return std::min_element(begin_it, end_it,
884 else if (mz_agg ==
"mean")
886 return extractXICs(mz_rt_ranges, ms_level,
887 [](
auto begin_it,
auto end_it)
889 if (begin_it == end_it)
return 0.0;
890 double sum = std::accumulate(begin_it, end_it, 0.0,
892 return sum /
static_cast<double>(std::distance(begin_it, end_it));
898 "Invalid aggregation function", mz_agg);
970 combined_ranges_.clearRanges();
971 spectrum_ranges_.clearRanges();
972 chromatogram_ranges_.clearRanges();
976 double getMinRT()
const {
return combined_ranges_.getMinRT(); }
979 double getMaxRT()
const {
return combined_ranges_.getMaxRT(); }
982 double getMinMZ()
const {
return combined_ranges_.getMinMZ(); }
985 double getMaxMZ()
const {
return combined_ranges_.getMaxMZ(); }
1263 template<
typename ContainerValueType,
bool addMassTraces>
1270 template<
typename ContainerValueType>
1277 spectrum->insert(spectrum->end(),
PeakType());
1278 spectrum->back().setIntensity(item->getIntensity());
1279 spectrum->back().setPosition(item->getMZ());
1284 addData_(spectrum, item);
1285 for (StringList::const_iterator itm = store_metadata_names.begin(); itm != store_metadata_names.end(); ++itm)
1287 float val = std::numeric_limits<float>::quiet_NaN();
1288 if (item->metaValueExists(*itm)) val = item->getMetaValue(*itm);
1294 template<
typename ContainerValueType>
1300 if (item->metaValueExists(
"num_of_masstraces"))
1302 Size mts = item->getMetaValue(
"num_of_masstraces");
1303 int charge = (item->getCharge()==0 ? 1 : item->getCharge());
1304 for (
Size i = 0; i < mts; ++i)
1307 if (!item->metaValueExists(meta_name))
1309 throw Exception::Precondition(__FILE__, __LINE__, OPENMS_PRETTY_FUNCTION,
String(
"Meta value '") + meta_name +
"' expected but not found in container.");
1311 ContainerValueType p;
1312 p.setIntensity(item->getMetaValue(meta_name));
1313 p.setPosition(item->getMZ() + Constants::C13C12_MASSDIFF_U / charge * i);
A 1-dimensional raw data point or peak for chromatograms.
Definition ChromatogramPeak.h:29
Range manager for chromatograms.
Definition ChromatogramRangeManager.h:31
Exception indicating that an invalid parameter was handed over to an algorithm.
Definition Exception.h:317
Invalid value exception.
Definition Exception.h:306
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:49
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:599
MSExperiment(MSExperiment &&)=default
Move constructor.
ConstIterator IMBegin(CoordinateType im) const
Fast search for spectrum range begin.
RangeManagerType combined_ranges_
Combined range manager that provides overall ranges across both spectra and chromatograms (maintained...
Definition MSExperiment.h:1225
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:1217
std::vector< SpectrumType > Base
STL base class type.
Definition MSExperiment.h:78
void setChromatograms(std::vector< MSChromatogram > &&chromatograms)
Base::iterator iterator
Definition MSExperiment.h:97
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.
double getMaxRT() const
Get the maximum RT value from the combined ranges (includes both chromatogram and spectra ranges)
Definition MSExperiment.h:979
~MSExperiment() override
D'tor.
PeakType::CoordinateType CoordinateType
Coordinate type of peak positions.
Definition MSExperiment.h:62
void swap(MSExperiment &from)
Swaps the content of this map with the content of from.
MSChromatogram ChromatogramType
Chromatogram type.
Definition MSExperiment.h:76
void addSpectrum(const MSSpectrum &spectrum)
adds a spectrum to the list
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:619
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
PeakType::IntensityType IntensityType
Intensity type of peaks.
Definition MSExperiment.h:64
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:222
std::vector< SpectrumType >::iterator Iterator
Mutable iterator.
Definition MSExperiment.h:84
bool clearMetaDataArrays()
Clears the meta data arrays of all contained spectra (float, integer and string arrays)
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(),...
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
ConstIterator RTBegin(CoordinateType rt) const
Fast search for spectrum range begin.
Size getNrSpectra() const
get the total number of spectra available
SpectrumType * createSpec_(PeakType::CoordinateType rt, const StringList &metadata_names)
UInt64 getSize() const
returns the total number of peaks (spectra and chromatograms included)
double getMaxMZ() const
Get the maximum m/z value from the combined ranges (includes both chromatogram and spectra ranges)
Definition MSExperiment.h:985
ConstIterator RTEnd(CoordinateType rt) const
Fast search for spectrum range end (returns the past-the-end iterator)
void addChromatogram(MSChromatogram &&chrom)
Iterator getClosestSpectrumInRT(const double RT, UInt ms_level)
double getMinMobility() const
Get the minimum mobility value from the combined ranges (includes both chromatogram and spectra range...
Definition MSExperiment.h:994
SpectrumRangeManager SpectrumRangeManagerType
Spectrum range manager type for tracking ranges with MS level separation.
Definition MSExperiment.h:69
MSExperiment & operator=(const MSExperiment &source)
Assignment operator.
std::vector< MSChromatogram > & getChromatograms()
returns the chromatogram list (mutable)
double getMinIntensity() const
Get the minimum intensity value from the combined ranges (includes both chromatogram and spectra rang...
Definition MSExperiment.h:988
std::vector< MSChromatogram > extractXICs(const std::vector< std::pair< RangeMZ, RangeRT > > &mz_rt_ranges, unsigned int ms_level) const
Definition MSExperiment.h:730
MSChromatogram & getChromatogram(Size id)
returns a single chromatogram
ChromatogramPeakT ChromatogramPeakType
Chromatogram peak type.
Definition MSExperiment.h:60
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)
AreaIterator areaBegin(CoordinateType min_rt, CoordinateType max_rt, CoordinateType min_mz, CoordinateType max_mz, UInt ms_level=1)
Returns an area iterator for area.
MSSpectrum SpectrumType
Spectrum Type.
Definition MSExperiment.h:74
double getMinMZ() const
Get the minimum m/z value from the combined ranges (includes both chromatogram and spectra ranges)
Definition MSExperiment.h:982
Size getNrChromatograms() const
get the total number of chromatograms available
PeakT PeakType
Peak type.
Definition MSExperiment.h:58
Iterator getClosestSpectrumInRT(const double RT)
SpectrumType * createSpec_(PeakType::CoordinateType rt)
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:745
const ExperimentalSettings & getExperimentalSettings() const
returns the meta information of this experiment (const access)
Base::value_type value_type
Definition MSExperiment.h:96
Size size() const noexcept
The number of spectra.
MSExperiment()
Constructor.
bool operator!=(const MSExperiment &rhs) const
Equality operator.
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:828
Peak1D PeakT
Definition MSExperiment.h:52
ConstAreaIterator areaEndConst() const
Returns a non-mutable invalid area iterator marking the end of an area.
const ChromatogramRangeManagerType & chromatogramRanges() const
Returns a const reference to the chromatogram range manager.
Definition MSExperiment.h:1248
void set2DData(const Container &container)
Assignment of a data container with RT and MZ to an MSExperiment.
Definition MSExperiment.h:202
void setSpectra(std::vector< MSSpectrum > &&spectra)
void getPrimaryMSRunPath(StringList &toFill) const
get the file path to the first MS run
MSExperiment & operator=(const ExperimentalSettings &source)
Assignment operator.
double getMaxMobility() const
Get the maximum mobility value from the combined ranges (includes both chromatogram and spectra range...
Definition MSExperiment.h:997
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
void setSpectra(const std::vector< MSSpectrum > &spectra)
sets the spectrum list
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
const RangeManagerType & combinedRanges() const
Returns a const reference to the combined range manager.
Definition MSExperiment.h:1258
void sortChromatograms(bool sort_rt=true)
Sorts the data points of the chromatograms by m/z.
double getMaxIntensity() const
Get the maximum intensity value from the combined ranges (includes both chromatogram and spectra rang...
Definition MSExperiment.h:991
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.
void clearRanges()
Clear all ranges in all range managers.
Definition MSExperiment.h:968
const std::vector< MSChromatogram > & getChromatograms() const
returns the chromatogram list
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:90
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:88
double getMinRT() const
Get the minimum RT value from the combined ranges (includes both chromatogram and spectra ranges)
Definition MSExperiment.h:976
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).
ExperimentalSettings & getExperimentalSettings()
returns the meta information of this experiment (mutable access)
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
Combined RangeManager type to store the overall range of all spectra and chromatograms (for backward ...
Definition MSExperiment.h:66
ConstIterator getClosestSpectrumInRT(const double RT) const
Returns the closest(=nearest) spectrum in retention time to the given RT.
ChromatogramRangeManager ChromatogramRangeManagerType
Chromatogram range manager type for tracking chromatogram-specific ranges.
Definition MSExperiment.h:72
void set2DData(const Container &container)
Assignment of a data container with RT and MZ to an MSExperiment.
Definition MSExperiment.h:266
ChromatogramPeak ChromatogramPeakT
Definition MSExperiment.h:53
void sortSpectra(bool sort_mz=true)
Sorts the data points by retention time.
MSExperiment & operator=(MSExperiment &&) &=default
Move assignment operator.
void reset()
Clear all internal data (spectra, ranges, metadata)
void addSpectrum(MSSpectrum &&spectrum)
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:488
void updateRanges()
Updates the m/z, intensity, mobility, and retention time ranges of all spectra and chromatograms.
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)
SpectrumRangeManagerType spectrum_ranges_
Spectrum range manager for tracking m/z, intensity, RT, and ion mobility ranges of spectra with MS le...
Definition MSExperiment.h:1219
ConstIterator getPrecursorSpectrum(ConstIterator iterator) const
Returns the precursor spectrum of the scan pointed to by iterator.
Base::const_iterator const_iterator
Definition MSExperiment.h:98
void setSqlRunID(UInt64 id)
sets the run-ID which is used when storing an sqMass file
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:86
const SpectrumRangeManagerType & spectrumRanges() const
Returns a const reference to the spectrum range manager.
Definition MSExperiment.h:1237
std::vector< UInt > getMSLevels() const
returns a sorted array of MS levels (calculated on demand)
void clear(bool clear_meta_data)
Clears all data and meta data.
const std::vector< MSSpectrum > & getSpectra() const
returns the spectrum list
MSSpectrum & getSpectrum(Size id)
returns a single spectrum
ConstIterator getFirstProductSpectrum(ConstIterator iterator) const
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:1215
std::vector< MSSpectrum > & getSpectra()
returns the spectrum list (mutable)
ChromatogramRangeManagerType chromatogram_ranges_
Chromatogram range manager for tracking RT, intensity, and m/z ranges of chromatograms.
Definition MSExperiment.h:1222
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.
void setRT(double rt)
Sets the absolute retention time (in seconds)
A 2D matrix class with efficient buffer access for NumPy interoperability.
Definition Matrix.h:35
Size cols() const
Number of columns.
Definition Matrix.h:84
Size rows() const
Number of rows.
Definition Matrix.h:81
A 1-dimensional raw data point or peak.
Definition Peak1D.h:30
double CoordinateType
Coordinate type.
Definition Peak1D.h:42
IntensityType getIntensity() const
Definition Peak1D.h:84
float IntensityType
Intensity type.
Definition Peak1D.h:38
Handles the management of a multidimensional range, e.g. RangeMZ and RangeIntensity for spectra.
Definition RangeManager.h:568
Advanced range manager for MS spectra with separate ranges for each MS level.
Definition SpectrumRangeManager.h:44
A more convenient string class.
Definition String.h:34
int64_t Int64
Signed integer type (64bit)
Definition Types.h:40
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
Main OpenMS namespace.
Definition openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/ISpectrumAccess.h:19
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:1274
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:1282
static void addData_(SpectrumType *spectrum, const ContainerValueType *item)
specialization for adding feature mass traces (does not support metadata_names currently)
Definition MSExperiment.h:1298
Helper class to add either general data points in set2DData or use mass traces from meta values.
Definition MSExperiment.h:1265
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:421
auto operator()(Iterator begin, Iterator end) const
Definition MSExperiment.h:424
Definition RangeManager.h:358
Definition RangeManager.h:295