| OpenMS 2.5.0

InternalCalibration.h
Go to the documentation of this file.
1 // --------------------------------------------------------------------------
2 // OpenMS -- Open-Source Mass Spectrometry
3 // --------------------------------------------------------------------------
4 // Copyright The OpenMS Team -- Eberhard Karls University Tuebingen,
5 // ETH Zurich, and Freie Universitaet Berlin 2002-2020.
6 //
7 // This software is released under a three-clause BSD license:
8 // * Redistributions of source code must retain the above copyright
9 // notice, this list of conditions and the following disclaimer.
10 // * Redistributions in binary form must reproduce the above copyright
11 // notice, this list of conditions and the following disclaimer in the
12 // documentation and/or other materials provided with the distribution.
13 // * Neither the name of any author or any participating institution
14 // may be used to endorse or promote products derived from this software
15 // without specific prior written permission.
16 // For a full list of authors, refer to the file AUTHORS.
17 // --------------------------------------------------------------------------
18 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 // ARE DISCLAIMED. IN NO EVENT SHALL ANY OF THE AUTHORS OR THE CONTRIBUTING
22 // INSTITUTIONS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
25 // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
26 // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
27 // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
28 // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 //
30 // --------------------------------------------------------------------------
31 // $Maintainer: Chris Bielow $
32 // $Authors: Chris Bielow $
33 // --------------------------------------------------------------------------
34
35 #pragma once
36
37 #include <OpenMS/KERNEL/StandardTypes.h>
38 #include <OpenMS/CONCEPT/ProgressLogger.h>
39 #include <OpenMS/DATASTRUCTURES/CalibrationData.h>
40 #include <OpenMS/DATASTRUCTURES/ListUtils.h>
41 #include <OpenMS/FILTERING/CALIBRATION/MZTrafoModel.h>
42 #include <OpenMS/KERNEL/MSExperiment.h>
43
44 #include <vector>
45
46 namespace OpenMS
47 {
48
49 class FeatureMap;
50
61 class OPENMS_DLLAPI InternalCalibration
62 : public ProgressLogger
63 {
64 public:
65
67 InternalCalibration();
68
70 ~InternalCalibration(){}
71
73 struct LockMass
74 {
75 double mz;
76 unsigned int ms_level;
77 int charge;
78
79 LockMass(double mz_, int lvl_, int charge_)
80 : mz(mz_),
81 ms_level(lvl_),
82 charge(charge_)
83 {}
84 };
85
108 Size fillCalibrants(const PeakMap exp,
109 const std::vector<InternalCalibration::LockMass>& ref_masses,
110 double tol_ppm,
111 bool lock_require_mono,
112 bool lock_require_iso,
113 CalibrationData& failed_lock_masses,
114 bool verbose = true);
115
137 Size fillCalibrants(const FeatureMap& fm, double tol_ppm);
138
154 Size fillCalibrants(const std::vector<PeptideIdentification>& pep_ids, double tol_ppm);
155
164 const CalibrationData& getCalibrationPoints() const;
165
190 bool calibrate(PeakMap& exp,
191 const IntList& target_mslvl,
192 MZTrafoModel::MODELTYPE model_type,
193 double rt_chunk,
194 bool use_RANSAC,
195 double post_ppm_median,
196 double post_ppm_MAD,
197 const String& file_models = "",
198 const String& file_models_plot = "",
199 const String& file_residuals = "",
200 const String& file_residuals_plot = "",
201 const String& rscript_executable = "Rscript");
202
203 /*
204 @brief Transform a precursor's m/z
205
206 Calibrate m/z of precursors.
207
208 @param pcs Uncalibrated Precursors
209 @param trafo The calibration function to apply
210 */
211 static void applyTransformation(std::vector<Precursor>& pcs, const MZTrafoModel& trafo);
212
213 /*
214 @brief Transform a spectrum (data+precursor)
215
216 See applyTransformation(MSExperiment, ...) for details.
217
218 @param spec Uncalibrated MSSpectrum
219 @param target_mslvl List (can be unsorted) of MS levels to calibrate
220 @param trafo The calibration function to apply
221 */
222 static void applyTransformation(PeakMap::SpectrumType& spec, const IntList& target_mslvl, const MZTrafoModel& trafo);
223
224 /*
225 @brief Transform spectra from a whole map (data+precursor)
226
227 All data peaks and precursor information (if present) are calibrated in m/z.
228
229 Only spectra whose MS-level is contained in 'target_mslvl' are calibrated.
230 In addition, if a fragmentation spectrum's precursor information originates from an MS level in 'target_mslvl',
231 the precursor (not the spectrum itself) is also subjected to calibration.
232 E.g., If we only have MS and MS/MS spectra: for 'target_mslvl' = {1} then all MS1 spectra and MS2 precursors are calibrated.
233 If 'target_mslvl' = {2}, only MS2 spectra (not their precursors) are calibrated.
234 If 'target_mslvl' = {1,2} all spectra and precursors are calibrated.
235
236
237 @param exp Uncalibrated peak map
238 @param target_mslvl List (can be unsorted) of MS levels to calibrate
239 @param trafo The calibration function to apply
240 */
241 static void applyTransformation(PeakMap& exp, const IntList& target_mslvl, const MZTrafoModel& trafo);
242
243 protected:
259 void fillIDs_( const std::vector<PeptideIdentification>& pep_ids, double tol_ppm );
260
261 /*
262 @brief Calibrate m/z of a spectrum, ignoring precursors!
263
264 This method is not exposed as public, because its easy to be misused on spectra while forgetting about the precursors of high-level spectra.
265 */
266 static void applyTransformation_(PeakMap::SpectrumType& spec, const MZTrafoModel& trafo);
267
268 private:
269 CalibrationData cal_data_;
270
271
272 }; // class InternalCalibration
273
274 } // namespace OpenMS
275
OpenMS::String
A more convenient string class.
Definition: String.h:58
OpenMS::IntList
std::vector< Int > IntList
Vector of signed integers.
Definition: ListUtils.h:55
OpenMS::InternalCalibration::cal_data_
CalibrationData cal_data_
Definition: InternalCalibration.h:269
CalibrationData.h
OpenMS::MSExperiment
In-Memory representation of a mass spectrometry experiment.
Definition: MSExperiment.h:77
OpenMS::Internal::ClassTest::verbose
int verbose
Verbosity level ( "-v" is 1 and "-V" is 2 )
MZTrafoModel.h
OpenMS::FeatureMap
A container for features.
Definition: FeatureMap.h:95
OpenMS::MZTrafoModel::MODELTYPE
MODELTYPE
Definition: MZTrafoModel.h:98
StandardTypes.h
OpenMS::InternalCalibration::LockMass
helper class, describing a lock mass
Definition: InternalCalibration.h:73
OpenMS::InternalCalibration::LockMass::ms_level
unsigned int ms_level
MS level where it occurs.
Definition: InternalCalibration.h:76
OpenMS::InternalCalibration::~InternalCalibration
~InternalCalibration()
Destructor.
Definition: InternalCalibration.h:70
OpenMS::MSSpectrum
The representation of a 1D spectrum.
Definition: MSSpectrum.h:67
ProgressLogger.h
OpenMS
Main OpenMS namespace.
Definition: FeatureDeconvolution.h:46
MSExperiment.h
OpenMS::ProgressLogger
Base class for all classes that want to report their progress.
Definition: ProgressLogger.h:54
OpenMS::CalibrationData
A helper class, holding all calibration points.
Definition: CalibrationData.h:64
OpenMS::InternalCalibration
A mass recalibration method using linear/quadratic interpolation (robust/weighted) of given reference...
Definition: InternalCalibration.h:61
OpenMS::InternalCalibration::LockMass::charge
int charge
charge of the ion (to find isotopes)
Definition: InternalCalibration.h:77
OpenMS::MZTrafoModel
Create and apply models of a mass recalibration function.
Definition: MZTrafoModel.h:66
OpenMS::InternalCalibration::LockMass::LockMass
LockMass(double mz_, int lvl_, int charge_)
Definition: InternalCalibration.h:79
ListUtils.h
OpenMS::Size
size_t Size
Size type e.g. used as variable which can hold result of size()
Definition: Types.h:127
OpenMS::InternalCalibration::LockMass::mz
double mz
m/z of the lock mass (incl. adducts)
Definition: InternalCalibration.h:75