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
16
17#include <algorithm>
18#include <numeric>
19
20namespace OpenMS
21{
22 class ChromatogramPeak;
23
29 class OPENMS_DLLAPI MSChromatogram :
30 private std::vector<ChromatogramPeak>,
31 public RangeManagerContainer<RangeRT, RangeIntensity>,
33 {
34
35public:
36
38 struct OPENMS_DLLAPI MZLess
39 {
40 bool operator()(const MSChromatogram& a, const MSChromatogram& b) const;
41 };
42
50 typedef std::vector<PeakType> ContainerType;
55 typedef std::vector<FloatDataArray> FloatDataArrays;
58 typedef std::vector<StringDataArray> StringDataArrays;
61 typedef std::vector<IntegerDataArray> IntegerDataArrays;
63
65
66
67 typedef typename ContainerType::iterator Iterator;
69 typedef typename ContainerType::const_iterator ConstIterator;
71 typedef typename ContainerType::reverse_iterator ReverseIterator;
73 typedef typename ContainerType::const_reverse_iterator ConstReverseIterator;
75
77
78 using ContainerType::operator[];
79 using ContainerType::begin;
80 using ContainerType::cbegin;
81 using ContainerType::rbegin;
82 using ContainerType::end;
83 using ContainerType::cend;
84 using ContainerType::rend;
85 using ContainerType::resize;
86 using ContainerType::size;
87 using ContainerType::push_back;
88 using ContainerType::emplace_back;
89 using ContainerType::pop_back;
90 using ContainerType::empty;
91 using ContainerType::front;
92 using ContainerType::back;
93 using ContainerType::reserve;
94 using ContainerType::insert;
95 using ContainerType::erase;
96 using ContainerType::swap;
97
98 using typename ContainerType::iterator;
99 using typename ContainerType::const_iterator;
100 using typename ContainerType::size_type;
101 using typename ContainerType::value_type;
102 using typename ContainerType::reference;
103 using typename ContainerType::const_reference;
104 using typename ContainerType::pointer;
105 using typename ContainerType::difference_type;
107
109 MSChromatogram() = default;
110
113
116
118 ~MSChromatogram() = default;
119
122
125
127 bool operator==(const MSChromatogram& rhs) const;
128
130 bool operator!=(const MSChromatogram& rhs) const
131 {
132 return !(operator==(rhs));
133 }
134
135 // Docu in base class (RangeManager)
136 void updateRanges() override;
137
141 const std::string& getName() const;
142
144 void setName(const std::string& name);
145
147
149 double getMZ() const;
150
166
169
172 {
173 float_data_arrays_ = fda;
174 }
175
178
181
184 {
185 string_data_arrays_ = sda;
186 }
187
190
193
196 {
197 integer_data_arrays_ = ida;
198 }
199
201
204
209 void sortByIntensity(bool reverse = false);
210
218
220 bool isSorted() const;
221
240 template<class Predicate>
241 void sort(const Predicate& lambda)
242 {
243 // Validate up front, before running the (possibly data-array-indexing) predicate, so a
244 // mis-sized array throws instead of being read out of bounds during the sort.
245 checkDataArraySizes_();
246 std::vector<Size> indices(this->size());
247 std::iota(indices.begin(), indices.end(), 0);
248 std::stable_sort(indices.begin(), indices.end(), lambda);
249 select(indices);
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
442 MSChromatogram& select(const std::vector<Size>& indices);
443
445
459 void mergePeaks(MSChromatogram& other, bool add_meta=false);
460
461protected:
462
473
475 std::string name_;
476
479
482
485 };
486
488 OPENMS_DLLAPI std::ostream& operator<<(std::ostream& os, const MSChromatogram& chrom);
489
490} // namespace OpenMS
491
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:33
void setIntegerDataArrays(const IntegerDataArrays &ida)
Sets the integer meta data arrays.
Definition MSChromatogram.h:195
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:48
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:58
OpenMS::DataArrays::FloatDataArray FloatDataArray
Float data array vector type.
Definition MSChromatogram.h:54
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:46
ContainerType::const_iterator ConstIterator
Non-mutable iterator.
Definition MSChromatogram.h:69
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:475
ContainerType::reverse_iterator ReverseIterator
Mutable reverse iterator.
Definition MSChromatogram.h:71
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:50
ContainerType::const_reverse_iterator ConstReverseIterator
Non-mutable reverse iterator.
Definition MSChromatogram.h:73
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:52
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:67
bool operator!=(const MSChromatogram &rhs) const
Equality operator.
Definition MSChromatogram.h:130
void sortByPosition()
Lexicographically sorts the peaks by their position.
StringDataArrays string_data_arrays_
std::string data arrays
Definition MSChromatogram.h:481
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:484
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:241
OpenMS::DataArrays::StringDataArray StringDataArray
std::string data array vector type
Definition MSChromatogram.h:57
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:478
void setStringDataArrays(const StringDataArrays &sda)
Sets the string meta data arrays.
Definition MSChromatogram.h:183
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:55
void updateRanges() override
OpenMS::DataArrays::IntegerDataArray IntegerDataArray
Integer data array vector type.
Definition MSChromatogram.h:60
void clear(bool clear_meta_data)
Clears all data and meta data.
std::vector< IntegerDataArray > IntegerDataArrays
Definition MSChromatogram.h:61
void setFloatDataArrays(const FloatDataArrays &fda)
Sets the float meta data arrays.
Definition MSChromatogram.h:171
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:39
bool operator()(const MSChromatogram &a, const MSChromatogram &b) const