ProteoWizard
SpectrumList_IonMobility.hpp
Go to the documentation of this file.
1//
2// $Id$
3//
4//
5// Original author: Matt Chambers <matt.chambers <a.t> vanderbilt.edu>
6//
7// Copyright 2016 Vanderbilt University - Nashville, TN 37232
8//
9// Licensed under the Apache License, Version 2.0 (the "License");
10// you may not use this file except in compliance with the License.
11// You may obtain a copy of the License at
12//
13// http://www.apache.org/licenses/LICENSE-2.0
14//
15// Unless required by applicable law or agreed to in writing, software
16// distributed under the License is distributed on an "AS IS" BASIS,
17// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18// See the License for the specific language governing permissions and
19// limitations under the License.
20//
21
22
23#ifndef _SPECTRUMLIST_IONMOBILITY_HPP_
24#define _SPECTRUMLIST_IONMOBILITY_HPP_
25
26
30
31namespace pwiz {
32namespace analysis {
33
34/// SpectrumList implementation that provides access to vendor-specific ion mobility functions
36{
37 public:
38
40
41 static bool accept(const msdata::SpectrumListPtr& inner);
42 virtual msdata::SpectrumPtr spectrum(size_t index, bool getBinaryData = false) const;
43
44 // N.B this should agree with the enum IONMOBILITY_TYPE in pwiz_tools\BiblioSpec\src\BlibUtils.h
45 enum class IonMobilityUnits { none, drift_time_msec, inverse_reduced_ion_mobility_Vsec_per_cm2, compensation_V };
46
48
49 /// returns true if file in question contains necessary information for CCS/IonMobility handling (as with Drift Time in Agilent)
51
52 /// returns collisional cross-section associated with the ion mobility (units depend on IonMobilityEquipment)
53 virtual double ionMobilityToCCS(double ionMobility, double mz, int charge) const;
54
55 /// returns the ion mobility (units depend on IonMobilityEquipment) associated with the given collisional cross-section
56 virtual double ccsToIonMobility(double ccs, double mz, int charge) const;
57
58 /// for Waters SONAR data, given a (0-based) function number, a precursor m/z, and a tolerance, return the corresponding start and end "drift" bins
59 virtual std::pair<int, int> sonarMzToDriftBinRange(int function, float precursorMz, float precursorTolerance) const;
60
61
62private:
63 enum class IonMobilityEquipment { None, AgilentDrift, WatersDrift, WatersSonar, BrukerTIMS, ThermoFAIMS };
67};
68
69
70} // namespace analysis
71} // namespace pwiz
72
73
74#endif // _SPECTRUMLIST_IONMOBILITY_HPP_
#define PWIZ_API_DECL
Definition Export.hpp:32
SpectrumList implementation that provides access to vendor-specific ion mobility functions.
virtual double ionMobilityToCCS(double ionMobility, double mz, int charge) const
returns collisional cross-section associated with the ion mobility (units depend on IonMobilityEquipm...
virtual double ccsToIonMobility(double ccs, double mz, int charge) const
returns the ion mobility (units depend on IonMobilityEquipment) associated with the given collisional...
virtual std::pair< int, int > sonarMzToDriftBinRange(int function, float precursorMz, float precursorTolerance) const
for Waters SONAR data, given a (0-based) function number, a precursor m/z, and a tolerance,...
virtual bool canConvertIonMobilityAndCCS(IonMobilityUnits units) const
returns true if file in question contains necessary information for CCS/IonMobility handling (as with...
msdata::SpectrumListIonMobilityBase * sl_
virtual msdata::SpectrumPtr spectrum(size_t index, bool getBinaryData=false) const
retrieve a spectrum by index
SpectrumList_IonMobility(const msdata::SpectrumListPtr &inner)
static bool accept(const msdata::SpectrumListPtr &inner)
virtual IonMobilityUnits getIonMobilityUnits() const
Inheritable pass-through implementation for wrapping a SpectrumList.
boost::shared_ptr< SpectrumList > SpectrumListPtr
Definition MSData.hpp:711
boost::shared_ptr< Spectrum > SpectrumPtr
Definition MSData.hpp:573