libpappsomspp
Library for mass spectrometry
mzintegrationparams.h
Go to the documentation of this file.
1 /* BEGIN software license
2  *
3  * msXpertSuite - mass spectrometry software suite
4  * -----------------------------------------------
5  * Copyright(C) 2009,...,2018 Filippo Rusconi
6  *
7  * http://www.msxpertsuite.org
8  *
9  * This file is part of the msXpertSuite project.
10  *
11  * The msXpertSuite project is the successor of the massXpert project. This
12  * project now includes various independent modules:
13  *
14  * - massXpert, model polymer chemistries and simulate mass spectrometric data;
15  * - mineXpert, a powerful TIC chromatogram/mass spectrum viewer/miner;
16  *
17  * This program is free software: you can redistribute it and/or modify
18  * it under the terms of the GNU General Public License as published by
19  * the Free Software Foundation, either version 3 of the License, or
20  * (at your option) any later version.
21  *
22  * This program is distributed in the hope that it will be useful,
23  * but WITHOUT ANY WARRANTY; without even the implied warranty of
24  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25  * GNU General Public License for more details.
26  *
27  * You should have received a copy of the GNU General Public License
28  * along with this program. If not, see <http://www.gnu.org/licenses/>.
29  *
30  * END software license
31  */
32 
33 
34 #pragma once
35 
36 
37 #include <map>
38 
39 #include "../../precision.h"
40 #include "../../massspectrum/massspectrum.h"
41 
42 
43 namespace pappso
44 {
45 
46 //! Type of binning when performing integrations to a mass spectrum
47 enum class BinningType
48 {
49  //! < no binning
50  NONE = 0,
51 
52  //! binning based on mass spectral data
53  DATA_BASED,
54 
55  //! binning based on arbitrary bin size value
56  ARBITRARY,
57 
58  LAST,
59 };
60 
61 extern std::map<BinningType, QString> binningTypeMap;
62 
63 
64 //! The MzIntegrationParams class provides the parameters definining how m/z !
65 // integrations must be performed.
66 /*!
67  * Depending on the various mass spectrometer vendors, the mass spectrometry
68  * data files are structured in different ways and the software for mass data
69  * format conversion from raw files to mzML or mzXML produce mass data
70  * characterized by different behaviours.
71  *
72  * The different characteristics of mass spectrometry data set are:
73  *
74  * The size of the various mass spectra in the file is constant or variable;
75  *
76  * The first m/z value of the various spectra is identical or not (that is,
77  * the spectra are root in a constant or variable root m/z value);
78  *
79  * The m/z delta between two consecutive m/z values of a given spectrum are
80  * constant or variable;
81  *
82  * The spectra contain or not 0-value m/z data points;
83 
84 */
86 {
87  public:
88  Q_INVOKABLE MzIntegrationParams();
91  BinningType binningType,
92  int decimalPlaces,
93  pappso::PrecisionPtr precisionPtr,
94  bool applyMzShift,
95  pappso::pappso_double mzShift,
96  bool removeZeroValDataPoints);
97 
98  Q_INVOKABLE MzIntegrationParams(const MzIntegrationParams &other);
99 
100  virtual ~MzIntegrationParams();
101 
102  MzIntegrationParams &operator=(const MzIntegrationParams &other);
103 
104  Q_INVOKABLE void setSmallestMz(pappso::pappso_double value);
105  Q_INVOKABLE void updateSmallestMz(pappso::pappso_double value);
106  pappso::pappso_double getSmallestMz() const;
107 
108  Q_INVOKABLE void setGreatestMz(pappso::pappso_double value);
109  Q_INVOKABLE void updateGreatestMz(pappso::pappso_double value);
110  Q_INVOKABLE pappso::pappso_double getGreatestMz() const;
111 
112  Q_INVOKABLE void setBinningType(BinningType binningType);
113  Q_INVOKABLE BinningType getBinningType() const;
114 
115  Q_INVOKABLE void setDecimalPlaces(int decimal_places);
116  Q_INVOKABLE int getDecimalPlaces() const;
117 
118  Q_INVOKABLE void setPrecision(pappso::PrecisionPtr precisionPtr);
119  Q_INVOKABLE pappso::PrecisionPtr getPrecision() const;
120 
121  Q_INVOKABLE void setApplyMzShift(bool applyMzShift);
122  Q_INVOKABLE bool isApplyMzShift() const;
123 
124  Q_INVOKABLE void setMzShift(double value);
125  Q_INVOKABLE double getMzShift() const;
126 
127  Q_INVOKABLE void setRemoveZeroValDataPoints(bool removeOrNot = true);
128  Q_INVOKABLE bool isRemoveZeroValDataPoints() const;
129 
130  Q_INVOKABLE void reset();
131 
132  Q_INVOKABLE bool isValid() const;
133 
134  Q_INVOKABLE bool hasValidMzRange() const;
135 
136  Q_INVOKABLE std::vector<pappso::pappso_double> createBins();
137  Q_INVOKABLE std::vector<pappso::pappso_double>
138  createBins(pappso::MassSpectrumCstSPtr mass_spectrum_csp);
139 
140  Q_INVOKABLE QString toString(int offset = 0,
141  const QString &spacer = QString()) const;
142 
143  private:
144  // That smallest value needs to be set to max, because it will be necessary
145  // compare any new m/z valut to it.
146  pappso::pappso_double m_smallestMz = std::numeric_limits<double>::max();
147 
148  // That greatest value needs to be set to min, because it will be necessary
149  // compare any new m/z valut to it.
150  pappso::pappso_double m_greatestMz = std::numeric_limits<double>::min();
151 
153 
154  int m_decimalPlaces = -1;
155 
156  // This should actually be called "bin size" as it describes the width of
157  // the bins.
158  pappso::PrecisionPtr mp_precision =
160  bool m_applyMzShift = false;
161  pappso::pappso_double m_mzShift = 0;
162  bool m_removeZeroValDataPoints = true;
163 
164  std::vector<double> createArbitraryBins();
165  std::vector<double>
166  createDataBasedBins(pappso::MassSpectrumCstSPtr massSpectrum);
167 };
168 
169 
170 } // namespace pappso
171 
174 
177 
The MzIntegrationParams class provides the parameters definining how m/z !
static PrecisionPtr getDaltonInstance(pappso_double value)
get a Dalton precision pointer
Definition: precision.cpp:130
#define PMSPP_LIB_DECL
int mzIntegrationParamsMetaTypeId
Q_DECLARE_METATYPE(pappso::MzIntegrationParams)
int mzIntegrationParamsPtrMetaTypeId
tries to keep as much as possible monoisotopes, removing any possible C13 peaks and changes multichar...
Definition: aa.cpp:39
BinningType
Type of binning when performing integrations to a mass spectrum.
@ DATA_BASED
binning based on mass spectral data
@ ARBITRARY
binning based on arbitrary bin size value
@ NONE
< no binning
double pappso_double
A type definition for doubles.
Definition: types.h:49
std::shared_ptr< const MassSpectrum > MassSpectrumCstSPtr
Definition: massspectrum.h:55
std::map< BinningType, QString > binningTypeMap
Map relating the BinningType to a textual representation.