26 class ChromatogramPeak;
78 typedef std::vector<SpectrumType>
Base;
83 typedef std::vector<SpectrumType>::iterator
Iterator;
130 return spectra_.size();
142 return spectra_.empty();
165 return spectra_.begin();
170 return spectra_.cbegin();
175 return spectra_.cbegin();
180 return spectra_.end();
185 return spectra_.cend();
190 return spectra_.cend();
206 template <
class Container>
209 for (
typename Base::const_iterator spec = spectra_.begin(); spec != spectra_.end(); ++spec)
211 if (spec->getMSLevel() != 1)
215 typename Container::value_type s;
216 for (
typename SpectrumType::const_iterator it = spec->begin(); it != spec->end(); ++it)
219 cont.back().setRT(spec->getRT());
220 cont.back().setMZ(it->getMZ());
221 cont.back().setIntensity(it->getIntensity());
237 template <
class Container>
240 set2DData<false, Container>(container);
257 template <
class Container>
264 for (
typename Container::const_iterator iter = container.begin(); iter != container.end(); ++iter)
267 if (current_rt != iter->getRT() || spectrum ==
nullptr)
270 if (current_rt > iter->getRT())
274 current_rt = iter->getRT();
275 spectrum = createSpec_(current_rt, store_metadata_names);
301 template <
bool add_mass_traces,
class Container>
308 for (
typename Container::const_iterator iter = container.begin(); iter != container.end(); ++iter)
311 if (current_rt != iter->getRT() || spectrum ==
nullptr)
314 if (current_rt > iter->getRT())
318 current_rt = iter->getRT();
319 spectrum = createSpec_(current_rt);
332 AreaIterator areaBegin(CoordinateType min_rt, CoordinateType max_rt,
334 CoordinateType min_mz, CoordinateType max_mz,
UInt ms_level = 1);
370 std::vector<float>& rt,
371 std::vector<std::vector<float>>& mz,
372 std::vector<std::vector<float>>& intensity)
const
375 for (
auto it = areaBeginConst(min_rt, max_rt, min_mz, max_mz, ms_level); it != areaEndConst(); ++it)
379 t = (float)it.getRT();
381 mz.push_back(std::vector<float>());
382 intensity.push_back(std::vector<float>());
384 mz.back().push_back((
float)it->getMZ());
385 intensity.back().push_back(it->getIntensity());
409 std::vector<float>& rt,
410 std::vector<std::vector<float>>& mz,
411 std::vector<std::vector<float>>& intensity,
412 std::vector<std::vector<float>>& ion_mobility)
const
415 std::vector<float> im;
417 for (
auto it = areaBeginConst(min_rt, max_rt, min_mz, max_mz, ms_level); it != areaEndConst(); ++it)
421 t = (float)it.getRT();
423 std::tie(unit, im) = it.getSpectrum().maybeGetIMData();
424 mz.push_back(std::vector<float>());
425 intensity.push_back(std::vector<float>());
426 ion_mobility.push_back(std::vector<float>());
431 const Size peak_index = it.getPeakIndex().peak;
432 ion_mobility.back().push_back(im[peak_index]);
436 ion_mobility.back().push_back(-1.0);
438 mz.back().push_back((
float)it->getMZ());
439 intensity.back().push_back(it->getIntensity());
462 std::vector<float>& rt,
463 std::vector<float>& mz,
464 std::vector<float>& intensity)
467 for (
auto it = areaBeginConst(min_rt, max_rt, min_mz, max_mz, ms_level); it != areaEndConst(); ++it)
469 rt.push_back((
float)it.getRT());
470 mz.push_back((
float)it->getMZ());
471 intensity.push_back(it->getIntensity());
495 std::vector<float>& rt,
496 std::vector<float>& mz,
497 std::vector<float>& intensity,
498 std::vector<float>& ion_mobility)
const
500 for (
auto it = areaBeginConst(min_rt, max_rt, min_mz, max_mz, ms_level); it != areaEndConst(); ++it)
503 std::vector<float> im;
507 t = (float)it.getRT();
508 std::tie(unit, im) = it.getSpectrum().maybeGetIMData();
510 rt.push_back((
float)it.getRT());
511 mz.push_back((
float)it->getMZ());
512 intensity.push_back(it->getIntensity());
515 const Size peak_index = it.getPeakIndex().peak;
516 ion_mobility.push_back(im[peak_index]);
520 ion_mobility.push_back(-1.0);
537 template <
typename Iterator>
540 using ValueType =
typename std::iterator_traits<Iterator>::value_type;
541 using IntensityType = decltype(std::declval<ValueType>().getIntensity());
542 static_assert(std::is_member_function_pointer_v<decltype(&ValueType::getIntensity)>,
543 "Iterator value type must have getIntensity() member function");
546 for (
auto it = begin; it != end; ++it) {
547 sum += it->getIntensity();
602 template<
class MzReductionFunctionType>
603 std::vector<std::vector<MSExperiment::CoordinateType>>
aggregate(
604 const std::vector<std::pair<RangeMZ, RangeRT>>& mz_rt_ranges,
605 unsigned int ms_level,
606 MzReductionFunctionType func_mz_reduction)
const
609 if (mz_rt_ranges.empty())
616 std::vector<std::reference_wrapper<const MSSpectrum>> spectra_view;
617 spectra_view.reserve(spectra_.size());
618 std::copy_if(spectra_.begin(), spectra_.end(),
619 std::back_inserter(spectra_view),
620 [ms_level](
const auto& spec) {
621 return spec.getMSLevel() == ms_level;
625 if (spectra_view.empty()) {
631 auto getCoveredSpectra = [](
632 const std::vector<std::reference_wrapper<const MSSpectrum>>& spectra_view,
633 const std::vector<std::pair<RangeMZ, RangeRT>>& mz_rt_ranges)
634 -> std::vector<std::pair<size_t, size_t>>
636 std::vector<std::pair<size_t, size_t>> res;
637 res.reserve(mz_rt_ranges.size());
639 for (
const auto & mz_rt : mz_rt_ranges)
643 auto start_it = std::lower_bound(spectra_view.begin(), spectra_view.end(), mz_rt.second.getMin(),
644 [](
const auto& spec,
double rt)
645 { return spec.get().getRT() < rt; });
647 auto stop_it = std::upper_bound(spectra_view.begin(), spectra_view.end(), mz_rt.second.getMax(),
648 [](
double rt,
const auto& spec)
649 { return rt < spec.get().getRT(); });
652 std::distance(spectra_view.begin(), start_it),
653 std::distance(spectra_view.begin(), stop_it)
661 const std::vector<std::pair<size_t, size_t>> rt_ranges_idcs = getCoveredSpectra(spectra_view, mz_rt_ranges);
664 std::vector<std::vector<MSExperiment::CoordinateType>> result(mz_rt_ranges.size());
667 std::vector<std::vector<size_t>> spec_idx_to_range_idx(spectra_view.size());
670 for (
size_t i = 0; i < rt_ranges_idcs.size(); ++i)
672 const auto& [start, stop] = rt_ranges_idcs[i];
673 result[i].resize(stop - start);
675 for (
size_t j = start; j < stop; ++j)
677 spec_idx_to_range_idx[j].push_back(i);
681 #pragma omp parallel for schedule(dynamic)
682 for (
Int64 i = 0; i < (
Int64)spec_idx_to_range_idx.size(); ++i)
684 if (spec_idx_to_range_idx[i].empty())
continue;
686 const auto& spec = spectra_view[i].get();
687 auto spec_begin = spec.cbegin();
688 auto spec_end = spec.cend();
690 for (
size_t range_idx : spec_idx_to_range_idx[i])
692 const auto& mz_range = mz_rt_ranges[range_idx].first;
695 auto start_it = spec.PosBegin(spec_begin, mz_range.getMinMZ(), spec_end);
696 auto end_it = start_it;
698 while (end_it != spec_end && end_it->getPosition() <= mz_range.getMaxMZ())
706 result[range_idx][i - rt_ranges_idcs[range_idx].first] =
707 func_mz_reduction(start_it, end_it);
714 std::vector<std::vector<MSExperiment::CoordinateType>>
aggregate(
715 const std::vector<std::pair<RangeMZ, RangeRT>>& mz_rt_ranges,
716 unsigned int ms_level)
const
733 template<
class MzReductionFunctionType>
735 const std::vector<std::pair<RangeMZ, RangeRT>>& mz_rt_ranges,
736 unsigned int ms_level,
737 MzReductionFunctionType func_mz_reduction)
const
740 if (mz_rt_ranges.empty())
747 std::vector<std::reference_wrapper<const MSSpectrum>> spectra_view;
748 spectra_view.reserve(spectra_.size());
749 std::copy_if(spectra_.begin(), spectra_.end(),
750 std::back_inserter(spectra_view),
751 [ms_level](
const auto& spec) {
752 return spec.getMSLevel() == ms_level;
756 if (spectra_view.empty()) {
762 auto getCoveredSpectra = [](
763 const std::vector<std::reference_wrapper<const MSSpectrum>>& spectra_view,
764 const std::vector<std::pair<RangeMZ, RangeRT>>& mz_rt_ranges)
765 -> std::vector<std::pair<size_t, size_t>>
767 std::vector<std::pair<size_t, size_t>> res;
768 res.reserve(mz_rt_ranges.size());
770 for (
const auto & mz_rt : mz_rt_ranges)
772 auto start_it = std::lower_bound(spectra_view.begin(), spectra_view.end(), mz_rt.second.getMin(),
773 [](
const auto& spec,
double rt)
774 { return spec.get().getRT() < rt; });
776 auto stop_it = std::upper_bound(spectra_view.begin(), spectra_view.end(), mz_rt.second.getMax(),
777 [](
double rt,
const auto& spec)
778 { return rt < spec.get().getRT(); });
781 std::distance(spectra_view.begin(), start_it),
782 std::distance(spectra_view.begin(), stop_it)
789 const std::vector<std::pair<size_t, size_t>> rt_ranges_idcs = getCoveredSpectra(spectra_view, mz_rt_ranges);
792 std::vector<MSChromatogram> result(mz_rt_ranges.size());
795 std::vector<std::vector<size_t>> spec_idx_to_range_idx(spectra_view.size());
798 for (
size_t i = 0; i < rt_ranges_idcs.size(); ++i)
800 const auto& [start, stop] = rt_ranges_idcs[i];
801 result[i].resize(stop - start);
802 result[i].getProduct().setMZ(
803 (mz_rt_ranges[i].first.getMinMZ() + mz_rt_ranges[i].first.getMaxMZ()) / 2.0);
804 for (
size_t j = start; j < stop; ++j)
806 spec_idx_to_range_idx[j].push_back(i);
810 #pragma omp parallel for schedule(dynamic)
811 for (
Int64 i = 0; i < (
Int64)spec_idx_to_range_idx.size(); ++i)
813 if (spec_idx_to_range_idx[i].empty())
continue;
815 const auto& spec = spectra_view[i].get();
816 const double rt = spec.getRT();
817 auto spec_begin = spec.cbegin();
818 auto spec_end = spec.cend();
820 for (
size_t range_idx : spec_idx_to_range_idx[i])
822 const auto& mz_range = mz_rt_ranges[range_idx].first;
825 auto start_it = spec.PosBegin(spec_begin, mz_range.getMinMZ(), spec_end);
826 auto end_it = start_it;
828 while (end_it != spec_end && end_it->getPosition() <= mz_range.getMaxMZ())
834 result[range_idx][i - rt_ranges_idcs[range_idx].first] =
839 for (
auto& r : result) r.updateRanges();
846 const std::vector<std::pair<RangeMZ, RangeRT>>& mz_rt_ranges,
847 unsigned int ms_level)
const
862 unsigned int ms_level,
863 const std::string& mz_agg)
const
866 if (ranges.cols() != 4)
869 "Range matrix must have 4 columns [mz_min, mz_max, rt_min, rt_max]");
873 std::vector<std::pair<RangeMZ, RangeRT>> mz_rt_ranges;
874 mz_rt_ranges.reserve((
Size)ranges.rows());
876 for (
Size i = 0; i < (
Size)ranges.rows(); ++i)
878 mz_rt_ranges.emplace_back(
879 RangeMZ(ranges(i, 0), ranges(i, 1)),
880 RangeRT(ranges(i, 2), ranges(i, 3))
888 return aggregate(mz_rt_ranges, ms_level,
889 [](
auto begin_it,
auto end_it)
891 return std::accumulate(begin_it, end_it, 0.0,
895 else if (mz_agg ==
"max")
897 return aggregate(mz_rt_ranges, ms_level,
898 [](
auto begin_it,
auto end_it)->
double
900 if (begin_it == end_it)
return 0.0;
901 return std::max_element(begin_it, end_it,
906 else if (mz_agg ==
"min")
908 return aggregate(mz_rt_ranges, ms_level,
909 [](
auto begin_it,
auto end_it)->
double
911 if (begin_it == end_it)
return 0.0;
912 return std::min_element(begin_it, end_it,
917 else if (mz_agg ==
"mean")
919 return aggregate(mz_rt_ranges, ms_level,
920 [](
auto begin_it,
auto end_it)
922 if (begin_it == end_it)
return 0.0;
923 double sum = std::accumulate(begin_it, end_it, 0.0,
925 return sum /
static_cast<double>(std::distance(begin_it, end_it));
931 "Invalid aggregation function", mz_agg);
945 unsigned int ms_level,
946 const std::string& mz_agg)
const
949 if (ranges.cols() != 4)
952 "Range matrix must have 4 columns [mz_min, mz_max, rt_min, rt_max]");
956 std::vector<std::pair<RangeMZ, RangeRT>> mz_rt_ranges;
957 mz_rt_ranges.reserve((
Size)ranges.rows());
959 for (
Size i = 0; i < (
Size)ranges.rows(); ++i)
961 mz_rt_ranges.emplace_back(
962 RangeMZ(ranges(i, 0), ranges(i, 1)),
963 RangeRT(ranges(i, 2), ranges(i, 3))
970 return extractXICs(mz_rt_ranges, ms_level,
971 [](
auto begin_it,
auto end_it)
973 return std::accumulate(begin_it, end_it, 0.0,
977 else if (mz_agg ==
"max")
979 return extractXICs(mz_rt_ranges, ms_level,
980 [](
auto begin_it,
auto end_it)->
double
982 if (begin_it == end_it)
return 0.0;
983 return std::max_element(begin_it, end_it,
988 else if (mz_agg ==
"min")
990 return extractXICs(mz_rt_ranges, ms_level,
991 [](
auto begin_it,
auto end_it)->
double
993 if (begin_it == end_it)
return 0.0;
994 return std::min_element(begin_it, end_it,
999 else if (mz_agg ==
"mean")
1001 return extractXICs(mz_rt_ranges, ms_level,
1002 [](
auto begin_it,
auto end_it)
1004 if (begin_it == end_it)
return 0.0;
1005 double sum = std::accumulate(begin_it, end_it, 0.0,
1007 return sum /
static_cast<double>(std::distance(begin_it, end_it));
1013 "Invalid aggregation function", mz_agg);
1085 combined_ranges_.clearRanges();
1086 spectrum_ranges_.clearRanges();
1087 chromatogram_ranges_.clearRanges();
1091 double getMinRT()
const {
return combined_ranges_.getMinRT(); }
1094 double getMaxRT()
const {
return combined_ranges_.getMaxRT(); }
1097 double getMinMZ()
const {
return combined_ranges_.getMinMZ(); }
1100 double getMaxMZ()
const {
return combined_ranges_.getMaxMZ(); }
1376 template<
typename ContainerValueType,
bool addMassTraces>
1383 template<
typename ContainerValueType>
1390 spectrum->insert(spectrum->end(),
PeakType());
1391 spectrum->back().setIntensity(item->getIntensity());
1392 spectrum->back().setPosition(item->getMZ());
1397 addData_(spectrum, item);
1398 for (StringList::const_iterator itm = store_metadata_names.begin(); itm != store_metadata_names.end(); ++itm)
1400 float val = std::numeric_limits<float>::quiet_NaN();
1401 if (item->metaValueExists(*itm)) val = item->getMetaValue(*itm);
1407 template<
typename ContainerValueType>
1413 if (item->metaValueExists(
"num_of_masstraces"))
1415 Size mts = item->getMetaValue(
"num_of_masstraces");
1416 int charge = (item->getCharge()==0 ? 1 : item->getCharge());
1417 for (
Size i = 0; i < mts; ++i)
1420 if (!item->metaValueExists(meta_name))
1422 throw Exception::Precondition(__FILE__, __LINE__, OPENMS_PRETTY_FUNCTION,
String(
"Meta value '") + meta_name +
"' expected but not found in container.");
1424 ContainerValueType p;
1425 p.setIntensity(item->getMetaValue(meta_name));
A 1-dimensional raw data point or peak for chromatograms.
Definition: ChromatogramPeak.h:28
Range manager for chromatograms.
Definition: ChromatogramRangeManager.h:31
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:49
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.
RangeManagerType combined_ranges_
Combined range manager that provides overall ranges across both spectra and chromatograms (maintained...
Definition: MSExperiment.h:1338
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:1330
const std::vector< MSChromatogram > & getChromatograms() const
returns the chromatogram list
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:1094
~MSExperiment() override
D'tor.
PeakType::CoordinateType CoordinateType
Coordinate type of peak positions.
Definition: MSExperiment.h:62
void get2DData(Container &cont) const
Reads out a 2D Spectrum.
Definition: MSExperiment.h:207
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
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:258
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)
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:734
bool empty() const noexcept
Are there any spectra (does not consider chromatograms)
Definition: MSExperiment.h:140
UInt64 getSize() const
returns the total number of peaks (spectra and chromatograms included)
std::vector< MSChromatogram > extractXICs(const std::vector< std::pair< RangeMZ, RangeRT >> &mz_rt_ranges, unsigned int ms_level) const
Definition: MSExperiment.h:845
double getMaxMZ() const
Get the maximum m/z value from the combined ranges (includes both chromatogram and spectra ranges)
Definition: MSExperiment.h:1100
ConstIterator begin() const noexcept
Definition: MSExperiment.h:168
MSExperiment & operator=(MSExperiment &&) &=default
Move assignment operator.
ConstIterator cbegin() const noexcept
Definition: MSExperiment.h:173
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)
Iterator getClosestSpectrumInRT(const double RT, UInt ms_level)
Iterator begin() noexcept
Definition: MSExperiment.h:163
double getMinMobility() const
Get the minimum mobility value from the combined ranges (includes both chromatogram and spectra range...
Definition: MSExperiment.h:1109
SpectrumRangeManager SpectrumRangeManagerType
Spectrum range manager type for tracking ranges with MS level separation.
Definition: MSExperiment.h:69
double getMinIntensity() const
Get the minimum intensity value from the combined ranges (includes both chromatogram and spectra rang...
Definition: MSExperiment.h:1103
SpectrumType * createSpec_(PeakType::CoordinateType rt, const StringList &metadata_names)
ChromatogramPeakT ChromatogramPeakType
Chromatogram peak type.
Definition: MSExperiment.h:60
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:74
double getMinMZ() const
Get the minimum m/z value from the combined ranges (includes both chromatogram and spectra ranges)
Definition: MSExperiment.h:1097
Size getNrChromatograms() const
get the total number of chromatograms available
Iterator getClosestSpectrumInRT(const double RT)
Base::value_type value_type
Definition: MSExperiment.h:96
Size size() const noexcept
The number of spectra.
Definition: MSExperiment.h:128
MSExperiment()
Constructor.
bool operator!=(const MSExperiment &rhs) const
Equality operator.
Peak1D PeakT
Definition: MSExperiment.h:52
ConstAreaIterator areaEndConst() const
Returns a non-mutable invalid area iterator marking the end of an area.
const RangeManagerType & combinedRanges() const
Returns a const reference to the combined range manager.
Definition: MSExperiment.h:1371
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:403
void set2DData(const Container &container)
Assignment of a data container with RT and MZ to an MSExperiment.
Definition: MSExperiment.h:238
void setSpectra(std::vector< MSSpectrum > &&spectra)
void getPrimaryMSRunPath(StringList &toFill) const
get the file path to the first MS run
double getMaxMobility() const
Get the maximum mobility value from the combined ranges (includes both chromatogram and spectra range...
Definition: MSExperiment.h:1112
void resize(Size n)
Resize to n spectra.
Definition: MSExperiment.h:134
ConstIterator cend() const noexcept
Definition: MSExperiment.h:188
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:456
std::vector< MSChromatogram > & getChromatograms()
returns the chromatogram list (mutable)
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
Definition: MSExperiment.h:489
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:1106
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:1083
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:860
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
const SpectrumType & operator[](Size n) const
Random access to n'th spectrum.
Definition: MSExperiment.h:158
double getMinRT() const
Get the minimum RT value from the combined ranges (includes both chromatogram and spectra ranges)
Definition: MSExperiment.h:1091
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:943
Iterator end()
Definition: MSExperiment.h:178
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:714
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:183
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
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.
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:302
ChromatogramPeak ChromatogramPeakT
Definition: MSExperiment.h:53
void sortSpectra(bool sort_mz=true)
Sorts the data points by retention time.
std::vector< UInt > getMSLevels() const
returns a sorted array of MS levels (calculated on demand)
void reset()
Clear all internal data (spectra, ranges, metadata)
const ChromatogramRangeManagerType & chromatogramRanges() const
Returns a const reference to the chromatogram range manager.
Definition: MSExperiment.h:1361
void addSpectrum(MSSpectrum &&spectrum)
void reserveSpaceSpectra(Size s)
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:1332
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:364
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:146
Base::const_iterator const_iterator
Definition: MSExperiment.h:98
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:603
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:86
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:152
const SpectrumRangeManagerType & spectrumRanges() const
Returns a const reference to the spectrum range manager.
Definition: MSExperiment.h:1350
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:1328
ChromatogramRangeManagerType chromatogram_ranges_
Chromatogram range manager for tracking RT, intensity, and m/z ranges of chromatograms.
Definition: MSExperiment.h:1335
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
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
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:1387
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:1395
static void addData_(SpectrumType *spectrum, const ContainerValueType *item)
specialization for adding feature mass traces (does not support metadata_names currently)
Definition: MSExperiment.h:1411
Helper class to add either general data points in set2DData or use mass traces from meta values.
Definition: MSExperiment.h:1378
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:535
auto operator()(Iterator begin, Iterator end) const
Definition: MSExperiment.h:538
Definition: RangeManager.h:358
Definition: RangeManager.h:295