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.

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

◆ TimsFrameBase() [2/2]

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

Copy constructor

Parameters
otherTODO

Definition at line 47 of file timsframebase.cpp.

48{
49}

References TimsFrameBase().

◆ ~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 {
107 throw pappso::ExceptionOutOfRange(
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 downgradeResolutionOfTofIndexIntensityPairList(), pappso::TimsFrameBase::TofIndexIntensityPair::intensity_index, and pappso::TimsFrameBase::TofIndexIntensityPair::tof_index.

Referenced by downgradeResolutionOfTofIndexIntensityPairList(), and 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.

Referenced by pappso::TimsFramesMsRunReader::readSpectrumCollection2(), and pappso::TimsMsRunReader::readSpectrumCollection2().

◆ getId()

◆ 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
@ sum
sum of intensities
Definition types.h:279

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

◆ 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.

Referenced by pappso::TimsFramesMsRunReader::readSpectrumCollection2(), and pappso::TimsMsRunReader::readSpectrumCollection2().

◆ getRtInSeconds()

◆ 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.

Referenced by pappso::TimsFramesMsRunReader::readSpectrumCollection2(), and pappso::TimsMsRunReader::readSpectrumCollection2().

◆ 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(), pappso::TimsFramesMsRunReader::computeTicChromatogram(), pappso::TimsFramesMsRunReader::readSpectrumCollection2(), and pappso::TimsMsRunReader::readSpectrumCollection2().

◆ 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
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 {
316 throw pappso::PappsoException(
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 {
326 throw pappso::PappsoException(
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 TimsFrameBase(), 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 {
294 throw pappso::PappsoException(
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: