libpappsomspp
Library for mass spectrometry
Loading...
Searching...
No Matches
pappso::TimsFrameBase Class Reference

#include <timsframebase.h>

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

Classes

struct  TofIndexIntensityPair
 

Public Member Functions

 TimsFrameBase (std::size_t frameId, quint32 scanCount)
 constructor for binary independant tims frame
 
 TimsFrameBase (const TimsFrameBase &other)
 
virtual ~TimsFrameBase ()
 
virtual bool hasSameCalibrationData (const TimsFrameBase &other) const
 tells if 2 tims frame has the same calibration data Usefull to know if raw data can be handled between frames
 
virtual std::size_t getScanPeakCount (std::size_t scanIndex) const
 get the number of peaks in this spectrum need the binary file
 
virtual std::size_t getTotalNumberOfScans () const
 get the number of scans contained in this frame each scan represents an ion mobility slice
 
virtual quint32 getMaximumRawMassIndex () const
 get the maximum raw mass index contained in this frame
 
virtual MassSpectrumSPtr getMassSpectrumSPtr (std::size_t scan_index) const
 get Mass spectrum with peaks for this scan index need the binary file
 
virtual pappso::MassSpectrumCstSPtr getMassSpectrumCstSPtr (std::size_t scan_index) const final
 get the mass spectrum corresponding to a scan index
 
virtual Trace cumulateScansToTrace (std::size_t scanIndexBegin, std::size_t scanIndexEnd) const
 cumulate spectrum given a scan number range need the binary file The intensities are normalized with respect to the frame accumulation time
 
virtual Trace combineScansToTraceWithDowngradedMzResolution (std::size_t tof_index_merge_window, std::size_t scanIndexBegin, std::size_t scanIndexEnd, quint32 &minimum_tof_index_out, quint32 &maximum_tof_index_out) const
 cumulate spectrum given a scan index range need the binary file The intensities are normalized with respect to the frame accumulation time to leverage computing performance, this function decreases the mz resolution
 
virtual Trace combineScansToTraceWithDowngradedMzResolution2 (std::size_t mz_index_merge_window, double mz_range_begin, double mz_range_end, std::size_t mobility_scan_begin, std::size_t mobility_scan_end, quint32 &mz_minimum_index_out, quint32 &mz_maximum_index_out) const
 cumulate spectrum given a scan number range need the binary file The intensities are normalized with respect to the frame accumulation time to leverage computing performance, this function decreases the mz resolution
 
virtual Trace getMobilityScan (std::size_t scan_index, std::size_t tof_index_merge_window, double mz_range_begin, double mz_range_end, quint32 &mz_minimum_index_out, quint32 &mz_maximum_index_out) const
 get a single mobility scan m/z + intensities
 
virtual void combineScansInTofIndexIntensityMap (TimsDataFastMap &tof_index_intensity_map, std::size_t scan_index_begin, std::size_t scan_index_end) const
 cumulate scan list into a trace into a raw spectrum map The intensities are NOT normalized with respect to the frame accumulation time
 
virtual void combineScansInTofIndexIntensityMap (TimsDataFastMap &tof_index_intensity_map, std::size_t scan_index_begin, std::size_t scan_index_end, quint32 tof_index_begin, quint32 tof_index_end) const
 cumulate scan list into a trace into a raw spectrum map The intensities are NOT normalized with respect to the frame accumulation time
 
virtual quint64 cumulateScanIntensities (std::size_t scan_index) const
 
virtual quint64 cumulateScanRangeIntensities (std::size_t scan_index_begin, std::size_t scan_index_end) const
 
bool checkScanNum (std::size_t scanNum) const
 check that this scan number exists
 
void setAcqDurationInMilliseconds (double acquisition_duration_ms)
 
void setMzCalibration (double T1_frame, double T2_frame, double digitizerTimebase, double digitizerDelay, double C0, double C1, double C2, double C3, double C4, double T1_ref, double T2_ref, double dC1, double dC2)
 
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 setRtInSeconds (double time)
 
void setMsMsType (quint8 type)
 
unsigned int getMsLevel () const
 
double getRtInSeconds () const
 
std::size_t getId () const
 
double getDriftTimeInMilliseconds (std::size_t scan_index) const
 get drift time of a scan number in milliseconds
 
double getOneOverK0Transformation (std::size_t scan_index) const
 get 1/K0 value of a given scan (mobility value)
 
std::size_t getScanIndexFromOneOverK0 (double one_over_k0) const
 get the scan number from a given 1/Ko mobility value
 
double getVoltageTransformation (std::size_t scanNum) const
 get voltage for a given scan number
 
pappso::Trace getTraceFromTofIndexIntensityMap (TimsDataFastMap &accumulated_scans) const
 transform accumulation of raw scans into a real mass spectrum
 
