libpappsomspp
Library for mass spectrometry
pappso::PrecisionFactory Class Reference

#include <precision.h>

Static Public Member Functions

static PrecisionPtr fromString (const QString &str)
 get a precision pointer from a string More...
 
static PrecisionPtr getDaltonInstance (pappso_double value)
 get a Dalton precision pointer More...
 
static PrecisionPtr getPpmInstance (pappso_double value)
 get a ppm precision pointer More...
 
static PrecisionPtr getResInstance (pappso_double value)
 get a resolution precision pointer More...
 
static PrecisionPtr getPrecisionPtrFractionInstance (PrecisionPtr origin, double fraction)
 get the fraction of an existing precision pointer More...
 
static PrecisionPtr getPrecisionPtrInstance (PrecisionUnit unit, double value)
 get a precision pointer instance More...
 

Private Types

using MapDaltonPrecision = std::map< pappso_double, DaltonPrecision * >
 
using MapPpmPrecision = std::map< pappso_double, PpmPrecision * >
 
using MapResPrecision = std::map< pappso_double, ResPrecision * >
 

Static Private Attributes

static MapDaltonPrecision m_mapDalton
 
static MapPpmPrecision m_mapPpm
 
static MapResPrecision m_mapRes
 

Detailed Description

Definition at line 126 of file precision.h.

Member Typedef Documentation

◆ MapDaltonPrecision

Definition at line 128 of file precision.h.

◆ MapPpmPrecision

Definition at line 129 of file precision.h.

◆ MapResPrecision

Definition at line 130 of file precision.h.

Member Function Documentation

◆ fromString()

PrecisionPtr pappso::PrecisionFactory::fromString ( const QString &  str)
static

get a precision pointer from a string

Parameters
stris of the form : "nominal_value unit", example : "0.02 dalton"

Definition at line 72 of file precision.cpp.

73 {
74 
75  // The format of the string is <number><space *><string> with string either
76  // "ppm" or "dalton" or "res".
77  //
78  // If there only once component, that is, <string> is omitted and charge is
79  // not provided, then "dalton" is considered.
80 
81  QStringList list = str.split(QRegularExpression("\\s+"), Qt::SkipEmptyParts);
82 
83  if(list.size() > 0)
84  {
85  bool ok;
86  pappso_double value = list[0].toDouble(&ok);
87  if(!ok)
88  {
89  throw ExceptionNotPossible(
90  QObject::tr("ERROR getting precision from string :\nunable to "
91  "convert %1 to number in %2")
92  .arg(value)
93  .arg(str));
94  }
95  if(list.size() == 1)
96  {
98  }
99  else if(list.size() == 2)
100  {
101  if(list[1].toLower() == "dalton")
102  {
104  }
105 
106  if(list[1].toLower() == "ppm")
107  {
108  return PrecisionFactory::getPpmInstance(value);
109  }
110 
111  if(list[1].toLower() == "res")
112  {
113  return PrecisionFactory::getResInstance(value);
114  }
115 
116  throw ExceptionNotPossible(
117  QObject::tr("ERROR getting precision from string :\nprecision "
118  "unit %1 to not known in %2")
119  .arg(list[1])
120  .arg(str));
121  }
122  }
123 
124  throw ExceptionNotPossible(QObject::tr("ERROR getting precision from string "
125  ":\nunable to convert %1 to precision")
126  .arg(str));
127 }
static PrecisionPtr getResInstance(pappso_double value)
get a resolution precision pointer
Definition: precision.cpp:177
static PrecisionPtr getPpmInstance(pappso_double value)
get a ppm precision pointer
Definition: precision.cpp:150
static PrecisionPtr getDaltonInstance(pappso_double value)
get a Dalton precision pointer
Definition: precision.cpp:130
double pappso_double
A type definition for doubles.
Definition: types.h:49

References getDaltonInstance(), getPpmInstance(), and getResInstance().

Referenced by pappso::FilterChargeDeconvolution::buildFilterFromString(), pappso::FilterComplementIonEnhancer::buildFilterFromString(), and pappso::FilterMzExclusion::buildFilterFromString().

◆ getDaltonInstance()

PrecisionPtr pappso::PrecisionFactory::getDaltonInstance ( pappso_double  value)
static

get a Dalton precision pointer

Parameters
valuethe precision value in dalton

Definition at line 130 of file precision.cpp.

131 {
132  MapDaltonPrecision::iterator it = m_mapDalton.find(value);
133  if(it == m_mapDalton.end())
134  {
135  // not found
136  std::pair<MapDaltonPrecision::iterator, bool> insert_res =
137  m_mapDalton.insert(std::pair<pappso_double, DaltonPrecision *>(
138  value, new DaltonPrecision(value)));
139  it = insert_res.first;
140  }
141  else
142  {
143  // found
144  }
145  return it->second;
146 }
static MapDaltonPrecision m_mapDalton
Definition: precision.h:133

References m_mapDalton.

Referenced by pappso::PrecisionWidget::PrecisionWidget(), fromString(), pappso::AaModification::getInstanceXtandemMod(), getPrecisionPtrInstance(), pappso::XtandemSpectrumProcess::process(), pappso::PrecisionWidget::setDaltonValueChanged(), and pappso::MzIntegrationParams::setPrecision().

◆ getPpmInstance()

PrecisionPtr pappso::PrecisionFactory::getPpmInstance ( pappso_double  value)
static

get a ppm precision pointer

Parameters
valuethe precision value in ppm

Definition at line 150 of file precision.cpp.

151 {
152  if(!value)
153  throw ExceptionNotPossible(
154  QObject::tr("Fatal error at precision.cpp "
155  "-- ERROR trying to set a Resolution precision value of 0. "
156  "Program aborted."));
157 
158  MapPpmPrecision::iterator it = m_mapPpm.find(value);
159 
160  if(it == m_mapPpm.end())
161  {
162  // Not found.
163  std::pair<MapPpmPrecision::iterator, bool> insert_res =
164  m_mapPpm.insert(std::pair<pappso_double, PpmPrecision *>(
165  value, new PpmPrecision(value)));
166  it = insert_res.first;
167  }
168  else
169  {
170  // found
171  }
172  return it->second;
173 }
static MapPpmPrecision m_mapPpm
Definition: precision.h:134

References m_mapPpm.

Referenced by pappso::MzIntegrationParams::MzIntegrationParams(), pappso::PrecisionWidget::PrecisionWidget(), pappso::MassSpectrum::equals(), fromString(), getPrecisionPtrInstance(), pappso::MzIntegrationParams::operator=(), pappso::MzIntegrationParams::reset(), and pappso::PrecisionWidget::setPpmValueChanged().

◆ getPrecisionPtrFractionInstance()

PrecisionPtr pappso::PrecisionFactory::getPrecisionPtrFractionInstance ( PrecisionPtr  origin,
double  fraction 
)
static

get the fraction of an existing precision pointer

Parameters
originthe original precision pointer
fractionthe fraction to apply on the original precision

Definition at line 203 of file precision.cpp.

205 {
206  PrecisionUnit unit = origin->unit();
207  double value = origin->getNominal() * fraction;
208 
209 
210  return getPrecisionPtrInstance(unit, value);
211 }
static PrecisionPtr getPrecisionPtrInstance(PrecisionUnit unit, double value)
get a precision pointer instance
Definition: precision.cpp:214
PrecisionUnit
Definition: types.h:64

References pappso::PrecisionBase::getNominal(), getPrecisionPtrInstance(), and pappso::PrecisionBase::unit().

Referenced by pappso::FilterChargeDeconvolution::FilterChargeDeconvolution(), pappso::PsmFeatures::PsmFeatures(), and pappso::FilterChargeDeconvolution::buildFilterFromString().

◆ getPrecisionPtrInstance()

PrecisionPtr pappso::PrecisionFactory::getPrecisionPtrInstance ( PrecisionUnit  unit,
double  value 
)
static

get a precision pointer instance

Parameters
unitthe precision unit
valuethe precision value

Definition at line 214 of file precision.cpp.

215 {
216 
217  switch(unit)
218  {
220  return getDaltonInstance(value);
221  case PrecisionUnit::ppm:
222  return getPpmInstance(value);
223  case PrecisionUnit::res:
224  return getResInstance(value);
225  case PrecisionUnit::mz:
226  return getDaltonInstance(value);
227  case PrecisionUnit::none:
228  throw ExceptionNotPossible(QObject::tr("Unknown precision unit"));
229 
230  default:
231  throw ExceptionNotPossible(QObject::tr("Unknown precision unit"));
232  break;
233  }
234 
235  return nullptr;
236 }

References pappso::dalton, getDaltonInstance(), getPpmInstance(), getResInstance(), pappso::mz, pappso::none, pappso::ppm, and pappso::res.

Referenced by pappso::XtandemPresetReader::getMs2FiltersOptions(), and getPrecisionPtrFractionInstance().

◆ getResInstance()

PrecisionPtr pappso::PrecisionFactory::getResInstance ( pappso_double  value)
static

get a resolution precision pointer

Parameters
valuethe precision value in resolution

Definition at line 177 of file precision.cpp.

178 {
179  if(!value)
180  throw ExceptionNotPossible(
181  QObject::tr("Fatal error at precision.cpp "
182  "-- ERROR trying to set a Resolution precision value of 0. "
183  "Program aborted."));
184 
185  MapResPrecision::iterator it = m_mapRes.find(value);
186 
187  if(it == m_mapRes.end())
188  {
189  // not found
190  std::pair<MapResPrecision::iterator, bool> insert_res =
191  m_mapRes.insert(std::pair<pappso_double, ResPrecision *>(
192  value, new ResPrecision(value)));
193  it = insert_res.first;
194  }
195  else
196  {
197  // found
198  }
199  return it->second;
200 }
static MapResPrecision m_mapRes
Definition: precision.h:135

References m_mapRes.

Referenced by pappso::PrecisionWidget::PrecisionWidget(), fromString(), getPrecisionPtrInstance(), and pappso::PrecisionWidget::setResValueChanged().

Member Data Documentation

◆ m_mapDalton

PrecisionFactory::MapDaltonPrecision pappso::PrecisionFactory::m_mapDalton
staticprivate
Initial value:
= [] {
return ret;
}()
std::map< pappso_double, DaltonPrecision * > MapDaltonPrecision
Definition: precision.h:128

Definition at line 133 of file precision.h.

Referenced by getDaltonInstance().

◆ m_mapPpm

PrecisionFactory::MapPpmPrecision pappso::PrecisionFactory::m_mapPpm
staticprivate
Initial value:
= [] {
return ret;
}()
std::map< pappso_double, PpmPrecision * > MapPpmPrecision
Definition: precision.h:129

Definition at line 134 of file precision.h.

Referenced by getPpmInstance().

◆ m_mapRes

PrecisionFactory::MapResPrecision pappso::PrecisionFactory::m_mapRes
staticprivate
Initial value:
= [] {
return ret;
}()
std::map< pappso_double, ResPrecision * > MapResPrecision
Definition: precision.h:130

Definition at line 135 of file precision.h.

Referenced by getResInstance().


The documentation for this class was generated from the following files: