libpappsomspp
Library for mass spectrometry
massspectrumcombinerfactory.h
Go to the documentation of this file.
1 // Filippo Rusconi 2019
2 
3 #pragma once
4 
5 #include <map>
6 
7 #include "types.h"
8 
9 namespace pappso
10 {
11 
12 
14 {
15 
16  using MapDaltonPrecision = std::map<pappso_double, DaltonPrecision *>;
17  using MapPpmPrecision = std::map<pappso_double, PpmPrecision *>;
18  using MapResPrecision = std::map<pappso_double, ResPrecision *>;
19  using MapMzPrecision = std::map<pappso_double, MzPrecision *>;
20 
21  private:
26 
27  public:
28  MassDataCombiner getPlusCombiner(MzIntegrationParams &integration_params);
29  getPlusCombiner(MzIntegrationParams &integration_params);
30 
31  static PrecisionPtr fromString(const QString &str);
35  static PrecisionPtr getMzInstance(pappso_double value, int charge);
36 };
37 
38 
39 class PrecisionBase
40 {
41  protected:
43 
45  {
46  }
47 
48  public:
49  virtual PrecisionUnit unit() const = 0;
50  virtual pappso_double getNominal() const final;
51  virtual pappso_double delta(pappso_double value) const = 0;
52  virtual QString toString() const = 0;
53 };
54 
55 
56 /** \def specific type for a dalton precision
57  *
58  */
59 class DaltonPrecision : public PrecisionBase
60 {
61  friend class PrecisionFactory;
62 
63  protected:
65 
66  public:
67  virtual ~DaltonPrecision();
68 
69  virtual PrecisionUnit unit() const override;
70 
71  virtual pappso_double delta(pappso_double value) const override;
72 
73  virtual QString toString() const override;
74 };
75 
76 /** \def specific type for a ppm precision
77  *
78  */
79 class PpmPrecision : public PrecisionBase
80 {
81  friend class PrecisionFactory;
82 
83  protected:
85 
86  public:
87  virtual ~PpmPrecision();
88 
89  virtual PrecisionUnit unit() const override;
90 
91  virtual pappso_double delta(pappso_double value) const override;
92 
93  virtual QString toString() const override;
94 };
95 
96 
97 /** \def specific type for a res precision
98  *
99  */
100 class ResPrecision : public PrecisionBase
101 {
102  friend class PrecisionFactory;
103 
104  protected:
106 
107  public:
108  virtual ~ResPrecision();
109 
110  virtual PrecisionUnit unit() const override;
111 
112  virtual pappso_double delta(pappso_double value) const override;
113 
114  virtual QString toString() const override;
115 };
116 
117 
118 /** \def specific type for a m/z precision
119  *
120  */
122 {
123  friend class PrecisionFactory;
124 
125  protected:
126  const int m_charge = 1;
127  MzPrecision(pappso_double value, int charge);
128 
129  public:
130  virtual ~MzPrecision();
131 
132  virtual PrecisionUnit unit() const override;
133 
134  virtual pappso_double delta(pappso_double value) const override;
135 
136  int charge() const;
137 
138  virtual QString toString() const override;
139 };
140 
141 
142 typedef const PrecisionBase *PrecisionPtr;
143 
144 
145 // was class Precision
146 class PrecisionFactory
147 {
148  using MapDaltonPrecision = std::map<pappso_double, DaltonPrecision *>;
149  using MapPpmPrecision = std::map<pappso_double, PpmPrecision *>;
150  using MapResPrecision = std::map<pappso_double, ResPrecision *>;
151  using MapMzPrecision = std::map<pappso_double, MzPrecision *>;
152 
153  private:
154  static MapDaltonPrecision m_mapDalton;
155  static MapPpmPrecision m_mapPpm;
156  static MapResPrecision m_mapRes;
158 
159  public:
160  static PrecisionPtr fromString(const QString &str);
164  static PrecisionPtr getMzInstance(pappso_double value, int charge);
165 };
166 
167 } // namespace pappso
virtual QString toString() const override
virtual pappso_double delta(pappso_double value) const override
DaltonPrecision(pappso_double x)
virtual PrecisionUnit unit() const override
std::map< pappso_double, ResPrecision * > MapResPrecision
static PrecisionPtr fromString(const QString &str)
getPlusCombiner(MzIntegrationParams &integration_params)
std::map< pappso_double, DaltonPrecision * > MapDaltonPrecision
std::map< pappso_double, PpmPrecision * > MapPpmPrecision
static PrecisionPtr getDaltonInstance(pappso_double value)
std::map< pappso_double, MzPrecision * > MapMzPrecision
static PrecisionPtr getPpmInstance(pappso_double value)
MassDataCombiner getPlusCombiner(MzIntegrationParams &integration_params)
static PrecisionPtr getResInstance(pappso_double value)
static PrecisionPtr getMzInstance(pappso_double value, int charge)
The MzIntegrationParams class provides the parameters definining how m/z !
PpmPrecision(pappso_double x)
virtual pappso_double delta(pappso_double value) const override
virtual PrecisionUnit unit() const override
virtual QString toString() const override
virtual QString toString() const =0
const pappso_double m_nominal
Definition: precision.h:46
PrecisionBase(pappso_double nominal)
virtual pappso_double getNominal() const final
virtual pappso_double delta(pappso_double value) const =0
virtual PrecisionUnit unit() const =0
static PrecisionPtr getPpmInstance(pappso_double value)
static PrecisionPtr fromString(const QString &str)
std::map< pappso_double, MzPrecision * > MapMzPrecision
std::map< pappso_double, PpmPrecision * > MapPpmPrecision
Definition: precision.h:129
static PrecisionPtr getResInstance(pappso_double value)
static PrecisionPtr getDaltonInstance(pappso_double value)
std::map< pappso_double, DaltonPrecision * > MapDaltonPrecision
Definition: precision.h:128
std::map< pappso_double, ResPrecision * > MapResPrecision
Definition: precision.h:130
virtual PrecisionUnit unit() const override
virtual pappso_double delta(pappso_double value) const override
virtual QString toString() const override
ResPrecision(pappso_double x)
tries to keep as much as possible monoisotopes, removing any possible C13 peaks and changes multichar...
Definition: aa.cpp:39
PrecisionUnit
Definition: types.h:63
const PrecisionBase * PrecisionPtr
Definition: precision.h:122
double pappso_double
A type definition for doubles.
Definition: types.h:48
This header contains all the type re-definitions and all the global variables definitions used in the...