26 class ChromatogramPeak;
78 typedef std::vector<SpectrumType>
Base;
83 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);
296 AreaIterator areaBegin(CoordinateType min_rt, CoordinateType max_rt,
298 CoordinateType min_mz, CoordinateType max_mz,
UInt ms_level = 1);
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();
488 template<
class MzReductionFunctionType>
489 std::vector<std::vector<MSExperiment::CoordinateType>>
aggregate(
490 const std::vector<std::pair<RangeMZ, RangeRT>>& mz_rt_ranges,
491 unsigned int ms_level,
492 MzReductionFunctionType func_mz_reduction)
const
495 if (mz_rt_ranges.empty())
502 std::vector<std::reference_wrapper<const MSSpectrum>> spectra_view;
503 spectra_view.reserve(spectra_.size());
504 std::copy_if(spectra_.begin(), spectra_.end(),
505 std::back_inserter(spectra_view),
506 [ms_level](
const auto& spec) {
507 return spec.getMSLevel() == ms_level;
511 if (spectra_view.empty()) {
517 auto getCoveredSpectra = [](
518 const std::vector<std::reference_wrapper<const MSSpectrum>>& spectra_view,
519 const std::vector<std::pair<RangeMZ, RangeRT>>& mz_rt_ranges)
520 -> std::vector<std::pair<size_t, size_t>>
522 std::vector<std::pair<size_t, size_t>> res;
523 res.reserve(mz_rt_ranges.size());
525 for (
const auto & mz_rt : mz_rt_ranges)
529 auto start_it = std::lower_bound(spectra_view.begin(), spectra_view.end(), mz_rt.second.getMin(),
530 [](
const auto& spec,
double rt)
531 { return spec.get().getRT() < rt; });
533 auto stop_it = std::upper_bound(spectra_view.begin(), spectra_view.end(), mz_rt.second.getMax(),
534 [](
double rt,
const auto& spec)
535 { return rt < spec.get().getRT(); });
538 std::distance(spectra_view.begin(), start_it),
539 std::distance(spectra_view.begin(), stop_it)
547 const std::vector<std::pair<size_t, size_t>> rt_ranges_idcs = getCoveredSpectra(spectra_view, mz_rt_ranges);
550 std::vector<std::vector<MSExperiment::CoordinateType>> result(mz_rt_ranges.size());
553 std::vector<std::vector<size_t>> spec_idx_to_range_idx(spectra_view.size());
556 for (
size_t i = 0; i < rt_ranges_idcs.size(); ++i)
558 const auto& [start, stop] = rt_ranges_idcs[i];
559 result[i].resize(stop - start);
561 for (
size_t j = start; j < stop; ++j)
563 spec_idx_to_range_idx[j].push_back(i);
567 #pragma omp parallel for schedule(dynamic)
568 for (
Int64 i = 0; i < (
Int64)spec_idx_to_range_idx.size(); ++i)
570 if (spec_idx_to_range_idx[i].empty())
continue;
572 const auto& spec = spectra_view[i].get();
573 auto spec_begin = spec.cbegin();
574 auto spec_end = spec.cend();
576 for (
size_t range_idx : spec_idx_to_range_idx[i])
578 const auto& mz_range = mz_rt_ranges[range_idx].first;
581 auto start_it = spec.PosBegin(spec_begin, mz_range.getMinMZ(), spec_end);
582 auto end_it = start_it;
584 while (end_it != spec_end && end_it->getPosition() <= mz_range.getMaxMZ())
592 result[range_idx][i - rt_ranges_idcs[range_idx].first] =
593 func_mz_reduction(start_it, end_it);
600 std::vector<std::vector<MSExperiment::CoordinateType>>
aggregate(
601 const std::vector<std::pair<RangeMZ, RangeRT>>& mz_rt_ranges,
602 unsigned int ms_level)
const
619 template<
class MzReductionFunctionType>
621 const std::vector<std::pair<RangeMZ, RangeRT>>& mz_rt_ranges,
622 unsigned int ms_level,
623 MzReductionFunctionType func_mz_reduction)
const
626 if (mz_rt_ranges.empty())
633 std::vector<std::reference_wrapper<const MSSpectrum>> spectra_view;
634 spectra_view.reserve(spectra_.size());
635 std::copy_if(spectra_.begin(), spectra_.end(),
636 std::back_inserter(spectra_view),
637 [ms_level](
const auto& spec) {
638 return spec.getMSLevel() == ms_level;
642 if (spectra_view.empty()) {
648 auto getCoveredSpectra = [](
649 const std::vector<std::reference_wrapper<const MSSpectrum>>& spectra_view,
650 const std::vector<std::pair<RangeMZ, RangeRT>>& mz_rt_ranges)
651 -> std::vector<std::pair<size_t, size_t>>
653 std::vector<std::pair<size_t, size_t>> res;
654 res.reserve(mz_rt_ranges.size());
656 for (
const auto & mz_rt : mz_rt_ranges)
658 auto start_it = std::lower_bound(spectra_view.begin(), spectra_view.end(), mz_rt.second.getMin(),
659 [](
const auto& spec,
double rt)
660 { return spec.get().getRT() < rt; });
662 auto stop_it = std::upper_bound(spectra_view.begin(), spectra_view.end(), mz_rt.second.getMax(),
663 [](
double rt,
const auto& spec)
664 { return rt < spec.get().getRT(); });
667 std::distance(spectra_view.begin(), start_it),
668 std::distance(spectra_view.begin(), stop_it)
675 const std::vector<std::pair<size_t, size_t>> rt_ranges_idcs = getCoveredSpectra(spectra_view, mz_rt_ranges);
678 std::vector<MSChromatogram> result(mz_rt_ranges.size());
681 std::vector<std::vector<size_t>> spec_idx_to_range_idx(spectra_view.size());
684 for (
size_t i = 0; i < rt_ranges_idcs.size(); ++i)
686 const auto& [start, stop] = rt_ranges_idcs[i];
687 result[i].resize(stop - start);
688 result[i].getProduct().setMZ(
689 (mz_rt_ranges[i].first.getMinMZ() + mz_rt_ranges[i].first.getMaxMZ()) / 2.0);
690 for (
size_t j = start; j < stop; ++j)
692 spec_idx_to_range_idx[j].push_back(i);
696 #pragma omp parallel for schedule(dynamic)
697 for (
Int64 i = 0; i < (
Int64)spec_idx_to_range_idx.size(); ++i)
699 if (spec_idx_to_range_idx[i].empty())
continue;
701 const auto& spec = spectra_view[i].get();
702 const double rt = spec.getRT();
703 auto spec_begin = spec.cbegin();
704 auto spec_end = spec.cend();
706 for (
size_t range_idx : spec_idx_to_range_idx[i])
708 const auto& mz_range = mz_rt_ranges[range_idx].first;
711 auto start_it = spec.PosBegin(spec_begin, mz_range.getMinMZ(), spec_end);
712 auto end_it = start_it;
714 while (end_it != spec_end && end_it->getPosition() <= mz_range.getMaxMZ())
720 result[range_idx][i - rt_ranges_idcs[range_idx].first] =
725 for (
auto& r : result) r.updateRanges();
732 const std::vector<std::pair<RangeMZ, RangeRT>>& mz_rt_ranges,
733 unsigned int ms_level)
const
748 unsigned int ms_level,
749 const std::string& mz_agg)
const
752 if (ranges.cols() != 4)
755 "Range matrix must have 4 columns [mz_min, mz_max, rt_min, rt_max]");
759 std::vector<std::pair<RangeMZ, RangeRT>> mz_rt_ranges;
760 mz_rt_ranges.reserve((
Size)ranges.rows());
762 for (
Size i = 0; i < (
Size)ranges.rows(); ++i)
764 mz_rt_ranges.emplace_back(
765 RangeMZ(ranges(i, 0), ranges(i, 1)),
766 RangeRT(ranges(i, 2), ranges(i, 3))
774 return aggregate(mz_rt_ranges, ms_level,
775 [](
auto begin_it,
auto end_it)
777 return std::accumulate(begin_it, end_it, 0.0,
781 else if (mz_agg ==
"max")
783 return aggregate(mz_rt_ranges, ms_level,
784 [](
auto begin_it,
auto end_it)->
double
786 if (begin_it == end_it)
return 0.0;
787 return std::max_element(begin_it, end_it,
792 else if (mz_agg ==
"min")
794 return aggregate(mz_rt_ranges, ms_level,
795 [](
auto begin_it,
auto end_it)->
double
797 if (begin_it == end_it)
return 0.0;
798 return std::min_element(begin_it, end_it,
803 else if (mz_agg ==
"mean")
805 return aggregate(mz_rt_ranges, ms_level,
806 [](
auto begin_it,
auto end_it)
808 if (begin_it == end_it)
return 0.0;
809 double sum = std::accumulate(begin_it, end_it, 0.0,
811 return sum /
static_cast<double>(std::distance(begin_it, end_it));
817 "Invalid aggregation function", mz_agg);
831 unsigned int ms_level,
832 const std::string& mz_agg)
const
835 if (ranges.cols() != 4)
838 "Range matrix must have 4 columns [mz_min, mz_max, rt_min, rt_max]");
842 std::vector<std::pair<RangeMZ, RangeRT>> mz_rt_ranges;
843 mz_rt_ranges.reserve((
Size)ranges.rows());
845 for (
Size i = 0; i < (
Size)ranges.rows(); ++i)
847 mz_rt_ranges.emplace_back(
848 RangeMZ(ranges(i, 0), ranges(i, 1)),
849 RangeRT(ranges(i, 2), ranges(i, 3))
856 return extractXICs(mz_rt_ranges, ms_level,
857 [](
auto begin_it,
auto end_it)
859 return std::accumulate(begin_it, end_it, 0.0,
863 else if (mz_agg ==
"max")
865 return extractXICs(mz_rt_ranges, ms_level,
866 [](
auto begin_it,
auto end_it)->
double
868 if (begin_it == end_it)
return 0.0;
869 return std::max_element(begin_it, end_it,
874 else if (mz_agg ==
"min")
876 return extractXICs(mz_rt_ranges, ms_level,
877 [](
auto begin_it,
auto end_it)->
double
879 if (begin_it == end_it)
return 0.0;
880 return std::min_element(begin_it, end_it,
885 else if (mz_agg ==
"mean")
887 return extractXICs(mz_rt_ranges, ms_level,
888 [](
auto begin_it,
auto end_it)
890 if (begin_it == end_it)
return 0.0;
891 double sum = std::accumulate(begin_it, end_it, 0.0,
893 return sum /
static_cast<double>(std::distance(begin_it, end_it));
899 "Invalid aggregation function", mz_agg);
971 combined_ranges_.clearRanges();
972 spectrum_ranges_.clearRanges();
973 chromatogram_ranges_.clearRanges();
977 double getMinRT()
const {
return combined_ranges_.getMinRT(); }
980 double getMaxRT()
const {
return combined_ranges_.getMaxRT(); }
983 double getMinMZ()
const {
return combined_ranges_.getMinMZ(); }
986 double getMaxMZ()
const {
return combined_ranges_.getMaxMZ(); }
1262 template<
typename ContainerValueType,
bool addMassTraces>
1269 template<
typename ContainerValueType>
1276 spectrum->insert(spectrum->end(),
PeakType());
1277 spectrum->back().setIntensity(item->getIntensity());
1278 spectrum->back().setPosition(item->getMZ());
1283 addData_(spectrum, item);
1284 for (StringList::const_iterator itm = store_metadata_names.begin(); itm != store_metadata_names.end(); ++itm)
1286 float val = std::numeric_limits<float>::quiet_NaN();
1287 if (item->metaValueExists(*itm)) val = item->getMetaValue(*itm);
1293 template<
typename ContainerValueType>
1299 if (item->metaValueExists(
"num_of_masstraces"))
1301 Size mts = item->getMetaValue(
"num_of_masstraces");
1302 int charge = (item->getCharge()==0 ? 1 : item->getCharge());
1303 for (
Size i = 0; i < mts; ++i)
1306 if (!item->metaValueExists(meta_name))
1308 throw Exception::Precondition(__FILE__, __LINE__, OPENMS_PRETTY_FUNCTION,
String(
"Meta value '") + meta_name +
"' expected but not found in container.");
1310 ContainerValueType p;
1311 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:1224
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:1216
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:980
~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
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)
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:620
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:731
double getMaxMZ() const
Get the maximum m/z value from the combined ranges (includes both chromatogram and spectra ranges)
Definition: MSExperiment.h:986
MSExperiment & operator=(MSExperiment &&) &=default
Move assignment operator.
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)
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:995
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:989
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:983
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.
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:1257
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
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
double getMaxMobility() const
Get the maximum mobility value from the combined ranges (includes both chromatogram and spectra range...
Definition: MSExperiment.h:998
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
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
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:992
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:969
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:746
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:977
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:829
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:600
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
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:266
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:1247
void addSpectrum(MSSpectrum &&spectrum)
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:1218
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
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
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:489
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
const SpectrumRangeManagerType & spectrumRanges() const
Returns a const reference to the spectrum range manager.
Definition: MSExperiment.h:1236
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:1214
ChromatogramRangeManagerType chromatogram_ranges_
Chromatogram range manager for tracking RT, intensity, and m/z ranges of chromatograms.
Definition: MSExperiment.h:1221
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 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:103
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)
static void addData_(SpectrumType *spectrum, const ContainerValueType *item)
general method for adding data points
Definition: MSExperiment.h:1273
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:1281
static void addData_(SpectrumType *spectrum, const ContainerValueType *item)
specialization for adding feature mass traces (does not support metadata_names currently)
Definition: MSExperiment.h:1297
Helper class to add either general data points in set2DData or use mass traces from meta values.
Definition: MSExperiment.h:1264
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