virtual const MzCalibrationInterfaceSPtrgetMzCalibrationInterfaceSPtr () const final
 get the MzCalibration model to compute mz and TOF for this frame
 
void setMzCalibrationInterfaceSPtr (MzCalibrationInterfaceSPtr mzCalibration)
 
virtual std::vector< quint32 > getScanTofIndexList (std::size_t scan_index) const
 get raw index list for one given scan index are not TOF nor m/z, just index on digitizer
 
virtual std::vector< quint32 > getScanIntensityList (std::size_t scan_index) const
 get raw intensities without transformation from one scan it needs intensity normalization
 
virtual Trace getIonMobilityTraceByTofIndexRange (std::size_t tof_index_begin, std::size_t tof_index_end, Enums::XicExtractMethod method, std::size_t scan_index_begin, std::size_t scan_index_end) const
 get a mobility trace cumulating intensities inside the given mass index range
 

Protected Member Functions

virtual std::vector< TofIndexIntensityPair > & downgradeResolutionOfTofIndexIntensityPairList (std::size_t tof_index_merge_window, std::vector< TofIndexIntensityPair > &spectrum) const
 Downgrade the TOF index resolution to lower the number of real m/z computations.
 

Protected Attributes

quint32 m_scanCount
 total number of scans contained in this frame
 
std::size_t m_frameId
 Tims frame database id (the SQL identifier of this frame)
 
double m_acqDurationInMilliseconds = 0
 acquisition duration in milliseconds
 
quint8 m_msMsType = 0
 
double m_rtInSeconds = 0
 retention time
 
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
 
MzCalibrationInterfaceSPtr msp_mzCalibration = nullptr
 

Detailed Description

Todo:
write docs

Definition at line 49 of file timsframebase.h.

Constructor & Destructor Documentation

◆ TimsFrameBase() [1/2]

pappso::TimsFrameBase::TimsFrameBase ( std::size_t  frameId,
quint32  scanCount 
)

constructor for binary independant tims frame

Parameters
timsIdtims frame identifier in the database
scanCountthe number of scans in this frame

Definition at line 39 of file timsframebase.cpp.

40{
41 qDebug() << frame_id;
42 m_frameId = frame_id;
43
44 m_scanCount = scanCount;
45}
quint32 m_scanCount
total number of scans contained in this frame
std::size_t m_frameId
Tims frame database id (the SQL identifier of this frame)

References m_frameId, and m_scanCount.

◆ TimsFrameBase() [2/2]

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

Copy constructor

Parameters
otherTODO

Definition at line 47 of file timsframebase.cpp.

48{
49}

◆ ~TimsFrameBase()

pappso::TimsFrameBase::~TimsFrameBase ( )
virtual

Destructor

Definition at line 51 of file timsframebase.cpp.

52{
53}

Member Function Documentation

◆ checkScanNum()

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

check that this scan number exists

Parameters
scanNumscan number in the frame in the order it lies in binary file, from 0 to N-1

Definition at line 103 of file timsframebase.cpp.

104{
105 if(scanNum >= m_scanCount)
106 {
108 QObject::tr("Invalid scan number : scanNum %1 > m_scanNumber %2")
109 .arg(scanNum)
110 .arg(m_scanCount));
111 }
112
113 return true;
114}

References m_scanCount.

Referenced by pappso::TimsFrame::getMassSpectrumSPtr(), pappso::TimsFrameType1::getMassSpectrumSPtr(), pappso::TimsFrame::getScanIntensityList(), pappso::TimsFrameType1::getScanIntensityList(), pappso::TimsFrame::getScanPeakCount(), pappso::TimsFrame::getScanTofIndexList(), and pappso::TimsFrameType1::getScanTofIndexList().

◆ combineScansInTofIndexIntensityMap() [1/2]

void pappso::TimsFrameBase::combineScansInTofIndexIntensityMap ( TimsDataFastMap tof_index_intensity_map,
std::size_t  scan_index_begin,
std::size_t  scan_index_end 
) const
virtual

cumulate scan list into a trace into a raw spectrum map The intensities are NOT normalized with respect to the frame accumulation time

Parameters
tof_index_intensity_mapsimple map of integers to cumulate raw counts
scan_index_beginscan index in the frame in the order it lies in binary file, from 0 to N-1
scan_index_endscan index in the frame in the order it lies in binary file, from 0 to N-1

Reimplemented in pappso::TimsFrame.

Definition at line 194 of file timsframebase.cpp.

197{
198 throw PappsoException(
199 QObject::tr("ERROR unable to cumulateScansInRawMap in TimsFrameBase for scan "
200 "number begin %1 end %2")
201 .arg(scanNumBegin)
202 .arg(scanNumEnd));
203}

◆ combineScansInTofIndexIntensityMap() [2/2]

