pappsomspp
Library for mass spectrometry
pappso::TimsFrameBase Class Reference

#include <timsframebase.h>

Inheritance diagram for pappso::TimsFrameBase:
pappso::TimsFrame

Public Member Functions

 TimsFrameBase (std::size_t timsId, quint32 scanNum)
 constructor for binary independant tims frame More...
 
 TimsFrameBase (const TimsFrameBase &other)
 
 ~TimsFrameBase ()
 
virtual std::size_t getNbrPeaks (std::size_t scanNum) const
 
virtual MassSpectrumSPtr getMassSpectrumSPtr (std::size_t scanNum) const
 
virtual Trace cumulateScanToTrace (std::size_t scanNumBegin, std::size_t scanNumEnd) const
 
bool checkScanNum (std::size_t scanNum) const
 
void setAccumulationTime (double accumulation_time_ms)
 
void setMzCalibration (double temperature_correction, double digitizerTimebase, double digitizerDelay, double C0, double C1, double C2, double C3)
 
void setTimsCalibration (int tims_model_type, double C0, double C1, double C2, double C3, double C4, double C5, double C6, double C7, double C8, double C9)
 
void setTime (double time)
 
void setMsMsType (quint8 type)
 
unsigned int getMsLevel () const
 
double getTime () const
 
std::size_t getId () const
 
double getDriftTime (std::size_t scanNum) const
 get drift time of a scan number in milliseconds More...
 
double getOneOverK0Transformation (std::size_t scanNum) const
 get 1/K0 value of a given scan (mobility value) More...
 
double getMzFromTof (double tof) const
 get m/z from time of flight More...
 
quint32 getRawIndexFromMz (double mz) const
 get raw index of a given m/z More...
 
double getVoltageTransformation (std::size_t scanNum) const
 
double getTofFromIndex (quint32 index) const
 get time of flight from raw index More...
 
double getTofFromIndex (double index) const
 get time of flight from double index More...
 

Protected Attributes

quint32 m_scanNumber
 total number of scans contained in this frame More...
 
std::size_t m_timsId
 Tims frame database id (the SQL identifier of this frame) More...
 
double m_accumulationTime = 0
 accumulation time in milliseconds More...
 
double m_digitizerTimebase = 0
 
double m_digitizerDelay = 0
 
std::vector< double > m_mzCalibrationArr
 MZ calibration parameters. More...
 
quint8 m_msMsType = 0
 
double m_time = 0
 retention time More...
 
double m_timsDvStart = 0
 
double m_timsSlope
 
double m_timsTtrans = 0
 
double m_timsNdelay = 0
 
double m_timsVmin = 0
 
double m_timsVmax = 0
 
double m_timsC6 = 0
 
double m_timsC7 = 0
 

Detailed Description

Todo:
write docs

Definition at line 62 of file timsframebase.h.

Constructor & Destructor Documentation

◆ TimsFrameBase() [1/2]

pappso::TimsFrameBase::TimsFrameBase ( std::size_t  timsId,
quint32  scanNum 
)

constructor for binary independant tims frame

Parameters
timsIdtims frame identifier in the database
scanNumthe total number of scans contained in this frame

Definition at line 53 of file timsframebase.cpp.

55 {
56  m_accumulationTime = accumulation_time_ms;
57 }
58 
59 

References m_accumulationTime.

◆ TimsFrameBase() [2/2]

pappso::TimsFrameBase::TimsFrameBase ( const TimsFrameBase other)

Copy constructor

Parameters
otherTODO

Definition at line 61 of file timsframebase.cpp.

68 {

◆ ~TimsFrameBase()

pappso::TimsFrameBase::~TimsFrameBase ( )

Destructor

Definition at line 65 of file timsframebase.cpp.

68 {

Member Function Documentation

◆ checkScanNum()

bool pappso::TimsFrameBase::checkScanNum ( std::size_t  scanNum) const

Definition at line 100 of file timsframebase.cpp.

103 {
104  throw PappsoException(
105  QObject::tr(
106  "ERROR unable to get number of peaks in TimsFrameBase for scan number %1")
107  .arg(scanNum));
108 }
109 
111 TimsFrameBase::getMassSpectrumSPtr(std::size_t scanNum) const
112 {
113  throw PappsoException(
114  QObject::tr(
115  "ERROR unable to getMassSpectrumSPtr in TimsFrameBase for scan number %1")

◆ cumulateScanToTrace()

Trace pappso::TimsFrameBase::cumulateScanToTrace ( std::size_t  scanNumBegin,
std::size_t  scanNumEnd 
) const
virtual

Reimplemented in pappso::TimsFrame.

Definition at line 135 of file timsframebase.cpp.

136 {
137  // mz calibration
138  return ((double)index * m_digitizerTimebase) + m_digitizerDelay;
139 }
140 double
141 TimsFrameBase::getMzFromTof(double tof) const
142 {
143  // http://www.alglib.net/equations/polynomial.php

References m_digitizerDelay, and m_digitizerTimebase.

◆ getDriftTime()

double pappso::TimsFrameBase::getDriftTime ( std::size_t  scanNum) const

get drift time of a scan number in milliseconds

Parameters
scanNumthe scan number
Returns
time in milliseconds of mobility delay (drift time)

Definition at line 377 of file timsframebase.cpp.

◆ getId()

std::size_t pappso::TimsFrameBase::getId ( ) const

Definition at line 319 of file timsframebase.cpp.

319 {
320  if(tims_model_type != 2)
321  {
322  throw pappso::PappsoException(QObject::tr(

◆ getMassSpectrumSPtr()

MassSpectrumSPtr pappso::TimsFrameBase::getMassSpectrumSPtr ( std::size_t  scanNum) const
virtual

Reimplemented in pappso::TimsFrame.

Definition at line 127 of file timsframebase.cpp.

130 {
131  // mz calibration
132  return (index * m_digitizerTimebase) + m_digitizerDelay;
133 }

◆ getMsLevel()

unsigned int pappso::TimsFrameBase::getMsLevel ( ) const

Definition at line 305 of file timsframebase.cpp.

319 {

◆ getMzFromTof()

double pappso::TimsFrameBase::getMzFromTof ( double  tof) const

get m/z from time of flight

Parameters
toftime of flight
Returns
m/z value

Definition at line 157 of file timsframebase.cpp.

159  { 1 + sqrt((10^12)/670) * m2 + 207.775676931964 * (m2^2)
160 + 59.2526676368822 * (m2^3) }
161 > plot(eq2(1:sqrt(1000)), type='l')
162 */
163  // How to Factor a Trinomial with Fractions as Coefficients
164 
165  // formula
166  // a = c0 = 1
167  // b = sqrt((10^12)/c1), c1 = 670 * m^0.5 (1/2)
168  // c = c2, c2 = 207.775676931964 * m
169  // d = c3, c3 = 59.2526676368822 * m^1.5 (3/2)
170  // double mz = 0;
171  std::vector<double> X;
172  X.push_back((m_mzCalibrationArr[0] - (double)tof));
173  X.push_back(m_mzCalibrationArr[1]);
174  if(m_mzCalibrationArr[2] != 0)
175  {
176  X.push_back(m_mzCalibrationArr[2]);
177  }
178  if(m_mzCalibrationArr[3] != 0)
179  {
180  X.push_back(m_mzCalibrationArr[3]);
181  }
182  else
183  {
184  qDebug() << m_mzCalibrationArr[3];
185  }
186 
187  alglib::real_1d_array polynom_array;
188  try
189  {
190  polynom_array.setcontent(X.size(), &(X[0]));
191  }
192  catch(alglib::ap_error &error)
193  {
194  // PolynomialSolve: A[N]=0
196  QObject::tr("ERROR in alglib::polynom_array.setcontent :\n%1")
197  .arg(error.msg.c_str()));
198  }
199 
200 
201  /*
202  alglib::polynomialsolve(
203 real_1d_array a,
204 ae_int_t n,
205 complex_1d_array& x,
206 polynomialsolverreport& rep,
207 const xparams _params = alglib::xdefault);
208 */
209  alglib::complex_1d_array m;
210  alglib::polynomialsolverreport rep;
211  // qDebug();
212  try
213  {
214  alglib::polynomialsolve(polynom_array, X.size() - 1, m, rep);
215  }
216  catch(alglib::ap_error &error)
217  {
218  qDebug() << " X.size() - 1 = " << X.size() - 1;
219  qDebug() << m_mzCalibrationArr[0];
220  qDebug() << m_mzCalibrationArr[1];
221  qDebug() << m_mzCalibrationArr[2];
222  qDebug() << m_mzCalibrationArr[3];
223 
224  // PolynomialSolve: A[N]=0
226  QObject::tr("ERROR in alglib::polynomialsolve :\n%1")
227  .arg(error.msg.c_str()));
228  }
229 
230 
231  // qDebug();
232 
233  if(m.length() == 0)
234  {
236  QObject::tr("ERROR in TimsFrame::getMzFromTof m.size() == 0"));
237  }
238  // qDebug();
239  if(m[0].y != 0)
240  {
242  QObject::tr("ERROR in TimsFrame::getMzFromTof m[0].y!= 0"));
243  }
244 
245  return pow(m[0].x, 2);
246 }
247 
248 quint32
250 {
251  // formula
252  // a = c0 = 1
253  // b = sqrt((10^12)/c1), c1 = 670 * m^0.5 (1/2)
254  // c = c2, c2 = 207.775676931964 * m
255  // d = c3, c3 = 59.2526676368822 * m^1.5 (3/2)
256  qDebug() << "mz=" << mz;
257 
258  double tof = m_mzCalibrationArr[0];
259  qDebug() << "tof ( m_mzCalibrationArr[0])=" << tof;
260  // TODO cache value of std::sqrt((std::pow(10, 12) / m_mzCalibrationArr[1]))
261  tof += m_mzCalibrationArr[1] * std::sqrt(mz);
262  qDebug() << "tof=" << tof;

References m_mzCalibrationArr.

Referenced by pappso::TimsFrame::getTraceFromCumulatedScans().

◆ getNbrPeaks()

std::size_t pappso::TimsFrameBase::getNbrPeaks ( std::size_t  scanNum) const
virtual

Reimplemented in pappso::TimsFrame.

Definition at line 118 of file timsframebase.cpp.

121 {
122  throw PappsoException(
123  QObject::tr("ERROR unable to cumulateScanToTrace in TimsFrameBase for scan "
124  "number begin %1 end %2")

◆ getOneOverK0Transformation()

double pappso::TimsFrameBase::getOneOverK0Transformation ( std::size_t  scanNum) const

get 1/K0 value of a given scan (mobility value)

Parameters
scanNumthe scan number

Definition at line 383 of file timsframebase.cpp.

◆ getRawIndexFromMz()

quint32 pappso::TimsFrameBase::getRawIndexFromMz ( double  mz) const

get raw index of a given m/z

Parameters
mzthe mass to transform
Returns
integer x raw value

Definition at line 265 of file timsframebase.cpp.

276 {
277  m_time = time;
278 }
279 
280 void
281 TimsFrameBase::setMsMsType(quint8 type)
282 {
283 
284  qDebug() << " m_msMsType=" << type;
285  m_msMsType = type;
286 }
287 
288 unsigned int

◆ getTime()

double pappso::TimsFrameBase::getTime ( ) const

Definition at line 313 of file timsframebase.cpp.

319 {

◆ getTofFromIndex() [1/2]

double pappso::TimsFrameBase::getTofFromIndex ( double  index) const

get time of flight from double index

Definition at line 145 of file timsframebase.cpp.

◆ getTofFromIndex() [2/2]

double pappso::TimsFrameBase::getTofFromIndex ( quint32  index) const

get time of flight from raw index

Parameters
indexdigitizer x raw value
Returns
tof time of flight

Definition at line 151 of file timsframebase.cpp.

152  { 313.577620892277 + (sqrt((10^12)/157424.07710945) *
153 sqrt(m)) + (0.000338743021989553 * m)
154 + (0 * (m^1.5)) }
155 > plot(eq(1:1000), type='l')

Referenced by pappso::TimsFrame::getTraceFromCumulatedScans().

◆ getVoltageTransformation()

double pappso::TimsFrameBase::getVoltageTransformation ( std::size_t  scanNum) const

Definition at line 355 of file timsframebase.cpp.

362 {
363  return (m_accumulationTime / (double)m_scanNumber) * ((double)scanNum);
364 }
365 
366 double
367 TimsFrameBase::getOneOverK0Transformation(std::size_t scanNum) const
368 {
369  return 1 / (m_timsC6 + (m_timsC7 / getVoltageTransformation(scanNum)));
370 }
371 } // namespace pappso

◆ setAccumulationTime()

void pappso::TimsFrameBase::setAccumulationTime ( double  accumulation_time_ms)

Definition at line 70 of file timsframebase.cpp.

◆ setMsMsType()

void pappso::TimsFrameBase::setMsMsType ( quint8  type)

Definition at line 297 of file timsframebase.cpp.

298 {
299  return m_time;
300 }
301 
302 std::size_t

References m_time.

◆ setMzCalibration()

void pappso::TimsFrameBase::setMzCalibration ( double  temperature_correction,
double  digitizerTimebase,
double  digitizerDelay,
double  C0,
double  C1,
double  C2,
double  C3 
)

Definition at line 77 of file timsframebase.cpp.

85 {
86  if(scanNum < 0)
87  {
89  QObject::tr("Invalid scan number : scanNum%1 < 0").arg(scanNum));
90  }
91  if(scanNum >= m_scanNumber)
92  {
94  QObject::tr("Invalid scan number : scanNum%1 > m_scanNumber")
95  .arg(scanNum));
96  }
97 

◆ setTime()

void pappso::TimsFrameBase::setTime ( double  time)

Definition at line 291 of file timsframebase.cpp.

◆ setTimsCalibration()

void pappso::TimsFrameBase::setTimsCalibration ( int  tims_model_type,
double  C0,
double  C1,
double  C2,
double  C3,
double  C4,
double  C5,
double  C6,
double  C7,
double  C8,
double  C9 
)

Definition at line 324 of file timsframebase.cpp.

340 {
341  double v = m_timsDvStart +
342  m_timsSlope * ((double)scanNum - m_timsTtrans - m_timsNdelay);
343 
344  if(v < m_timsVmin)
345  {
347  QObject::tr("ERROR in TimsFrame::getVoltageTransformation invalid tims "
348  "calibration, v < m_timsVmin"));
349  }
350 
351 
352  if(v > m_timsVmax)
353  {

Member Data Documentation

◆ m_accumulationTime

double pappso::TimsFrameBase::m_accumulationTime = 0
protected

accumulation time in milliseconds

Definition at line 169 of file timsframebase.h.

Referenced by pappso::TimsFrame::getTraceFromCumulatedScans(), and TimsFrameBase().

◆ m_digitizerDelay

double pappso::TimsFrameBase::m_digitizerDelay = 0
protected

Definition at line 172 of file timsframebase.h.

Referenced by cumulateScanToTrace().

◆ m_digitizerTimebase

double pappso::TimsFrameBase::m_digitizerTimebase = 0
protected

Definition at line 171 of file timsframebase.h.

Referenced by cumulateScanToTrace().

◆ m_msMsType

quint8 pappso::TimsFrameBase::m_msMsType = 0
protected

Definition at line 178 of file timsframebase.h.

◆ m_mzCalibrationArr

std::vector<double> pappso::TimsFrameBase::m_mzCalibrationArr
protected

MZ calibration parameters.

Definition at line 176 of file timsframebase.h.

Referenced by getMzFromTof().

◆ m_scanNumber

quint32 pappso::TimsFrameBase::m_scanNumber
protected

total number of scans contained in this frame

Definition at line 159 of file timsframebase.h.

◆ m_time

double pappso::TimsFrameBase::m_time = 0
protected

retention time

Definition at line 182 of file timsframebase.h.

Referenced by setMsMsType().

◆ m_timsC6

double pappso::TimsFrameBase::m_timsC6 = 0
protected

Definition at line 192 of file timsframebase.h.

◆ m_timsC7

double pappso::TimsFrameBase::m_timsC7 = 0
protected

Definition at line 193 of file timsframebase.h.

◆ m_timsDvStart

double pappso::TimsFrameBase::m_timsDvStart = 0
protected

Definition at line 184 of file timsframebase.h.

◆ m_timsId

std::size_t pappso::TimsFrameBase::m_timsId
protected

Tims frame database id (the SQL identifier of this frame)

Warning
in sqlite, there is another field called TimsId : this is not that, because it is in fact an offset in bytes in the binary file.

Definition at line 165 of file timsframebase.h.

◆ m_timsNdelay

double pappso::TimsFrameBase::m_timsNdelay = 0
protected

Definition at line 189 of file timsframebase.h.

◆ m_timsSlope

double pappso::TimsFrameBase::m_timsSlope
protected
Initial value:
=
0

Definition at line 185 of file timsframebase.h.

◆ m_timsTtrans

double pappso::TimsFrameBase::m_timsTtrans = 0
protected

Definition at line 188 of file timsframebase.h.

◆ m_timsVmax

double pappso::TimsFrameBase::m_timsVmax = 0
protected

Definition at line 191 of file timsframebase.h.

◆ m_timsVmin

double pappso::TimsFrameBase::m_timsVmin = 0
protected

Definition at line 190 of file timsframebase.h.


The documentation for this class was generated from the following files:
pappso::TimsFrameBase::m_digitizerTimebase
double m_digitizerTimebase
Definition: timsframebase.h:171
pappso::TimsFrameBase::m_timsSlope
double m_timsSlope
Definition: timsframebase.h:185
pappso::TimsFrameBase::m_timsC7
double m_timsC7
Definition: timsframebase.h:193
pappso::PeptideIonCter::y
pappso::TimsFrameBase::getRawIndexFromMz
quint32 getRawIndexFromMz(double mz) const
get raw index of a given m/z
Definition: timsframebase.cpp:265
pappso::PeptideIonCter::x
pappso::TimsFrameBase::m_accumulationTime
double m_accumulationTime
accumulation time in milliseconds
Definition: timsframebase.h:169
pappso::TimsFrameBase::m_time
double m_time
retention time
Definition: timsframebase.h:182
pappso::ExceptionOutOfRange
Definition: exceptionoutofrange.h:50
pappso::TimsFrameBase::getVoltageTransformation
double getVoltageTransformation(std::size_t scanNum) const
Definition: timsframebase.cpp:355
pappso::TimsFrameBase::m_timsDvStart
double m_timsDvStart
Definition: timsframebase.h:184
pappso::TimsFrameBase::getMassSpectrumSPtr
virtual MassSpectrumSPtr getMassSpectrumSPtr(std::size_t scanNum) const
Definition: timsframebase.cpp:127
pappso::TimsFrameBase::setMsMsType
void setMsMsType(quint8 type)
Definition: timsframebase.cpp:297
pappso::TimsFrameBase::m_timsNdelay
double m_timsNdelay
Definition: timsframebase.h:189
pappso::TimsFrameBase::m_timsVmin
double m_timsVmin
Definition: timsframebase.h:190
pappso::TimsFrameBase::getOneOverK0Transformation
double getOneOverK0Transformation(std::size_t scanNum) const
get 1/K0 value of a given scan (mobility value)
Definition: timsframebase.cpp:383
pappso::PrecisionUnit::mz
pappso::TimsFrameBase::getMzFromTof
double getMzFromTof(double tof) const
get m/z from time of flight
Definition: timsframebase.cpp:157
pappso::TimsFrameBase::m_scanNumber
quint32 m_scanNumber
total number of scans contained in this frame
Definition: timsframebase.h:159
pappso::TimsFrameBase::m_timsC6
double m_timsC6
Definition: timsframebase.h:192
pappso::TimsFrameBase::m_digitizerDelay
double m_digitizerDelay
Definition: timsframebase.h:172
pappso::TimsFrameBase::m_mzCalibrationArr
std::vector< double > m_mzCalibrationArr
MZ calibration parameters.
Definition: timsframebase.h:176
pappso::TimsFrameBase::m_msMsType
quint8 m_msMsType
Definition: timsframebase.h:178
pappso::TimsFrameBase::m_timsVmax
double m_timsVmax
Definition: timsframebase.h:191
pappso::TimsFrameBase::m_timsTtrans
double m_timsTtrans
Definition: timsframebase.h:188
pappso::MassSpectrumSPtr
std::shared_ptr< MassSpectrum > MassSpectrumSPtr
Definition: massspectrum.h:73
pappso::PappsoException
Definition: pappsoexception.h:60