OpenMS
Loading...
Searching...
No Matches
MSChromatogram.h
Go to the documentation of this file.
1// Copyright (c) 2002-present, OpenMS Inc. -- EKU Tuebingen, ETH Zurich, and FU Berlin
2// SPDX-License-Identifier: BSD-3-Clause
3//
4// --------------------------------------------------------------------------
5// $Maintainer: Timo Sachsenberg $
6// $Authors: Andreas Bertsch $
7// --------------------------------------------------------------------------
8
9#pragma once
10
17
18#include <algorithm>
19#include <numeric>
20
21namespace OpenMS
22{
23 class ChromatogramPeak;
24
30 class OPENMS_DLLAPI MSChromatogram :
31 private std::vector<ChromatogramPeak>,
32 public RangeManagerContainer<RangeRT, RangeIntensity>,
34 {
35
36public:
37
39 struct OPENMS_DLLAPI MZLess
40 {
41 bool operator()(const MSChromatogram& a, const MSChromatogram& b) const;
42 };
43
51 typedef std::vector<PeakType> ContainerType;
56 typedef std::vector<FloatDataArray> FloatDataArrays;
59 typedef std::vector<StringDataArray> StringDataArrays;
62 typedef std::vector<IntegerDataArray> IntegerDataArrays;
64
66
67
68 typedef typename ContainerType::iterator Iterator;
70 typedef typename ContainerType::const_iterator ConstIterator;
72 typedef typename ContainerType::reverse_iterator ReverseIterator;
74 typedef typename ContainerType::const_reverse_iterator ConstReverseIterator;
76
78
79 using ContainerType::operator[];
80 using ContainerType::begin;
81 using ContainerType::cbegin;
82 using ContainerType::rbegin;
83 using ContainerType::end;
84 using ContainerType::cend;
85 using ContainerType::rend;
86 using ContainerType::resize;
87 using ContainerType::size;
88 using ContainerType::push_back;
89 using ContainerType::emplace_back;
90 using ContainerType::pop_back;
91 using ContainerType::empty;
92 using ContainerType::front;
93 using ContainerType::back;
94 using ContainerType::reserve;
95 using ContainerType::insert;
96 using ContainerType::erase;
97 using ContainerType::swap;
98
99 using typename ContainerType::iterator;
100 using typename ContainerType::const_iterator;
101 using typename ContainerType::size_type;
102 using typename ContainerType::value_type;
103 using typename ContainerType::reference;
104 using typename ContainerType::const_reference;
105 using typename ContainerType::pointer;
106 using typename ContainerType::difference_type;
108
110 MSChromatogram() = default;
111
114
117
119 ~MSChromatogram() = default;
120
123
126
128 bool operator==(const MSChromatogram& rhs) const;
129
131 bool operator!=(const MSChromatogram& rhs) const
132 {
133 return !(operator==(rhs));
134 }
135
136 // Docu in base class (RangeManager)
137 void updateRanges() override;
138
142 const std::string& getName() const;
143
145 void setName(const std::string& name);
146
148
150 double getMZ() const;
151
167
170
173 {
174 float_data_arrays_ = fda;
175 }
176
179
182
185 {
186 string_data_arrays_ = sda;
187 }
188
191
194
197 {
198 integer_data_arrays_ = ida;
199 }
200
202
205
210 void sortByIntensity(bool reverse = false);
211
219
221 bool isSorted() const;
222
241 template<class Predicate>
242 void sort(const Predicate& lambda)
243 {
244 // Validate up front, before running the (possibly data-array-indexing) predicate, so a
245 // mis-sized array throws instead of being read out of bounds during the sort.
246 checkDataArraySizes_();
247 // The sorted indices are a permutation of [0, size): in range and duplicate-free by
248 // construction, so the unchecked path is safe and skips the redundant bounds re-scan.
249 selectUnchecked(Internal::stableSortedIndices(this->size(), lambda));
250 }
251
253
256
267
275
283
291
299
307
315
323
331
341
351
361
371
381
391
401
411
424 void clear(bool clear_meta_data);
425
443 MSChromatogram& select(const std::vector<Size>& indices);
444
460 MSChromatogram& selectUnchecked(const std::vector<Size>& indices);
461
463
477 void mergePeaks(MSChromatogram& other, bool add_meta=false);
478
479protected:
480
491
493 std::string name_;
494
497
500
503 };
504
506 OPENMS_DLLAPI std::ostream& operator<<(std::ostream& os, const MSChromatogram& chrom);
507
508} // namespace OpenMS
509
A 1-dimensional raw data point or peak for chromatograms.
Definition ChromatogramPeak.h:29
double CoordinateType
Coordinate type.
Definition ChromatogramPeak.h:42
Representation of chromatogram settings, e.g. SRM/MRM chromatograms.
Definition ChromatogramSettings.h:37
Float data array class.
Definition DataArrays.h:25
Integer data array class.
Definition DataArrays.h:75
std::string data array class
Definition DataArrays.h:125
The representation of a chromatogram.
Definition MSChromatogram.h:34
void setIntegerDataArrays(const IntegerDataArrays &ida)
Sets the integer meta data arrays.
Definition MSChromatogram.h:196
Iterator PosBegin(CoordinateType rt)
Binary search for peak range begin.
MSChromatogram & operator=(const MSChromatogram &source)
Assignment operator.
MSChromatogram(MSChromatogram &&)=default
Move constructor.
PeakType::CoordinateType CoordinateType
Coordinate (RT) type.
Definition MSChromatogram.h:49
const IntegerDataArrays & getIntegerDataArrays() const
Returns a const reference to the integer meta data arrays.
ConstIterator RTBegin(CoordinateType rt) const
Binary search for peak range begin.
std::vector< StringDataArray > StringDataArrays
Definition MSChromatogram.h:59
OpenMS::DataArrays::FloatDataArray FloatDataArray
Float data array vector type.
Definition MSChromatogram.h:55
ConstIterator RTEnd(ConstIterator begin, CoordinateType rt, ConstIterator end) const
Binary search for peak range end (returns the past-the-end iterator)
MSChromatogram(const MSChromatogram &)=default
Copy constructor.
const std::string & getName() const
ChromatogramPeak PeakType
Definition MSChromatogram.h:47
ContainerType::const_iterator ConstIterator
Non-mutable iterator.
Definition MSChromatogram.h:70
ConstIterator RTEnd(CoordinateType rt) const
Binary search for peak range end (returns the past-the-end iterator)
MSChromatogram & operator=(MSChromatogram &&) &=default
Move assignment operator.
std::string name_
Name.
Definition MSChromatogram.h:493
ContainerType::reverse_iterator ReverseIterator
Mutable reverse iterator.
Definition MSChromatogram.h:72
const StringDataArrays & getStringDataArrays() const
Returns a const reference to the string meta data arrays.
Iterator RTEnd(Iterator begin, CoordinateType rt, Iterator end)
Binary search for peak range end (returns the past-the-end iterator)
Iterator RTEnd(CoordinateType rt)
Binary search for peak range end (returns the past-the-end iterator)
std::vector< PeakType > ContainerType
Chromatogram base type.
Definition MSChromatogram.h:51
ContainerType::const_reverse_iterator ConstReverseIterator
Non-mutable reverse iterator.
Definition MSChromatogram.h:74
void mergePeaks(MSChromatogram &other, bool add_meta=false)
Adds all the chromatogram peaks from another MSChromatogram and updates the metadata to indicate a me...
bool isSorted() const
Checks if all peaks are sorted with respect to ascending RT.
~MSChromatogram()=default
Destructor.
RangeManager< RangeRT, RangeIntensity > RangeManagerType
RangeManager.
Definition MSChromatogram.h:53
MSChromatogram & select(const std::vector< Size > &indices)
Subset the chromatogram by selecting only indices in indices, in that order.
MSChromatogram()=default
Constructor.
Iterator PosBegin(Iterator begin, CoordinateType rt, Iterator end)
Binary search for peak range begin.
ContainerType::iterator Iterator
Mutable iterator.
Definition MSChromatogram.h:68
bool operator!=(const MSChromatogram &rhs) const
Equality operator.
Definition MSChromatogram.h:131
MSChromatogram & selectUnchecked(const std::vector< Size > &indices)
Like select(), but without the per-index range check.
void sortByPosition()
Lexicographically sorts the peaks by their position.
StringDataArrays string_data_arrays_
std::string data arrays
Definition MSChromatogram.h:499
ConstIterator PosBegin(ConstIterator begin, CoordinateType rt, ConstIterator end) const
Binary search for peak range begin.
void sortByIntensity(bool reverse=false)
Lexicographically sorts the peaks by their intensity.
ConstIterator PosEnd(ConstIterator begin, CoordinateType rt, ConstIterator end) const
Binary search for peak range end (returns the past-the-end iterator)
FloatDataArrays & getFloatDataArrays()
Returns a mutable reference to the float meta data arrays.
IntegerDataArrays integer_data_arrays_
Integer data arrays.
Definition MSChromatogram.h:502
void setName(const std::string &name)
Sets the name.
Size findNearest(CoordinateType rt) const
Binary search for the peak nearest to a specific RT.
void sort(const Predicate &lambda)
Stably sorts the peaks (and all parallel data arrays) by a user-defined predicate.
Definition MSChromatogram.h:242
OpenMS::DataArrays::StringDataArray StringDataArray
std::string data array vector type
Definition MSChromatogram.h:58
ConstIterator PosBegin(CoordinateType rt) const
Binary search for peak range begin.
Iterator RTBegin(CoordinateType rt)
Binary search for peak range begin.
Iterator PosEnd(Iterator begin, CoordinateType rt, Iterator end)
Binary search for peak range end (returns the past-the-end iterator)
bool operator==(const MSChromatogram &rhs) const
Equality operator.
ConstIterator PosEnd(CoordinateType rt) const
Binary search for peak range end (returns the past-the-end iterator)
IntegerDataArrays & getIntegerDataArrays()
Returns a mutable reference to the integer meta data arrays.
FloatDataArrays float_data_arrays_
Float data arrays.
Definition MSChromatogram.h:496
void setStringDataArrays(const StringDataArrays &sda)
Sets the string meta data arrays.
Definition MSChromatogram.h:184
ConstIterator RTBegin(ConstIterator begin, CoordinateType rt, ConstIterator end) const
Binary search for peak range begin.
const FloatDataArrays & getFloatDataArrays() const
void checkDataArraySizes_() const
Throws Exception::Precondition if any non-empty data array's size differs from the peak count.
Iterator PosEnd(CoordinateType rt)
Binary search for peak range end (returns the past-the-end iterator)
std::vector< FloatDataArray > FloatDataArrays
Definition MSChromatogram.h:56
void updateRanges() override
OpenMS::DataArrays::IntegerDataArray IntegerDataArray
Integer data array vector type.
Definition MSChromatogram.h:61
void clear(bool clear_meta_data)
Clears all data and meta data.
std::vector< IntegerDataArray > IntegerDataArrays
Definition MSChromatogram.h:62
void setFloatDataArrays(const FloatDataArrays &fda)
Sets the float meta data arrays.
Definition MSChromatogram.h:172
Iterator RTBegin(Iterator begin, CoordinateType rt, Iterator end)
Binary search for peak range begin.
StringDataArrays & getStringDataArrays()
Returns a mutable reference to the string meta data arrays.
double getMZ() const
returns the mz of the product entry, makes sense especially for MRM scans
Definition RangeManager.h:889
Handles the management of a multidimensional range, e.g. RangeMZ and RangeIntensity for spectra.
Definition RangeManager.h:568
size_t Size
Size type e.g. used as variable which can hold result of size()
Definition Types.h:97
bool operator==(const IDBoostGraph::ProteinGroup &lhs, const IDBoostGraph::ProteinGroup &rhs)
Main OpenMS namespace.
Definition openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/ISpectrumAccess.h:19
std::ostream & operator<<(std::ostream &os, const AccurateMassSearchResult &amsr)
Comparator for the precursor m/z time.
Definition MSChromatogram.h:40
bool operator()(const MSChromatogram &a, const MSChromatogram &b) const