void pappso::TimsFrameBase::combineScansInTofIndexIntensityMap ( TimsDataFastMap tof_index_intensity_map,
std::size_t  scan_index_begin,
std::size_t  scan_index_end,
quint32  tof_index_begin,
quint32  tof_index_end 
) const
virtual

cumulate scan list into a trace into a raw spectrum map The intensities are NOT normalized with respect to the frame accumulation time

Parameters
tof_index_intensity_mapsimple map of integers to cumulate raw counts
scan_index_beginscan index in the frame in the order it lies in binary file, from 0 to N-1
scan_index_endscan index in the frame in the order it lies in binary file, from 0 to N-1
tof_index_begin
tof_index_end

Reimplemented in pappso::TimsFrame.

Definition at line 207 of file timsframebase.cpp.

212{
213 throw PappsoException(
214 QObject::tr("ERROR unable to cumulateScansInRawMap in TimsFrameBase for scan "
215 "number begin %1 end %2, tof index begin %3, tof index end %4")
216 .arg(scanNumBegin)
217 .arg(scanNumEnd)
218 .arg(tof_index_begin)
219 .arg(tof_index_end));
220}

◆ combineScansToTraceWithDowngradedMzResolution()

Trace pappso::TimsFrameBase::combineScansToTraceWithDowngradedMzResolution ( std::size_t  tof_index_merge_window,
std::size_t  scanIndexBegin,
std::size_t  scanIndexEnd,
quint32 &  minimum_tof_index_out,
quint32 &  maximum_tof_index_out 
) const
virtual

cumulate spectrum given a scan index range need the binary file The intensities are normalized with respect to the frame accumulation time to leverage computing performance, this function decreases the mz resolution

Parameters
tof_index_merge_windowwidth of the TOF index window used to merge all intensities into a single point. This results in faster computing.
scanIndexBeginscan index in the frame in the order it lies in binary file, from 0 to N-1
scanIndexEndscan index in the frame in the order it lies in binary file, from 0 to N-1
minimum_tof_index_outreport the minimum mz index contained in the resulting trace
maximum_tof_index_outreport the maximum mz index contained in the resulting trace

Reimplemented in pappso::TimsFrame.

Definition at line 156 of file timsframebase.cpp.

162{
163 throw PappsoException(
164 QObject::tr("Non implemented function %1 %2 %3").arg(__FILE__).arg(__FUNCTION__).arg(__LINE__));
165}

◆ combineScansToTraceWithDowngradedMzResolution2()

Trace pappso::TimsFrameBase::combineScansToTraceWithDowngradedMzResolution2 ( std::size_t  mz_index_merge_window,
double  mz_range_begin,
double  mz_range_end,
std::size_t  mobility_scan_begin,
std::size_t  mobility_scan_end,
quint32 &  mz_minimum_index_out,
quint32 &  mz_maximum_index_out 
) const
virtual

cumulate spectrum given a scan number range need the binary file The intensities are normalized with respect to the frame accumulation time to leverage computing performance, this function decreases the mz resolution

Parameters
mzindex_merge_windowwidth of the mzindex window used to merge all intensities into a single point. This results in faster computing.
mz_range_begin
mz_range_end
scanNumBeginscan number in the frame in the order it lies in binary file, from 0 to N-1
scanNumEndscan number in the frame in the order it lies in binary file, from 0 to N-1
mz_minimum_indexreport the minimum mz index contained in the resulting trace (constrained by the mz_range_begin)
mz_maximum_indexreport the maximum mz index contained in the resulting trace (constrained by the mz_range_end)

Reimplemented in pappso::TimsFrame.

Definition at line 168 of file timsframebase.cpp.

176{
177 throw PappsoException(
178 QObject::tr("Non implemented function %1 %2 %3").arg(__FILE__).arg(__FUNCTION__).arg(__LINE__));
179}

◆ cumulateScanIntensities()

quint64 pappso::TimsFrameBase::cumulateScanIntensities ( std::size_t  scan_index) const
virtual

Reimplemented in pappso::TimsFrame.

Definition at line 223 of file timsframebase.cpp.

224{
225 throw PappsoException(
226 QObject::tr("ERROR unable to cumulateSingleScanIntensities in TimsFrameBase for scan "
227 "number %1.")
228 .arg(scanNum));
229
230 return 0;
231}

◆ cumulateScanRangeIntensities()

quint64 pappso::TimsFrameBase::cumulateScanRangeIntensities ( std::size_t  scan_index_begin,
std::size_t  scan_index_end 
) const
virtual

Reimplemented in pappso::TimsFrame.

Definition at line 235 of file timsframebase.cpp.

236{
237 throw PappsoException(
238 QObject::tr("ERROR unable to cumulateScansInRawMap in TimsFrameBase for scan "
239 "number begin %1 end %2")
240 .arg(scanNumBegin)
241 .arg(scanNumEnd));
242
243 return 0;
244}

◆ cumulateScansToTrace()

Trace pappso::TimsFrameBase::cumulateScansToTrace ( std::size_t  scanIndexBegin,
std::size_t  scanIndexEnd 
) const
virtual

cumulate spectrum given a scan number range need the binary file The intensities are normalized with respect to the frame accumulation time

Parameters
scanIndexBeginscan index in the frame in the order it lies in the frame in the binary file, from 0 to N-1
scanIndexEndscan number in the frame in the order it lies in the frame in the binary file, from 0 to N-1

Reimplemented in pappso::TimsFrame.

Definition at line 147 of file timsframebase.cpp.

148{
149 throw PappsoException(QObject::tr("ERROR unable to cumulateScanToTrace in TimsFrameBase for scan "
150 "number begin %1 end %2")
151 .arg(scanNumBegin)
152 .arg(scanNumEnd));
153}

◆ downgradeResolutionOfTofIndexIntensityPairList()

std::vector< TimsFrameBase::TofIndexIntensityPair > & pappso::TimsFrameBase::downgradeResolutionOfTofIndexIntensityPairList ( std::size_t  tof_index_merge_window,
std::vector< TofIndexIntensityPair > &  spectrum 
) const
protectedvirtual

Downgrade the TOF index resolution to lower the number of real m/z computations.

This function merges together into a single TOF index bin all the TOF

indices contained in the tof_index_merge_window. Then the window is shifted and the operation is performed again. When all the list of \l{TofIndexIntensityPair}s has been gone through, the resolution of the data has effectively been downgrade by a factor corresponding to tof_index_merge_window.

 @param tof_index_merge_window width of the TOF index window used to merge

all intensities into a single point. This results in faster computing.

Parameters
rawSpectrumthe spectrum to shrink

Definition at line 532 of file timsframebase.cpp.

535{
536
537 qDebug() << rawSpectrum.size();
538 std::vector<TimsFrameBase::TofIndexIntensityPair> new_spectrum;
539
540 TimsFrameBase::TofIndexIntensityPair current_point;
541 current_point.intensity_index = 0;
542 current_point.tof_index = 0;
543 for(auto &pair_mz_intensity : rawSpectrum)
544 {
545 quint32 mzkey = (pair_mz_intensity.tof_index / mzindex_merge_window);
546 mzkey = (mzkey * mzindex_merge_window) + (mzindex_merge_window / 2);
547
548 if(current_point.tof_index != mzkey)
549 {
550 if(current_point.tof_index > 0)
551 {
552 new_spectrum.push_back(current_point);
553 }
554
555 current_point.intensity_index = pair_mz_intensity.intensity_index;
556 current_point.tof_index = mzkey;
557 }
558 else
559 {
560 current_point.intensity_index += pair_mz_intensity.intensity_index;
561 }
562 }
563
564 if(current_point.tof_index > 0)
565 {
566 new_spectrum.push_back(current_point);
567 }
568 rawSpectrum = new_spectrum;
569 qDebug() << rawSpectrum.size();
570 return rawSpectrum;
571}

References pappso::TimsFrameBase::TofIndexIntensityPair::intensity_index, and pappso::TimsFrameBase::TofIndexIntensityPair::tof_index.

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

◆ getDriftTimeInMilliseconds()

double pappso::TimsFrameBase::getDriftTimeInMilliseconds ( std::size_t  scan_index) const

get drift time of a scan number in milliseconds

Parameters
scanNumscan number in the frame in the order it lies in binary file, from 0 to N-1
Returns
time in milliseconds of mobility delay (drift time)

Definition at line 335 of file timsframebase.cpp.

336{
337 return (m_acqDurationInMilliseconds / (double)m_scanCount) * ((double)scanNum);
338}
double m_acqDurationInMilliseconds
acquisition duration in milliseconds

References m_acqDurationInMilliseconds, and m_scanCount.

◆ getId()

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

◆ getIonMobilityTraceByTofIndexRange()

Trace pappso::TimsFrameBase::getIonMobilityTraceByTofIndexRange ( std::size_t  tof_index_begin,
std::size_t  tof_index_end,
Enums::XicExtractMethod  method,
std::size_t  scan_index_begin,
std::size_t  scan_index_end 
) const
virtual

get a mobility trace cumulating intensities inside the given mass index range

Parameters
tof_index_beginraw mass index lower bound
tof_index_endraw mass index upper bound
methodmax or sum intensities
scan_index_beginfirst mobility scan to integrate
scan_index_endlast mobility scan to integrate

Definition at line 468 of file timsframebase.cpp.

473{
474 Trace im_trace;
475 DataPoint data_point;
476 if(scan_index_end > m_scanCount)
477 scan_index_end = m_scanCount;
478 for(quint32 i = scan_index_begin; i < (scan_index_end + 1); i++)
479 {
480 data_point.x = i;
481 data_point.y = 0;
482 qDebug() << "m_scanNumber=" << m_scanCount << " i=" << i;
483 std::vector<quint32> index_list = getScanTofIndexList(i);
484 auto it_lower =
485 std::find_if(index_list.begin(), index_list.end(), [tof_index_begin](quint32 to_compare) {
486 if(to_compare < tof_index_begin)
487 {
488 return false;
489 }
490 return true;
491 });
492
493
494 if(it_lower == index_list.end())
495 {
496 }
497 else
498 {
499
500
501 auto it_upper =
502 std::find_if(index_list.begin(), index_list.end(), [tof_index_end](quint32 to_compare) {
503 if(tof_index_end >= to_compare)
504 {
505 return false;
506 }
507 return true;
508 });
509 std::vector<quint32> intensity_list = getScanIntensityList(i);
510 for(int j = std::distance(index_list.begin(), it_lower);
511 j < std::distance(index_list.begin(), it_upper);
512 j++)
513 {
514 if(method == Enums::XicExtractMethod::sum)
515 {
516 data_point.y += intensity_list[j];
517 }
518 else
519 {
520 data_point.y = std::max((double)intensity_list[j], data_point.y);
521 }
522 }
523 }
524 im_trace.push_back(data_point);
525 }
526 qDebug();
527 return im_trace;
528}
virtual std::vector< quint32 > getScanTofIndexList(std::size_t scan_index) const
get raw index list for one given scan index are not TOF nor m/z, just index on digitizer
virtual std::vector< quint32 > getScanIntensityList(std::size_t scan_index) const
get raw intensities without transformation from one scan it needs intensity normalization

References getScanIntensityList(), getScanTofIndexList(), m_scanCount, pappso::Enums::sum, pappso::DataPoint::x, and pappso::DataPoint::y.

◆ getMassSpectrumCstSPtr()

pappso::MassSpectrumCstSPtr pappso::TimsFrameBase::getMassSpectrumCstSPtr ( std::size_t  scan_index) const
finalvirtual

get the mass spectrum corresponding to a scan index

Parameters
scan_indexthe scan index of the mass spectrum to retrieve

Definition at line 140 of file timsframebase.cpp.

141{
142 // qDebug();
143
144 return getMassSpectrumSPtr(scanNum);
145}
virtual MassSpectrumSPtr getMassSpectrumSPtr(std::size_t scan_index) const
get Mass spectrum with peaks for this scan index need the binary file

References getMassSpectrumSPtr().

◆ getMassSpectrumSPtr()

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

get Mass spectrum with peaks for this scan index need the binary file

Parameters
scan_indexscan index in the frame in the order it lies in binary file, from 0 to N-1 (this is the mobility index)

Reimplemented in pappso::TimsFrame, and pappso::TimsFrameType1.

Definition at line 131 of file timsframebase.cpp.

132{
133 throw PappsoException(
134 QObject::tr("ERROR unable to getMassSpectrumSPtr in TimsFrameBase for scan number %1")
135 .arg(scanNum));
136}

Referenced by getMassSpectrumCstSPtr().

◆ getMaximumRawMassIndex()

quint32 pappso::TimsFrameBase::getMaximumRawMassIndex ( ) const
virtual

get the maximum raw mass index contained in this frame

Definition at line 434 of file timsframebase.cpp.

435{
436 quint32 max_value = 0;
437 for(quint32 i = 0; i < m_scanCount; i++)
438 {
439 qDebug() << "m_scanNumber=" << m_scanCount << " i=" << i;
440 std::vector<quint32> index_list = getScanTofIndexList(i);
441 auto it = std::max_element(index_list.begin(), index_list.end());
442 if(it != index_list.end())
443 {
444 max_value = std::max(max_value, *it);
445 }
446 }
447 return max_value;
448}

References getScanTofIndexList(), and m_scanCount.

◆ getMobilityScan()

Trace pappso::TimsFrameBase::getMobilityScan ( std::size_t  scan_index,
std::size_t  tof_index_merge_window,
double  mz_range_begin,
double  mz_range_end,
quint32 &  mz_minimum_index_out,
quint32 &  mz_maximum_index_out 
) const
virtual

get a single mobility scan m/z + intensities

Parameters
scanIndexscan number in the frame in the order it lies in binary file, from 0 to N-1
tof_index_merge_windowwidth of the TOF index window used to merge all intensities into a single point. This results in faster computing.
mz_range_begin
mz_range_end
mz_minimum_indexreport the minimum mz index contained in the resulting trace (constrained by the mz_range_begin)
mz_maximum_indexreport the maximum mz index contained in the resulting trace (constrained by the mz_range_end)

Reimplemented in pappso::TimsFrame.

Definition at line 182 of file timsframebase.cpp.

188{
189 throw PappsoException(
190 QObject::tr("Non implemented function %1 %2 %3").arg(__FILE__).arg(__FUNCTION__).arg(__LINE__));
191}

