OpenMS
Loading...
Searching...
No Matches
MobilityPeak1D.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: Chris Bielow $
6// $Authors: Chris Bielow $
7// --------------------------------------------------------------------------
8
9#pragma once
10
14
15#include <iosfwd>
16#include <functional>
17
18namespace OpenMS
19{
27 class OPENMS_DLLAPI MobilityPeak1D
28 {
29 public:
33 enum{ DIMENSION = 1 };
35 using IntensityType = float;
39 using CoordinateType = double;
41
45 MobilityPeak1D() = default;
46
48 MobilityPeak1D(PositionType a, IntensityType b) : position_(a), intensity_(b)
49 {
50 }
51
53 MobilityPeak1D(const MobilityPeak1D& p) = default;
54
55 // Move constructor
56 MobilityPeak1D(MobilityPeak1D&&) noexcept = default;
57
59 MobilityPeak1D& operator=(const MobilityPeak1D& rhs) = default;
60
62 MobilityPeak1D& operator=(MobilityPeak1D&&) noexcept = default;
63
64
73 ~MobilityPeak1D() noexcept = default;
74
76
82 IntensityType getIntensity() const;
84 void setIntensity(IntensityType intensity);
85
87 CoordinateType getMobility() const;
88
90 void setMobility(CoordinateType mobility);
91
93 CoordinateType getPos() const;
94
96 void setPos(CoordinateType pos);
97
99 PositionType const& getPosition() const;
100
102 PositionType& getPosition();
103
105 void setPosition(PositionType const& position);
106
108
110 bool operator==(const MobilityPeak1D& rhs) const;
111
113 bool operator!=(const MobilityPeak1D& rhs) const;
114
122 inline bool operator()(MobilityPeak1D const& left, MobilityPeak1D const& right) const
123 {
124 return left.getIntensity() < right.getIntensity();
125 }
126
127 inline bool operator()(MobilityPeak1D const& left, IntensityType right) const
128 {
129 return left.getIntensity() < right;
130 }
131
132 inline bool operator()(IntensityType left, MobilityPeak1D const& right) const
133 {
134 return left < right.getIntensity();
135 }
136
137 inline bool operator()(IntensityType left, IntensityType right) const
138 {
139 return left < right;
140 }
141 };
142
145 inline bool operator()(const MobilityPeak1D& left, const MobilityPeak1D& right) const
146 {
147 return left.getMobility() < right.getMobility();
148 }
149
150 inline bool operator()(MobilityPeak1D const& left, CoordinateType right) const
151 {
152 return left.getMobility() < right;
153 }
154
155 inline bool operator()(CoordinateType left, MobilityPeak1D const& right) const
156 {
157 return left < right.getMobility();
158 }
159
160 inline bool operator()(CoordinateType left, CoordinateType right) const
161 {
162 return left < right;
163 }
164 };
165
168 inline bool operator()(const MobilityPeak1D& left, const MobilityPeak1D& right) const
169 {
170 return left.getPosition() < right.getPosition();
171 }
172
173 inline bool operator()(const MobilityPeak1D& left, const PositionType& right) const
174 {
175 return left.getPosition() < right;
176 }
177
178 inline bool operator()(const PositionType& left, const MobilityPeak1D& right) const
179 {
180 return left < right.getPosition();
181 }
182
183 inline bool operator()(const PositionType& left, const PositionType& right) const
184 {
185 return left < right;
186 }
187 };
189
190 protected:
192 PositionType position_{};
194 IntensityType intensity_ = 0.0;
195 };
196
198 OPENMS_DLLAPI std::ostream& operator<<(std::ostream& os, const MobilityPeak1D& point);
199
200} // namespace OpenMS
201
202// Hash function specialization for MobilityPeak1D
203namespace std
204{
205 template<>
206 struct hash<OpenMS::MobilityPeak1D>
207 {
208 std::size_t operator()(const OpenMS::MobilityPeak1D& p) const noexcept
209 {
210 std::size_t seed = OpenMS::hash_float(p.getMobility());
211 OpenMS::hash_combine(seed, OpenMS::hash_float(p.getIntensity()));
212 return seed;
213 }
214 };
215} // namespace std
A 1-dimensional raw data mobility point or peak. The unit (ms, 1/K_0, etc) is implicit.
Definition MobilityPeak1D.h:28
double CoordinateType
Coordinate type.
Definition MobilityPeak1D.h:39
PositionType const & getPosition() const
Non-mutable access to the position.
MobilityPeak1D(PositionType a, IntensityType b)
construct with position and intensity
Definition MobilityPeak1D.h:48
IntensityType getIntensity() const
CoordinateType getMobility() const
Non-mutable access to m/z.
MobilityPeak1D(MobilityPeak1D &&) noexcept=default
MobilityPeak1D(const MobilityPeak1D &p)=default
Copy constructor.
float IntensityType
Intensity type.
Definition MobilityPeak1D.h:35
Main OpenMS namespace.
Definition openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/ISpectrumAccess.h:19
std::ostream & operator<<(std::ostream &os, const AccurateMassSearchResult &amsr)
void hash_combine(std::size_t &seed, std::size_t value) noexcept
Combine a hash value with additional data using golden ratio mixing.
Definition HashUtils.h:87
std::size_t hash_float(T value) noexcept
Hash for a floating point type (float or double).
Definition HashUtils.h:142
STL namespace.
Definition MobilityPeak1D.h:121
bool operator()(MobilityPeak1D const &left, MobilityPeak1D const &right) const
Definition MobilityPeak1D.h:122
bool operator()(MobilityPeak1D const &left, IntensityType right) const
Definition MobilityPeak1D.h:127
bool operator()(IntensityType left, MobilityPeak1D const &right) const
Definition MobilityPeak1D.h:132
bool operator()(IntensityType left, IntensityType right) const
Definition MobilityPeak1D.h:137
Comparator by mobility position.
Definition MobilityPeak1D.h:144
bool operator()(CoordinateType left, MobilityPeak1D const &right) const
Definition MobilityPeak1D.h:155
bool operator()(CoordinateType left, CoordinateType right) const
Definition MobilityPeak1D.h:160
bool operator()(const MobilityPeak1D &left, const MobilityPeak1D &right) const
Definition MobilityPeak1D.h:145
bool operator()(MobilityPeak1D const &left, CoordinateType right) const
Definition MobilityPeak1D.h:150
Comparator by position. As this class has dimension 1, this is basically an alias for MobilityLess.
Definition MobilityPeak1D.h:167
bool operator()(const PositionType &left, const PositionType &right) const
Definition MobilityPeak1D.h:183
bool operator()(const MobilityPeak1D &left, const MobilityPeak1D &right) const
Definition MobilityPeak1D.h:168
bool operator()(const MobilityPeak1D &left, const PositionType &right) const
Definition MobilityPeak1D.h:173
bool operator()(const PositionType &left, const MobilityPeak1D &right) const
Definition MobilityPeak1D.h:178
std::size_t operator()(const OpenMS::MobilityPeak1D &p) const noexcept
Definition MobilityPeak1D.h:208