◆ getMsLevel()

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

Definition at line 261 of file timsframebase.cpp.

262{
263 if(m_msMsType == 0)
264 return 1;
265 return 2;
266}

References m_msMsType.

◆ getMzCalibrationInterfaceSPtr()

const MzCalibrationInterfaceSPtr & pappso::TimsFrameBase::getMzCalibrationInterfaceSPtr ( ) const
finalvirtual

get the MzCalibration model to compute mz and TOF for this frame

Definition at line 404 of file timsframebase.cpp.

405{
406 if(msp_mzCalibration == nullptr)
407 {
408
409 throw pappso::PappsoException(QObject::tr("ERROR in %1, %2, %3 msp_mzCalibration is null")
410 .arg(__FILE__)
411 .arg(__FUNCTION__)
412 .arg(__LINE__));
413 }
414 return msp_mzCalibration;
415}
MzCalibrationInterfaceSPtr msp_mzCalibration

References msp_mzCalibration.

Referenced by pappso::TimsFrame::XicComputeStructure::XicComputeStructure(), pappso::TimsFrame::combineScansToTraceWithDowngradedMzResolution(), pappso::TimsFrame::combineScansToTraceWithDowngradedMzResolution2(), pappso::TimsFrame::cumulateScansToTrace(), pappso::TimsFrame::getMassSpectrumSPtr(), pappso::TimsFrameType1::getMassSpectrumSPtr(), and getTraceFromTofIndexIntensityMap().

◆ getOneOverK0Transformation()

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

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

Parameters
scanNumscan number in the frame in the order it lies in binary file, from 0 to N-1

Definition at line 341 of file timsframebase.cpp.

342{
343 return 1 / (m_timsC6 + (m_timsC7 / getVoltageTransformation(scanNum)));
344}
double getVoltageTransformation(std::size_t scanNum) const
get voltage for a given scan number

References getVoltageTransformation(), m_timsC6, and m_timsC7.

◆ getRtInSeconds()

double pappso::TimsFrameBase::getRtInSeconds ( ) const

Definition at line 269 of file timsframebase.cpp.

270{
271 return m_rtInSeconds;
272}
double m_rtInSeconds
retention time

References m_rtInSeconds.

◆ getScanIndexFromOneOverK0()

std::size_t pappso::TimsFrameBase::getScanIndexFromOneOverK0 ( double  one_over_k0) const

get the scan number from a given 1/Ko mobility value

Parameters
one_over_k0the mobility value to tranform
Returns
integer the scan number in the frame in the order it lies in binary file, from 0 to N-1

Definition at line 348 of file timsframebase.cpp.

349{
350 double temp = 1 / one_over_k0;
351 temp = temp - m_timsC6;
352 temp = temp / m_timsC7;
353 temp = 1 / temp;
354 temp = temp - m_timsDvStart;
355 temp = temp / m_timsSlope + m_timsTtrans + m_timsNdelay;
356 return (std::size_t)std::round(temp);
357}

References m_timsC6, m_timsC7, m_timsDvStart, m_timsNdelay, m_timsSlope, and m_timsTtrans.

◆ getScanIntensityList()

std::vector< quint32 > pappso::TimsFrameBase::getScanIntensityList ( std::size_t  scan_index) const
virtual

get raw intensities without transformation from one scan it needs intensity normalization

Reimplemented in pappso::TimsFrame, and pappso::TimsFrameType1.

Definition at line 460 of file timsframebase.cpp.

461{
462 throw PappsoException(
463 QObject::tr("ERROR unable to getScanIntensities in TimsFrameBase for scan number %1")
464 .arg(scanNum));
465}

Referenced by getIonMobilityTraceByTofIndexRange().

◆ getScanPeakCount()

std::size_t pappso::TimsFrameBase::getScanPeakCount ( std::size_t  scanIndex) const
virtual

get the number of peaks in this spectrum need the binary file

Parameters
scanIndexscan index in the frame in the order it lies in frame's binary data, from 0 to N-1

Reimplemented in pappso::TimsFrame, and pappso::TimsFrameType1.

Definition at line 117 of file timsframebase.cpp.

118{
119 throw PappsoException(
120 QObject::tr("ERROR unable to get number of peaks in TimsFrameBase for scan number %1")
121 .arg(scanNum));
122}

◆ getScanTofIndexList()

std::vector< quint32 > pappso::TimsFrameBase::getScanTofIndexList ( std::size_t  scan_index) const
virtual

get raw index list for one given scan index are not TOF nor m/z, just index on digitizer

Reimplemented in pappso::TimsFrame, and pappso::TimsFrameType1.

Definition at line 451 of file timsframebase.cpp.

452{
453 throw PappsoException(
454 QObject::tr("ERROR unable to getScanIndexList in TimsFrameBase for scan number %1")
455 .arg(scanNum));
456}

Referenced by getIonMobilityTraceByTofIndexRange(), and getMaximumRawMassIndex().

◆ getTotalNumberOfScans()

std::size_t pappso::TimsFrameBase::getTotalNumberOfScans ( ) const
virtual

get the number of scans contained in this frame each scan represents an ion mobility slice

Definition at line 125 of file timsframebase.cpp.

126{
127 return m_scanCount;
128}

References m_scanCount.

Referenced by pappso::BaseColorMapPlotWidget::addColorMap().

◆ getTraceFromTofIndexIntensityMap()

pappso::Trace pappso::TimsFrameBase::getTraceFromTofIndexIntensityMap ( TimsDataFastMap accumulated_scans) const

transform accumulation of raw scans into a real mass spectrum

Definition at line 374 of file timsframebase.cpp.

375{
376 qDebug();
377 // qDebug();
378 // add flanking peaks
379 pappso::Trace local_trace;
380
381 MzCalibrationInterface *mz_calibration_p = getMzCalibrationInterfaceSPtr().get();
382
383
384 DataPoint element;
385 for(quint32 tof_index : accumulated_scans.getTofIndexList())
386 {
387 // intensity normalization
388 element.y =
389 ((double)accumulated_scans.readIntensity(tof_index)) * 100.0 / m_acqDurationInMilliseconds;
390
391 // mz calibration
392 element.x = mz_calibration_p->getMzFromTofIndex(tof_index);
393
394 local_trace.push_back(element);
395 }
396 local_trace.sortX();
397
398 qDebug();
399 // qDebug();
400 return local_trace;
401}
virtual const MzCalibrationInterfaceSPtr & getMzCalibrationInterfaceSPtr() const final
get the MzCalibration model to compute mz and TOF for this frame
A simple container of DataPoint instances.
Definition trace.h:152
void sortX(Enums::SortOrder sort_order=Enums::SortOrder::ascending)
Definition trace.cpp:1071

References getMzCalibrationInterfaceSPtr(), pappso::MzCalibrationInterface::getMzFromTofIndex(), pappso::TimsDataFastMap::getTofIndexList(), m_acqDurationInMilliseconds, pappso::TimsDataFastMap::readIntensity(), pappso::Trace::sortX(), pappso::DataPoint::x, and pappso::DataPoint::y.

◆ getVoltageTransformation()

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

get voltage for a given scan number

Parameters
scanNumscan number in the frame in the order it lies in binary file, from 0 to N-1
Returns
double volt measure

Definition at line 310 of file timsframebase.cpp.

311{
312 double v = m_timsDvStart + m_timsSlope * ((double)scanNum - m_timsTtrans - m_timsNdelay);
313
314 if(v < m_timsVmin)
315 {
317 QObject::tr("ERROR in TimsFrame::getVoltageTransformation invalid tims "
318 "calibration, v < m_timsVmin %1 < %2")
319 .arg(v)
320 .arg(m_timsVmin));
321 }
322
323
324 if(v > m_timsVmax)
325 {
327 QObject::tr("ERROR in TimsFrame::getVoltageTransformation invalid tims "
328 "calibration, v > m_timsVmax %1 > %2")
329 .arg(v)
330 .arg(m_timsVmax));
331 }
332 return v;
333}

References m_timsDvStart, m_timsNdelay, m_timsSlope, m_timsTtrans, m_timsVmax, and m_timsVmin.

Referenced by getOneOverK0Transformation().

◆ hasSameCalibrationData()

bool pappso::TimsFrameBase::hasSameCalibrationData ( const TimsFrameBase other) const
virtual

tells if 2 tims frame has the same calibration data Usefull to know if raw data can be handled between frames

Definition at line 360 of file timsframebase.cpp.

361{
362 if((m_timsDvStart == other.m_timsDvStart) && (m_timsTtrans == other.m_timsTtrans) &&
363 (m_timsNdelay == other.m_timsNdelay) && (m_timsVmin == other.m_timsVmin) &&
364 (m_timsVmax == other.m_timsVmax) && (m_timsC6 == other.m_timsC6) &&
365 (m_timsC7 == other.m_timsC7) && (m_timsSlope == other.m_timsSlope))
366 {
367 return true;
368 }
369 return false;
370}

References m_timsC6, m_timsC7, m_timsDvStart, m_timsNdelay, m_timsSlope, m_timsTtrans, m_timsVmax, and m_timsVmin.

◆ setAcqDurationInMilliseconds()

void pappso::TimsFrameBase::setAcqDurationInMilliseconds ( double  acquisition_duration_ms)

Definition at line 56 of file timsframebase.cpp.

57{
58 m_acqDurationInMilliseconds = acquisition_duration_ms;
59}

References m_acqDurationInMilliseconds.

◆ setMsMsType()

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

Definition at line 253 of file timsframebase.cpp.

254{
255
256 qDebug() << " m_msMsType=" << type;
257 m_msMsType = type;
258}

References m_msMsType.

◆ setMzCalibration()

void pappso::TimsFrameBase::setMzCalibration ( double  T1_frame,
double  T2_frame,
double  digitizerTimebase,
double  digitizerDelay,
double  C0,
double  C1,
double  C2,
double  C3,
double  C4,
double  T1_ref,
double  T2_ref,
double  dC1,
double  dC2 
)

Definition at line 63 of file timsframebase.cpp.

76{
77
78 /* MzCalibrationModel1 mzCalibration(temperature_correction,
79 digitizerTimebase,
80 digitizerDelay,
81 C0,
82 C1,
83 C2,
84 C3,
85 C4);
86 */
87 msp_mzCalibration = std::make_shared<MzCalibrationModel1>(T1_frame,
88 T2_frame,
89 digitizerTimebase,
90 digitizerDelay,
91 C0,
92 C1,
93 C2,
94 C3,
95 C4,
96 T1_ref,
97 T2_ref,
98 dC1,
99 dC2);
100}

References msp_mzCalibration.

◆ setMzCalibrationInterfaceSPtr()

void pappso::TimsFrameBase::setMzCalibrationInterfaceSPtr ( MzCalibrationInterfaceSPtr  mzCalibration)

Definition at line 418 of file timsframebase.cpp.

419{
420
421 if(mzCalibration == nullptr)
422 {
423
424 throw pappso::PappsoException(QObject::tr("ERROR in %1, %2, %3 msp_mzCalibration is null")
425 .arg(__FILE__)
426 .arg(__FUNCTION__)
427 .arg(__LINE__));
428 }
429 msp_mzCalibration = mzCalibration;
430}

References msp_mzCalibration.

◆ setRtInSeconds()

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

Definition at line 247 of file timsframebase.cpp.

248{
249 m_rtInSeconds = time;
250}

References m_rtInSeconds.

◆ 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 280 of file timsframebase.cpp.

291{
292 if(tims_model_type != 2)
293 {
295 QObject::tr("ERROR in TimsFrame::setTimsCalibration tims_model_type != 2"));
296 }
297 m_timsDvStart = C2; // C2 from TimsCalibration
298 m_timsTtrans = C4; // C4 from TimsCalibration
299 m_timsNdelay = C0; // C0 from TimsCalibration
300 m_timsVmin = C8; // C8 from TimsCalibration
301 m_timsVmax = C9; // C9 from TimsCalibration
302 m_timsC6 = C6;
303 m_timsC7 = C7;
304
305
306 m_timsSlope = (C3 - m_timsDvStart) / C1; // //C3 from TimsCalibration // C2 from
307 // TimsCalibration // C1 from TimsCalibration
308}

References m_timsC6, m_timsC7, m_timsDvStart, m_timsNdelay, m_timsSlope, m_timsTtrans, m_timsVmax, and m_timsVmin.

Member Data Documentation

◆ m_acqDurationInMilliseconds

◆ m_frameId

std::size_t pappso::TimsFrameBase::m_frameId
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 390 of file timsframebase.h.

Referenced by pappso::TimsFrame::TimsFrame(), TimsFrameBase(), pappso::TimsFrameType1::TimsFrameType1(), getId(), and pappso::TimsFrameType1::lzfDecompressScan().

◆ m_msMsType

quint8 pappso::TimsFrameBase::m_msMsType = 0
protected

Definition at line 396 of file timsframebase.h.

Referenced by getMsLevel(), and setMsMsType().

◆ m_rtInSeconds

double pappso::TimsFrameBase::m_rtInSeconds = 0
protected

retention time

Definition at line 400 of file timsframebase.h.

Referenced by pappso::TimsFrame::extractTimsXicListInRtRange(), getRtInSeconds(), and setRtInSeconds().

◆ m_scanCount

◆ m_timsC6

double pappso::TimsFrameBase::m_timsC6 = 0
protected

◆ m_timsC7

double pappso::TimsFrameBase::m_timsC7 = 0
protected

◆ m_timsDvStart

double pappso::TimsFrameBase::m_timsDvStart = 0
protected

◆ m_timsNdelay

double pappso::TimsFrameBase::m_timsNdelay = 0
protected

◆ m_timsSlope

double pappso::TimsFrameBase::m_timsSlope
protected

◆ m_timsTtrans

double pappso::TimsFrameBase::m_timsTtrans = 0
protected

◆ m_timsVmax

double pappso::TimsFrameBase::m_timsVmax = 0
protected

◆ m_timsVmin

double pappso::TimsFrameBase::m_timsVmin = 0
protected

◆ msp_mzCalibration

MzCalibrationInterfaceSPtr pappso::TimsFrameBase::msp_mzCalibration = nullptr
protected

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