pappsomspp
Library for mass spectrometry
pappso::TimsData Class Reference

#include <timsdata.h>

Public Member Functions

 TimsData (QDir timsDataDirectory)
 build using the tims data directory More...
 
 TimsData (const TimsData &other)
 
 ~TimsData ()
 
pappso::MassSpectrumCstSPtr getMassSpectrumCstSPtrByRawIndex (std::size_t raw_index)
 get a mass spectrum given its spectrum index More...
 
pappso::MassSpectrumCstSPtr getMassSpectrumCstSPtr (std::size_t timsId, std::size_t scanNum)
 get a mass spectrum given the tims frame database id and scan number within tims frame More...
 
std::size_t getTotalNumberOfScans () const
 get the total number of scans More...
 
std::size_t getTotalNumberOfPrecursors () const
 get the number of precursors analyzes by PASEF More...
 
unsigned int getMsLevelBySpectrumIndex (std::size_t spectrum_index)
 
QualifiedMassSpectrum getQualifiedMassSpectrumByRawIndex (std::size_t spectrum_index, bool want_binary_data)
 
void getQualifiedMs2MassSpectrumByPrecursorId (QualifiedMassSpectrum &mass_spectrum, std::size_t ms2_index, std::size_t precursor_index, bool want_binary_data)
 
QualifiedMassSpectrum getQualifiedMs1MassSpectrumByPrecursorId (std::size_t ms2_index, std::size_t precursor_index, bool want_binary_data)
 
void setMs2FilterCstSPtr (pappso::FilterInterfaceCstSPtr &filter)
 
void setMs1FilterCstSPtr (pappso::FilterInterfaceCstSPtr &filter)
 
std::vector< std::size_t > getTimsMS1FrameIdRange (double rt_begin, double rt_end) const
 
TimsFrameCstSPtr getTimsFrameCstSPtr (std::size_t timsId) const
 get a Tims frame with his database ID More...
 

Private Member Functions

std::pair< std::size_t, std::size_t > getScanCoordinateFromRawIndex (std::size_t spectrum_index) const
 
std::size_t getRawIndexFromCoordinate (std::size_t frame_id, std::size_t scan_num) const
 
QSqlDatabase openDatabaseConnection () const
 
TimsFrameBaseCstSPtr getTimsFrameBaseCstSPtr (std::size_t timsId) const
 get a Tims frame base (no binary data file access) with his database ID More...
 
TimsFrameCstSPtr getTimsFrameCstSPtrCached (std::size_t timsId)
 get a Tims frame with his database ID but look in the cache first More...
 
TimsFrameBaseCstSPtr getTimsFrameBaseCstSPtrCached (std::size_t timsId)
 

Private Attributes

QDir m_timsDataDirectory
 
TimsBinDecmpa_timsBinDec = nullptr
 
std::size_t m_totalNumberOfScans
 
std::size_t m_totalNumberOfPrecursors
 
std::size_t m_cacheSize = 60
 
std::deque< TimsFrameCstSPtrm_timsFrameCache
 
std::deque< TimsFrameBaseCstSPtrm_timsFrameBaseCache
 
pappso::FilterInterfaceCstSPtr mcsp_ms2Filter = nullptr
 
pappso::FilterInterfaceCstSPtr mcsp_ms1Filter = nullptr
 
QMutex m_mutex
 

Detailed Description

Todo:
write docs

Definition at line 62 of file timsdata.h.

Constructor & Destructor Documentation

◆ TimsData() [1/2]

TimsData::TimsData ( QDir  timsDataDirectory)

build using the tims data directory

Definition at line 43 of file timsdata.cpp.

45  : m_timsDataDirectory(timsDataDirectory)
46 {
47 
48  qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
49  if(!m_timsDataDirectory.exists())
50  {
51  throw PappsoException(
52  QObject::tr("ERROR TIMS data directory %1 not found")
53  .arg(m_timsDataDirectory.absolutePath()));
54  }
55 
56  if(!QFileInfo(m_timsDataDirectory.absoluteFilePath("analysis.tdf")).exists())
57  {
58 
59  throw PappsoException(
60  QObject::tr("ERROR TIMS data directory, %1 sqlite file not found")
61  .arg(m_timsDataDirectory.absoluteFilePath("analysis.tdf")));
62  }
63 
64  // Open the database
65  QSqlDatabase qdb = openDatabaseConnection();
66 
67 
68  QSqlQuery q(qdb);
69  if(!q.exec("select Key, Value from GlobalMetadata where "
70  "Key='TimsCompressionType';"))
71  {
72 
73  qDebug();
74  throw PappsoException(
75  QObject::tr("ERROR in TIMS sqlite database file %1, executing SQL "
76  "command %2:\n%3\n%4\n%5")
77  .arg(m_timsDataDirectory.absoluteFilePath("analysis.tdf"))
78  .arg(q.lastQuery())
79  .arg(q.lastError().databaseText())
80  .arg(q.lastError().driverText())
81  .arg(q.lastError().nativeErrorCode()));
82  }
83 
84 
85  int compression_type = 0;
86  if(q.next())
87  {
88  compression_type = q.value(1).toInt();
89  }
90  qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__
91  << " compression_type=" << compression_type;
93  QFileInfo(m_timsDataDirectory.absoluteFilePath("analysis.tdf_bin")),
94  compression_type);
95 
96 
97  // get number of precursors
98  if(!q.exec("SELECT COUNT( DISTINCT Id) FROM Precursors;"))
99  {
100  qDebug();
101  throw PappsoException(
102  QObject::tr("ERROR in TIMS sqlite database file %1, executing SQL "
103  "command %2:\n%3\n%4\n%5")
104  .arg(m_timsDataDirectory.absoluteFilePath("analysis.tdf"))
105  .arg(q.lastQuery())
106  .arg(qdb.lastError().databaseText())
107  .arg(qdb.lastError().driverText())
108  .arg(qdb.lastError().nativeErrorCode()));
109  }
110  if(q.next())
111  {
112  m_totalNumberOfPrecursors = q.value(0).toLongLong();
113  }
114 
115 
116  // get number of scans
117  if(!q.exec("SELECT SUM(NumScans) FROM Frames"))
118  {
119  qDebug();
120  throw PappsoException(
121  QObject::tr("ERROR in TIMS sqlite database file %1, executing SQL "
122  "command %2:\n%3\n%4\n%5")
123  .arg(m_timsDataDirectory.absoluteFilePath("analysis.tdf"))
124  .arg(q.lastQuery())
125  .arg(qdb.lastError().databaseText())
126  .arg(qdb.lastError().driverText())
127  .arg(qdb.lastError().nativeErrorCode()));
128  }
129  if(q.next())
130  {
131  m_totalNumberOfScans = q.value(0).toLongLong();
132  }
133 
134  /*
135  std::shared_ptr<FilterTriangle> ms2filter =
136  std::make_shared<FilterTriangle>();
137  ms2filter.get()->setTriangleSlope(50, 0.02);
138  mcsp_ms2Filter = ms2filter;
139 */
140 
141 
142  std::shared_ptr<pappso::FilterPseudoCentroid> ms2filter =
143  std::make_shared<pappso::FilterPseudoCentroid>(20000, 0.05, 0.5, 0.1);
144  mcsp_ms2Filter = ms2filter;
145 
146 
147 
148  std::shared_ptr<FilterTriangle> ms1filter =
149  std::make_shared<FilterTriangle>();
150  ms1filter.get()->setTriangleSlope(50, 0.01);
151  mcsp_ms1Filter = ms1filter;

References m_timsDataDirectory, m_totalNumberOfPrecursors, m_totalNumberOfScans, mcsp_ms1Filter, mcsp_ms2Filter, mpa_timsBinDec, openDatabaseConnection(), and pappso::FilterTriangle::setTriangleSlope().

◆ TimsData() [2/2]

TimsData::TimsData ( const TimsData other)

Copy constructor

Parameters
otherTODO

Definition at line 184 of file timsdata.cpp.

186 {
187  qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;

◆ ~TimsData()

TimsData::~TimsData ( )

Destructor

Definition at line 189 of file timsdata.cpp.

191 {
192  // m_qdb.close();
193  if(mpa_timsBinDec != nullptr)
194  {
195  delete mpa_timsBinDec;
196  }

References mpa_timsBinDec.

Member Function Documentation

◆ getMassSpectrumCstSPtr()

pappso::MassSpectrumCstSPtr TimsData::getMassSpectrumCstSPtr ( std::size_t  timsId,
std::size_t  scanNum 
)

get a mass spectrum given the tims frame database id and scan number within tims frame

Definition at line 515 of file timsdata.cpp.

517 {
519 
520  return frame->getMassSpectrumCstSPtr(scanNum);

References getTimsFrameCstSPtrCached().

Referenced by getMassSpectrumCstSPtrByRawIndex().

◆ getMassSpectrumCstSPtrByRawIndex()

pappso::MassSpectrumCstSPtr TimsData::getMassSpectrumCstSPtrByRawIndex ( std::size_t  raw_index)

get a mass spectrum given its spectrum index

Parameters
raw_indexa number begining at 0, corresponding to a Tims Scan in the order they lies in the binary data file

Definition at line 293 of file timsdata.cpp.

295 {
296 
297  auto coordinate = getScanCoordinateFromRawIndex(raw_index);
298  return getMassSpectrumCstSPtr(coordinate.first, coordinate.second);

References getMassSpectrumCstSPtr(), and getScanCoordinateFromRawIndex().

Referenced by pappso::TimsMsRunReader::massSpectrumCstSPtr().

◆ getMsLevelBySpectrumIndex()

unsigned int TimsData::getMsLevelBySpectrumIndex ( std::size_t  spectrum_index)

Definition at line 536 of file timsdata.cpp.

538 {
539  auto coordinate = getScanCoordinateFromRawIndex(spectrum_index);
540  auto tims_frame = getTimsFrameCstSPtrCached(coordinate.first);
541  return tims_frame.get()->getMsLevel();

References getScanCoordinateFromRawIndex(), and getTimsFrameCstSPtrCached().

Referenced by pappso::TimsMsRunReader::readSpectrumCollection().

◆ getQualifiedMassSpectrumByRawIndex()

QualifiedMassSpectrum TimsData::getQualifiedMassSpectrumByRawIndex ( std::size_t  spectrum_index,
bool  want_binary_data 
)

Definition at line 545 of file timsdata.cpp.

548 {
549  auto coordinate = getScanCoordinateFromRawIndex(spectrum_index);
550  TimsFrameBaseCstSPtr tims_frame;
551  if(want_binary_data)
552  {
553  tims_frame = getTimsFrameCstSPtrCached(coordinate.first);
554  }
555  else
556  {
557  tims_frame = getTimsFrameBaseCstSPtrCached(coordinate.first);
558  }
559  QualifiedMassSpectrum mass_spectrum;
560  MassSpectrumId spectrum_id;
561 
562  spectrum_id.setSpectrumIndex(spectrum_index);
563  spectrum_id.setNativeId(QString("frame=%1 scan=%2 index=%3")
564  .arg(coordinate.first)
565  .arg(coordinate.second)
566  .arg(spectrum_index));
567 
568  mass_spectrum.setMassSpectrumId(spectrum_id);
569 
570  mass_spectrum.setMsLevel(tims_frame.get()->getMsLevel());
571  mass_spectrum.setRtInSeconds(tims_frame.get()->getTime());
572 
573  mass_spectrum.setPrecursorCharge(0);
574  mass_spectrum.setPrecursorMz(0);
575  mass_spectrum.setPrecursorIntensity(0);
576 
577  mass_spectrum.setDtInMilliSeconds(
578  tims_frame.get()->getDriftTime(coordinate.second));
579  // 1/K0
580  mass_spectrum.setParameterValue(
582  tims_frame.get()->getOneOverK0Transformation(coordinate.second));
583 
584  mass_spectrum.setEmptyMassSpectrum(true);
585  if(want_binary_data)
586  {
587  mass_spectrum.setMassSpectrumSPtr(
588  tims_frame.get()->getMassSpectrumSPtr(coordinate.second));
589  if(mass_spectrum.size() > 0)
590  {
591  mass_spectrum.setEmptyMassSpectrum(false);
592  }
593  }
594  else
595  {
596  // if(tims_frame.get()->getNbrPeaks(coordinate.second) > 0)
597  //{
598  mass_spectrum.setEmptyMassSpectrum(false);
599  // }
600  }
601  if(tims_frame.get()->getMsLevel() > 1)
602  {
603 
604  QSqlDatabase qdb = openDatabaseConnection();
605  QSqlQuery q = qdb.exec(
606  QString(
607  "SELECT PasefFrameMsMsInfo.*, Precursors.* FROM "
608  "PasefFrameMsMsInfo INNER JOIN Precursors ON "
609  "PasefFrameMsMsInfo.Precursor=Precursors.Id where "
610  "PasefFrameMsMsInfo.Frame=%1 and (PasefFrameMsMsInfo.ScanNumBegin "
611  "<= %2 and PasefFrameMsMsInfo.ScanNumEnd >= %2);")
612  .arg(coordinate.first)
613  .arg(coordinate.second));
614  if(q.lastError().isValid())
615  {
616  throw PappsoException(
617  QObject::tr("ERROR in TIMS sqlite database file %1, executing SQL "
618  "command %2:\n%3\n%4\n%5")
619  .arg(m_timsDataDirectory.absoluteFilePath("analysis.tdf"))
620  .arg(q.lastQuery())
621  .arg(qdb.lastError().databaseText())
622  .arg(qdb.lastError().driverText())
623  .arg(qdb.lastError().nativeErrorCode()));
624  }
625  if(q.next())
626  {
627  mass_spectrum.setPrecursorCharge(q.value(11).toInt());
628  mass_spectrum.setPrecursorMz(q.value(10).toDouble());
629  mass_spectrum.setPrecursorIntensity(q.value(13).toDouble());
630  // mass_spectrum.setPrecursorSpectrumIndex();
631 
632 
633  MassSpectrumId spectrum_id;
634  std::size_t prec_spectrum_index = getRawIndexFromCoordinate(
635  q.value(14).toDouble(), coordinate.second);
636 
637  mass_spectrum.setPrecursorSpectrumIndex(prec_spectrum_index);
638  mass_spectrum.setPrecursorNativeId(
639  QString("frame=%1 scan=%2 index=%3")
640  .arg(q.value(14).toDouble())
641  .arg(coordinate.second)
642  .arg(prec_spectrum_index));
643 
644  mass_spectrum.setParameterValue(
645  QualifiedMassSpectrumParameter::IsolationMz, q.value(3).toDouble());
646  mass_spectrum.setParameterValue(
648  q.value(4).toDouble());
649 
650  mass_spectrum.setParameterValue(
652  q.value(5).toFloat());
653  mass_spectrum.setParameterValue(
655  q.value(6).toInt());
656  }
657  }
658 
659  return mass_spectrum;

References pappso::BrukerPrecursorIndex, pappso::CollisionEnergy, getRawIndexFromCoordinate(), getScanCoordinateFromRawIndex(), getTimsFrameBaseCstSPtrCached(), getTimsFrameCstSPtrCached(), pappso::IsolationMz, pappso::IsolationWidth, m_timsDataDirectory, pappso::OneOverK0, openDatabaseConnection(), pappso::QualifiedMassSpectrum::setDtInMilliSeconds(), pappso::QualifiedMassSpectrum::setEmptyMassSpectrum(), pappso::QualifiedMassSpectrum::setMassSpectrumId(), pappso::QualifiedMassSpectrum::setMassSpectrumSPtr(), pappso::QualifiedMassSpectrum::setMsLevel(), pappso::MassSpectrumId::setNativeId(), pappso::QualifiedMassSpectrum::setParameterValue(), pappso::QualifiedMassSpectrum::setPrecursorCharge(), pappso::QualifiedMassSpectrum::setPrecursorIntensity(), pappso::QualifiedMassSpectrum::setPrecursorMz(), pappso::QualifiedMassSpectrum::setPrecursorNativeId(), pappso::QualifiedMassSpectrum::setPrecursorSpectrumIndex(), pappso::QualifiedMassSpectrum::setRtInSeconds(), pappso::MassSpectrumId::setSpectrumIndex(), and pappso::QualifiedMassSpectrum::size().

Referenced by pappso::TimsMsRunReader::qualifiedMassSpectrum().

◆ getQualifiedMs1MassSpectrumByPrecursorId()

QualifiedMassSpectrum TimsData::getQualifiedMs1MassSpectrumByPrecursorId ( std::size_t  ms2_index,
std::size_t  precursor_index,
bool  want_binary_data 
)

Definition at line 663 of file timsdata.cpp.

667 {
668  QualifiedMassSpectrum mass_spectrum;
669 
670  try
671  {
672  QSqlDatabase qdb = openDatabaseConnection();
673  mass_spectrum.setMsLevel(1);
674  mass_spectrum.setPrecursorCharge(0);
675  mass_spectrum.setPrecursorMz(0);
676  mass_spectrum.setPrecursorIntensity(0);
677  mass_spectrum.setPrecursorSpectrumIndex(0);
678  mass_spectrum.setEmptyMassSpectrum(true);
679  QSqlQuery q =
680  qdb.exec(QString("SELECT PasefFrameMsMsInfo.*, Precursors.* FROM "
681  "PasefFrameMsMsInfo INNER JOIN Precursors ON "
682  "PasefFrameMsMsInfo.Precursor=Precursors.Id where "
683  "Precursors.Id=%1;")
684  .arg(precursor_index));
685  if(q.lastError().isValid())
686  {
687 
688  throw PappsoException(
689  QObject::tr("ERROR in TIMS sqlite database file %1, executing SQL "
690  "command %2:\n%3\n%4\n%5")
691  .arg(m_timsDataDirectory.absoluteFilePath("analysis.tdf"))
692  .arg(q.lastQuery())
693  .arg(qdb.lastError().databaseText())
694  .arg(qdb.lastError().driverText())
695  .arg(qdb.lastError().nativeErrorCode()));
696  }
697  if(q.size() == 0)
698  {
699 
700  throw ExceptionNotFound(
701  QObject::tr(
702  "ERROR in getQualifiedMassSpectrumByPrecursorId, precursor "
703  "id=%1 not found")
704  .arg(precursor_index));
705  }
706  else
707  {
708  TracePlusCombiner combiner;
709  MapTrace combiner_result;
710 
711 
712  bool first = true;
713  std::size_t scan_mobility_start = 0;
714  std::size_t scan_mobility_end = 0;
715  std::set<std::size_t> tims_frame_list;
716  while(q.next())
717  {
718  // get MS1 frame
719  tims_frame_list.insert(q.value(14).toLongLong());
720  if(first)
721  {
722 
723 
724  MassSpectrumId spectrum_id;
725 
726  spectrum_id.setSpectrumIndex(precursor_index);
727  spectrum_id.setNativeId(
728  QString("frame=%1 begin=%2 end=%3 precursor=%4 idxms2=%5")
729  .arg(q.value(0).toLongLong())
730  .arg(q.value(1).toLongLong())
731  .arg(q.value(2).toLongLong())
732  .arg(precursor_index)
733  .arg(ms2_index));
734 
735 
736  mass_spectrum.setMassSpectrumId(spectrum_id);
737 
738 
739  scan_mobility_start = q.value(1).toLongLong();
740  scan_mobility_end = q.value(2).toLongLong();
741 
742  first = false;
743  }
744  }
745 
746  first = true;
747  for(std::size_t tims_id : tims_frame_list)
748  {
749  TimsFrameBaseCstSPtr tims_frame =
750  getTimsFrameCstSPtrCached(tims_id);
751  if(first)
752  {
753  mass_spectrum.setRtInSeconds(tims_frame.get()->getTime());
754 
755  mass_spectrum.setParameterValue(
757  tims_frame.get()->getOneOverK0Transformation(
758  scan_mobility_start));
759 
760  mass_spectrum.setParameterValue(
762  tims_frame.get()->getOneOverK0Transformation(
763  scan_mobility_end));
764 
765  first = false;
766  }
767 
768 
769  if(want_binary_data)
770  {
771  combiner.combine(combiner_result,
772  tims_frame.get()->cumulateScanToTrace(
773  scan_mobility_start, scan_mobility_end));
774  }
775  else
776  {
777  break;
778  }
779  }
780 
781 
782  if(first == true)
783  {
784  throw ExceptionNotFound(
785  QObject::tr(
786  "ERROR in getQualifiedMassSpectrumByPrecursorId, precursor "
787  "id=%1 not found")
788  .arg(precursor_index));
789  }
790 
791 
792  if(want_binary_data)
793  {
794 
795  pappso::Trace trace(combiner_result);
796  qDebug();
797 
798  if(trace.size() > 0)
799  {
800  if(mcsp_ms1Filter != nullptr)
801  {
802  mcsp_ms1Filter->filter(trace);
803  }
804 
805  qDebug();
806  mass_spectrum.setMassSpectrumSPtr(
807  MassSpectrum(trace).makeMassSpectrumSPtr());
808  mass_spectrum.setEmptyMassSpectrum(false);
809  }
810  else
811  {
812  mass_spectrum.setMassSpectrumSPtr(nullptr);
813  mass_spectrum.setEmptyMassSpectrum(true);
814  }
815  }
816  }
817  }
818  catch(std::exception &error)
819  {
820  qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "()"
821  << QString("Failure %1 ").arg(error.what());
822  }
823  return mass_spectrum;

References pappso::TracePlusCombiner::combine(), getTimsFrameCstSPtrCached(), m_timsDataDirectory, mcsp_ms1Filter, pappso::OneOverK0begin, pappso::OneOverK0end, openDatabaseConnection(), pappso::QualifiedMassSpectrum::setEmptyMassSpectrum(), pappso::QualifiedMassSpectrum::setMassSpectrumId(), pappso::QualifiedMassSpectrum::setMassSpectrumSPtr(), pappso::QualifiedMassSpectrum::setMsLevel(), pappso::MassSpectrumId::setNativeId(), pappso::QualifiedMassSpectrum::setParameterValue(), pappso::QualifiedMassSpectrum::setPrecursorCharge(), pappso::QualifiedMassSpectrum::setPrecursorIntensity(), pappso::QualifiedMassSpectrum::setPrecursorMz(), pappso::QualifiedMassSpectrum::setPrecursorSpectrumIndex(), pappso::QualifiedMassSpectrum::setRtInSeconds(), and pappso::MassSpectrumId::setSpectrumIndex().

Referenced by pappso::TimsMsRunReaderMs2::qualifiedMassSpectrum().

◆ getQualifiedMs2MassSpectrumByPrecursorId()

void TimsData::getQualifiedMs2MassSpectrumByPrecursorId ( QualifiedMassSpectrum mass_spectrum,
std::size_t  ms2_index,
std::size_t  precursor_index,
bool  want_binary_data 
)

Definition at line 827 of file timsdata.cpp.

833 {
834  qDebug();
835  try
836  {
837  QSqlDatabase qdb = openDatabaseConnection();
838  MassSpectrumId spectrum_id;
839 
840  spectrum_id.setSpectrumIndex(precursor_index);
841  spectrum_id.setNativeId(
842  QString("precursor=%1 idxms2=%2").arg(precursor_index).arg(ms2_index));
843 
844  mass_spectrum.setMassSpectrumId(spectrum_id);
845 
846  mass_spectrum.setMsLevel(2);
847  mass_spectrum.setPrecursorCharge(0);
848  mass_spectrum.setPrecursorMz(0);
849  mass_spectrum.setPrecursorIntensity(0);
850  mass_spectrum.setPrecursorSpectrumIndex(ms2_index - 1);
851 
852  mass_spectrum.setEmptyMassSpectrum(true);
853 
854  qdb = openDatabaseConnection();
855  // m_mutex.lock();
856 // if(m_query != nullptr)
857 // {
858 // *m_query =
859 // qdb.exec(QString("SELECT PasefFrameMsMsInfo.*, Precursors.* FROM "
860 // "PasefFrameMsMsInfo INNER JOIN Precursors ON "
861 // "PasefFrameMsMsInfo.Precursor=Precursors.Id where "
862 // "Precursors.Id=%1;")
863 // .arg(precursor_index));
864 // }
865  QSqlQuery q =
866  qdb.exec(QString("SELECT PasefFrameMsMsInfo.*, Precursors.* FROM "
867  "PasefFrameMsMsInfo INNER JOIN Precursors ON "
868  "PasefFrameMsMsInfo.Precursor=Precursors.Id where "
869  "Precursors.Id=%1;")
870  .arg(precursor_index));
871  if(q.lastError().isValid())
872  {
873  qDebug();
874  throw PappsoException(
875  QObject::tr("ERROR in TIMS sqlite database file %1, executing SQL "
876  "command %2:\n%3\n%4\n%5")
877  .arg(m_timsDataDirectory.absoluteFilePath("analysis.tdf"))
878  .arg(q.lastQuery())
879  .arg(qdb.lastError().databaseText())
880  .arg(qdb.lastError().driverText())
881  .arg(qdb.lastError().nativeErrorCode()));
882  }
883  qDebug();
884  // m_mutex.unlock();
885  if(q.size() == 0)
886  {
887 
888  throw ExceptionNotFound(
889  QObject::tr(
890  "ERROR in getQualifiedMassSpectrumByPrecursorId, precursor "
891  "id=%1 not found")
892  .arg(precursor_index));
893  }
894  else
895  {
896  // qDebug() << " q.size()="<< q.size();
897  qDebug();
898  bool first = true;
899  std::size_t scan_mobility_start = 0;
900  std::size_t scan_mobility_end = 0;
901  std::vector<std::size_t> tims_frame_list;
902 
903  while(q.next())
904  {
905  tims_frame_list.push_back(q.value(0).toLongLong());
906  if(first)
907  {
908  mass_spectrum.setPrecursorCharge(q.value(11).toInt());
909  mass_spectrum.setPrecursorMz(q.value(10).toDouble());
910  mass_spectrum.setPrecursorIntensity(q.value(13).toDouble());
911 
912  mass_spectrum.setPrecursorNativeId(
913  QString("frame=%1 begin=%2 end=%3 precursor=%4 idxms2=%5")
914  .arg(q.value(14).toLongLong())
915  .arg(q.value(1).toLongLong())
916  .arg(q.value(2).toLongLong())
917  .arg(precursor_index)
918  .arg(ms2_index - 1));
919  // mass_spectrum.setPrecursorSpectrumIndex();
920 
921  scan_mobility_start = q.value(1).toLongLong();
922  scan_mobility_end = q.value(2).toLongLong();
923 
924  mass_spectrum.setParameterValue(
926  q.value(3).toDouble());
927  mass_spectrum.setParameterValue(
929  q.value(4).toDouble());
930 
931  mass_spectrum.setParameterValue(
933  q.value(5).toFloat());
934  mass_spectrum.setParameterValue(
936  q.value(6).toInt());
937 
938  first = false;
939  }
940  }
941  // QMutexLocker locker(&m_mutex_spectrum);
942  qDebug();
943  pappso::TimsFrameCstSPtr tims_frame;
944  TracePlusCombiner combiner;
945  MapTrace combiner_result;
946  first = true;
947  for(std::size_t tims_id : tims_frame_list)
948  {
949 
950  tims_frame = getTimsFrameCstSPtrCached(tims_id);
951  if(first)
952  {
953  mass_spectrum.setRtInSeconds(tims_frame.get()->getTime());
954 
955  mass_spectrum.setParameterValue(
957  tims_frame.get()->getOneOverK0Transformation(
958  scan_mobility_start));
959 
960  mass_spectrum.setParameterValue(
962  tims_frame.get()->getOneOverK0Transformation(
963  scan_mobility_end));
964 
965  first = false;
966  }
967 
968 
969  if(want_binary_data)
970  {
971  qDebug();
972  combiner.combine(combiner_result,
973  tims_frame.get()->cumulateScanToTrace(
974  scan_mobility_start, scan_mobility_end));
975  qDebug();
976  }
977  }
978  qDebug() << " precursor_index=" << precursor_index
979  << " num_rows=" << tims_frame_list.size()
980  << " sql=" << q.lastQuery() << " "
981  << (std::size_t)QThread::currentThreadId();
982  if(first == true)
983  {
984  throw ExceptionNotFound(
985  QObject::tr(
986  "ERROR in getQualifiedMassSpectrumByPrecursorId, precursor "
987  "id=%1 not found")
988  .arg(precursor_index));
989  }
990  if(want_binary_data)
991  {
992  qDebug();
993  // peak_pick.filter(trace);
994 
995  pappso::Trace trace(combiner_result);
996  qDebug() << "AAAAAAA";
997 
998  if(trace.size() > 0)
999  {
1000  qDebug() << trace.size() << " "
1001  << (std::size_t)QThread::currentThreadId();
1002 
1003  if(mcsp_ms2Filter != nullptr)
1004  {
1005  // FilterTriangle filter;
1006  // filter.setTriangleSlope(50, 0.02);
1007  // filter.filter(trace);
1008  //trace.filter(pappso::FilterHighPass(10));
1009  mcsp_ms2Filter->filter(trace);
1010  }
1011 
1012  // FilterScaleFactorY filter_scale((double)1 /
1013  // (double)tims_frame_list.size());
1014  // filter_scale.filter(trace);
1015  qDebug();
1016  mass_spectrum.setMassSpectrumSPtr(
1017  MassSpectrum(trace).makeMassSpectrumSPtr());
1018  mass_spectrum.setEmptyMassSpectrum(false);
1019  }
1020  else
1021  {
1022  mass_spectrum.setMassSpectrumSPtr(nullptr);
1023  mass_spectrum.setEmptyMassSpectrum(true);
1024  }
1025 
1026  qDebug();
1027  }
1028  qDebug();
1029  }
1030  }
1031  catch(std::exception &error)
1032  {
1033  qDebug() << __FILE__ << "@" << __LINE__ << __FUNCTION__ << "()"
1034  << QString("Failure %1 ").arg(error.what());
1035  }
1036  qDebug();

References pappso::BrukerPrecursorIndex, pappso::CollisionEnergy, pappso::TracePlusCombiner::combine(), getTimsFrameCstSPtrCached(), pappso::IsolationMz, pappso::IsolationWidth, m_timsDataDirectory, mcsp_ms2Filter, pappso::OneOverK0begin, pappso::OneOverK0end, openDatabaseConnection(), pappso::QualifiedMassSpectrum::setEmptyMassSpectrum(), pappso::QualifiedMassSpectrum::setMassSpectrumId(), pappso::QualifiedMassSpectrum::setMassSpectrumSPtr(), pappso::QualifiedMassSpectrum::setMsLevel(), pappso::MassSpectrumId::setNativeId(), pappso::QualifiedMassSpectrum::setParameterValue(), pappso::QualifiedMassSpectrum::setPrecursorCharge(), pappso::QualifiedMassSpectrum::setPrecursorIntensity(), pappso::QualifiedMassSpectrum::setPrecursorMz(), pappso::QualifiedMassSpectrum::setPrecursorNativeId(), pappso::QualifiedMassSpectrum::setPrecursorSpectrumIndex(), pappso::QualifiedMassSpectrum::setRtInSeconds(), and pappso::MassSpectrumId::setSpectrumIndex().

Referenced by pappso::TimsMsRunReaderMs2::qualifiedMassSpectrum().

◆ getRawIndexFromCoordinate()

std::size_t TimsData::getRawIndexFromCoordinate ( std::size_t  frame_id,
std::size_t  scan_num 
) const
private

Definition at line 244 of file timsdata.cpp.

247 {
248 
249 
250  QSqlDatabase qdb = openDatabaseConnection();
251  QSqlQuery q =
252  qdb.exec(QString("SELECT Id, NumScans FROM "
253  "Frames ORDER BY Id"));
254  if(q.lastError().isValid())
255  {
256 
257  throw PappsoException(
258  QObject::tr("ERROR in TIMS sqlite database file %1, executing SQL "
259  "command %2:\n%3\n%4\n%5")
260  .arg(m_timsDataDirectory.absoluteFilePath("analysis.tdf"))
261  .arg(q.lastQuery())
262  .arg(qdb.lastError().databaseText())
263  .arg(qdb.lastError().driverText())
264  .arg(qdb.lastError().nativeErrorCode()));
265  }
266  bool index_found = false;
267  std::size_t timsId;
268  std::size_t numberScans;
269  std::size_t offset = 0;
270  while(q.next() && (!index_found))
271  {
272  timsId = q.value(0).toUInt();
273  numberScans = q.value(1).toUInt();
274 
275  if(timsId == frame_id)
276  {
277  return offset + scan_num;
278  }
279 
280  offset += numberScans;
281  }
282 
283  throw ExceptionNotFound(
284  QObject::tr("ERROR raw index with frame=%1 scan=%2 not found")
285  .arg(frame_id)
286  .arg(scan_num));

References m_timsDataDirectory, and openDatabaseConnection().

Referenced by getQualifiedMassSpectrumByRawIndex().

◆ getScanCoordinateFromRawIndex()

std::pair< std::size_t, std::size_t > TimsData::getScanCoordinateFromRawIndex ( std::size_t  spectrum_index) const
private

Definition at line 199 of file timsdata.cpp.

201 {
202 
203  QSqlDatabase qdb = openDatabaseConnection();
204 
205  QSqlQuery q =
206  qdb.exec(QString("SELECT Id, NumScans FROM "
207  "Frames ORDER BY Id"));
208  if(q.lastError().isValid())
209  {
210 
211  throw PappsoException(
212  QObject::tr("ERROR in TIMS sqlite database file %1, executing SQL "
213  "command %2:\n%3\n%4\n%5")
214  .arg(m_timsDataDirectory.absoluteFilePath("analysis.tdf"))
215  .arg(q.lastQuery())
216  .arg(qdb.lastError().databaseText())
217  .arg(qdb.lastError().driverText())
218  .arg(qdb.lastError().nativeErrorCode()));
219  }
220  pappso::TimsFrameSPtr tims_frame;
221  bool index_found = false;
222  std::size_t timsId;
223  std::size_t numberScans;
224  std::size_t offset = 0;
225  while(q.next() && (!index_found))
226  {
227  timsId = q.value(0).toUInt();
228  numberScans = q.value(1).toUInt();
229 
230  if(raw_index < (offset + numberScans))
231  {
232  return std::pair<std::size_t, std::size_t>(timsId,
233  raw_index - offset);
234  }
235 
236  offset += numberScans;
237  }
238 
239  throw ExceptionNotFound(
240  QObject::tr("ERROR raw index %1 not found").arg(raw_index));

References m_timsDataDirectory, and openDatabaseConnection().

Referenced by getMassSpectrumCstSPtrByRawIndex(), getMsLevelBySpectrumIndex(), and getQualifiedMassSpectrumByRawIndex().

◆ getTimsFrameBaseCstSPtr()

TimsFrameBaseCstSPtr TimsData::getTimsFrameBaseCstSPtr ( std::size_t  timsId) const
private

get a Tims frame base (no binary data file access) with his database ID

Definition at line 302 of file timsdata.cpp.

304 {
305 
306  qDebug() << " timsId=" << timsId;
307 
308  QSqlDatabase qdb = openDatabaseConnection();
309  QSqlQuery q = qdb.exec(
310  QString("SELECT Frames.TimsId, Frames.AccumulationTime, "
311  " MzCalibration.DigitizerTimebase, MzCalibration.DigitizerDelay, "
312  "MzCalibration.C0, MzCalibration.C1, MzCalibration.C2, "
313  "MzCalibration.C3, MzCalibration.T1, MzCalibration.T2, "
314  "MzCalibration.dC1, MzCalibration.dC2, Frames.T1, Frames.T2, "
315  "Frames.Time, Frames.MsMsType, TimsCalibration.ModelType, "
316  "TimsCalibration.C0, TimsCalibration.C1, TimsCalibration.C2, "
317  "TimsCalibration.C3, TimsCalibration.C4, TimsCalibration.C5, "
318  "TimsCalibration.C6, TimsCalibration.C7, TimsCalibration.C8, "
319  "TimsCalibration.C9 FROM "
320  "Frames INNER JOIN MzCalibration ON "
321  "Frames.MzCalibration=MzCalibration.Id INNER JOIN TimsCalibration "
322  "ON Frames.TimsCalibration=TimsCalibration.Id where "
323  "Frames.Id=%1;")
324  .arg(timsId));
325  if(q.lastError().isValid())
326  {
327 
328  throw PappsoException(
329  QObject::tr("ERROR in TIMS sqlite database file %1, database name %2, "
330  "executing SQL "
331  "command %3:\n%4\n%5\n%6")
332  .arg(m_timsDataDirectory.absoluteFilePath("analysis.tdf"))
333  .arg(qdb.databaseName())
334  .arg(q.lastQuery())
335  .arg(qdb.lastError().databaseText())
336  .arg(qdb.lastError().driverText())
337  .arg(qdb.lastError().nativeErrorCode()));
338  }
339  pappso::TimsFrameBaseSPtr tims_frame;
340  if(q.next())
341  {
342 
343 
344  double T1_ref = q.value(8).toDouble();
345  double T2_ref = q.value(9).toDouble();
346  double factor1 = q.value(10).toDouble();
347  double factor2 = q.value(11).toDouble();
348 
349  double T1_frame = q.value(12).toDouble();
350  double T2_frame = q.value(13).toDouble();
351 
352 
353  double temperature_correction =
354  factor1 * (T1_ref - T1_frame) + factor2 * (T2_ref - T2_frame);
355  temperature_correction = (double)1.0 + (temperature_correction / 1.0e6);
356 
357  tims_frame = std::make_shared<TimsFrameBase>(
358  TimsFrameBase(timsId, q.value(0).toUInt()));
359 
360  tims_frame.get()->setMzCalibration(temperature_correction,
361  q.value(2).toDouble(),
362  q.value(3).toDouble(),
363  q.value(4).toDouble(),
364  q.value(5).toDouble(),
365  q.value(6).toDouble(),
366  q.value(7).toDouble());
367 
368  tims_frame.get()->setAccumulationTime(q.value(1).toDouble());
369 
370  tims_frame.get()->setTime(q.value(14).toDouble());
371  tims_frame.get()->setMsMsType(q.value(15).toUInt());
372 
373  tims_frame.get()->setTimsCalibration(q.value(16).toInt(),
374  q.value(17).toDouble(),
375  q.value(18).toDouble(),
376  q.value(19).toDouble(),
377  q.value(20).toDouble(),
378  q.value(21).toDouble(),
379  q.value(22).toDouble(),
380  q.value(23).toDouble(),
381  q.value(24).toDouble(),
382  q.value(25).toDouble(),
383  q.value(26).toDouble());
384  return tims_frame;
385  }
386 
387  throw ExceptionNotFound(QObject::tr("ERROR timsId %1 not found").arg(timsId));
388  // return TimsFrameCstSPtr;

References m_timsDataDirectory, and openDatabaseConnection().

Referenced by getTimsFrameBaseCstSPtrCached().

◆ getTimsFrameBaseCstSPtrCached()

TimsFrameBaseCstSPtr TimsData::getTimsFrameBaseCstSPtrCached ( std::size_t  timsId)
private

Definition at line 1040 of file timsdata.cpp.

1042 {
1043  QMutexLocker locker(&m_mutex);
1044  for(auto &tims_frame : m_timsFrameBaseCache)
1045  {
1046  if(tims_frame.get()->getId() == timsId)
1047  {
1048  m_timsFrameBaseCache.push_back(tims_frame);
1049  return tims_frame;
1050  }
1051  }
1052 
1053  m_timsFrameBaseCache.push_back(getTimsFrameBaseCstSPtr(timsId));
1054  if(m_timsFrameBaseCache.size() > m_cacheSize)
1055  m_timsFrameBaseCache.pop_front();
1056  return m_timsFrameBaseCache.back();

References getTimsFrameBaseCstSPtr(), m_cacheSize, m_mutex, and m_timsFrameBaseCache.

Referenced by getQualifiedMassSpectrumByRawIndex().

◆ getTimsFrameCstSPtr()

TimsFrameCstSPtr TimsData::getTimsFrameCstSPtr ( std::size_t  timsId) const

get a Tims frame with his database ID

Definition at line 425 of file timsdata.cpp.

427 {
428 
429  qDebug() << " timsId=" << timsId;
430 
431  QSqlDatabase qdb = openDatabaseConnection();
432  QSqlQuery q = qdb.exec(
433  QString("SELECT Frames.TimsId, Frames.AccumulationTime, "
434  " MzCalibration.DigitizerTimebase, MzCalibration.DigitizerDelay, "
435  "MzCalibration.C0, MzCalibration.C1, MzCalibration.C2, "
436  "MzCalibration.C3, MzCalibration.T1, MzCalibration.T2, "
437  "MzCalibration.dC1, MzCalibration.dC2, Frames.T1, Frames.T2, "
438  "Frames.Time, Frames.MsMsType, TimsCalibration.ModelType, "
439  "TimsCalibration.C0, TimsCalibration.C1, TimsCalibration.C2, "
440  "TimsCalibration.C3, TimsCalibration.C4, TimsCalibration.C5, "
441  "TimsCalibration.C6, TimsCalibration.C7, TimsCalibration.C8, "
442  "TimsCalibration.C9 FROM "
443  "Frames INNER JOIN MzCalibration ON "
444  "Frames.MzCalibration=MzCalibration.Id INNER JOIN TimsCalibration "
445  "ON Frames.TimsCalibration=TimsCalibration.Id where "
446  "Frames.Id=%1;")
447  .arg(timsId));
448  if(q.lastError().isValid())
449  {
450 
451  throw PappsoException(
452  QObject::tr("ERROR in TIMS sqlite database file %1, database name %2, "
453  "executing SQL "
454  "command %3:\n%4\n%5\n%6")
455  .arg(m_timsDataDirectory.absoluteFilePath("analysis.tdf"))
456  .arg(qdb.databaseName())
457  .arg(q.lastQuery())
458  .arg(qdb.lastError().databaseText())
459  .arg(qdb.lastError().driverText())
460  .arg(qdb.lastError().nativeErrorCode()));
461  }
462  pappso::TimsFrameSPtr tims_frame;
463  if(q.next())
464  {
465 
466 
467  double T1_ref = q.value(8).toDouble();
468  double T2_ref = q.value(9).toDouble();
469  double factor1 = q.value(10).toDouble();
470  double factor2 = q.value(11).toDouble();
471 
472  double T1_frame = q.value(12).toDouble();
473  double T2_frame = q.value(13).toDouble();
474 
475 
476  double temperature_correction =
477  factor1 * (T1_ref - T1_frame) + factor2 * (T2_ref - T2_frame);
478  temperature_correction = (double)1.0 + (temperature_correction / 1.0e6);
479 
480  tims_frame =
481  mpa_timsBinDec->getTimsFrameSPtrByOffset(timsId, q.value(0).toUInt());
482 
483  tims_frame.get()->setMzCalibration(temperature_correction,
484  q.value(2).toDouble(),
485  q.value(3).toDouble(),
486  q.value(4).toDouble(),
487  q.value(5).toDouble(),
488  q.value(6).toDouble(),
489  q.value(7).toDouble());
490 
491  tims_frame.get()->setAccumulationTime(q.value(1).toDouble());
492 
493  tims_frame.get()->setTime(q.value(14).toDouble());
494  tims_frame.get()->setMsMsType(q.value(15).toUInt());
495 
496  tims_frame.get()->setTimsCalibration(q.value(16).toInt(),
497  q.value(17).toDouble(),
498  q.value(18).toDouble(),
499  q.value(19).toDouble(),
500  q.value(20).toDouble(),
501  q.value(21).toDouble(),
502  q.value(22).toDouble(),
503  q.value(23).toDouble(),
504  q.value(24).toDouble(),
505  q.value(25).toDouble(),
506  q.value(26).toDouble());
507  return tims_frame;
508  }
509 
510  throw ExceptionNotFound(QObject::tr("ERROR timsId %1 not found").arg(timsId));
511  // return TimsFrameCstSPtr;

References pappso::TimsBinDec::getTimsFrameSPtrByOffset(), m_timsDataDirectory, mpa_timsBinDec, and openDatabaseConnection().

Referenced by pappso::TimsDirectXicExtractor::extractTimsXicList(), and getTimsFrameCstSPtrCached().

◆ getTimsFrameCstSPtrCached()

TimsFrameCstSPtr TimsData::getTimsFrameCstSPtrCached ( std::size_t  timsId)
private

get a Tims frame with his database ID but look in the cache first

Definition at line 1059 of file timsdata.cpp.

1061 {
1062  QMutexLocker locker(&m_mutex);
1063  for(auto &tims_frame : m_timsFrameCache)
1064  {
1065  if(tims_frame.get()->getId() == timsId)
1066  {
1067  m_timsFrameCache.push_back(tims_frame);
1068  return tims_frame;
1069  }
1070  }
1071 
1072  m_timsFrameCache.push_back(getTimsFrameCstSPtr(timsId));
1073  if(m_timsFrameCache.size() > m_cacheSize)
1074  m_timsFrameCache.pop_front();
1075  return m_timsFrameCache.back();

References getTimsFrameCstSPtr(), m_cacheSize, m_mutex, and m_timsFrameCache.

Referenced by getMassSpectrumCstSPtr(), getMsLevelBySpectrumIndex(), getQualifiedMassSpectrumByRawIndex(), getQualifiedMs1MassSpectrumByPrecursorId(), and getQualifiedMs2MassSpectrumByPrecursorId().

◆ getTimsMS1FrameIdRange()

std::vector< std::size_t > TimsData::getTimsMS1FrameIdRange ( double  rt_begin,
double  rt_end 
) const

Definition at line 391 of file timsdata.cpp.

393 {
394 
395  qDebug() << " rt_begin=" << rt_begin << " rt_end=" << rt_end;
396  std::vector<std::size_t> tims_frameid_list;
397  QSqlDatabase qdb = openDatabaseConnection();
398  QSqlQuery q = qdb.exec(QString("SELECT Frames.TimsId FROM Frames WHERE "
399  "Frames.MsMsType=0 AND (Frames.Time=>%1) AND "
400  "(Frames.Time<=%2) SORT BY Frames.Time;")
401  .arg(rt_begin)
402  .arg(rt_end));
403  if(q.lastError().isValid())
404  {
405 
406  throw PappsoException(
407  QObject::tr("ERROR in TIMS sqlite database file %1, database name %2, "
408  "executing SQL "
409  "command %3:\n%4\n%5\n%6")
410  .arg(m_timsDataDirectory.absoluteFilePath("analysis.tdf"))
411  .arg(qdb.databaseName())
412  .arg(q.lastQuery())
413  .arg(qdb.lastError().databaseText())
414  .arg(qdb.lastError().driverText())
415  .arg(qdb.lastError().nativeErrorCode()));
416  }
417  while(q.next())
418  {
419 
420  tims_frameid_list.push_back(q.value(0).toUInt());
421  }
422  return tims_frameid_list;

References m_timsDataDirectory, and openDatabaseConnection().

Referenced by pappso::TimsDirectXicExtractor::extractTimsXicList().

◆ getTotalNumberOfPrecursors()

std::size_t TimsData::getTotalNumberOfPrecursors ( ) const

get the number of precursors analyzes by PASEF

Definition at line 530 of file timsdata.cpp.

532 {

References m_totalNumberOfPrecursors.

Referenced by pappso::TimsMsRunReaderMs2::spectrumListSize().

◆ getTotalNumberOfScans()

std::size_t TimsData::getTotalNumberOfScans ( ) const

get the total number of scans

Definition at line 523 of file timsdata.cpp.

525 {
526  return m_totalNumberOfScans;

References m_totalNumberOfScans.

Referenced by pappso::TimsMsRunReader::spectrumListSize().

◆ openDatabaseConnection()

QSqlDatabase TimsData::openDatabaseConnection ( ) const
private

Definition at line 154 of file timsdata.cpp.

156 {
157  QString database_connection_name = QString("%1_%2")
158  .arg(m_timsDataDirectory.absolutePath())
159  .arg((quintptr)QThread::currentThread());
160  // Open the database
161  QSqlDatabase qdb = QSqlDatabase::database(database_connection_name);
162  if(!qdb.isValid())
163  {
164  qDebug() << database_connection_name;
165  qdb = QSqlDatabase::addDatabase("QSQLITE", database_connection_name);
166  qdb.setDatabaseName(m_timsDataDirectory.absoluteFilePath("analysis.tdf"));
167  }
168 
169 
170  if(!qdb.open())
171  {
172  qDebug();
173  throw PappsoException(
174  QObject::tr("ERROR opening TIMS sqlite database file %1, database name "
175  "%2 :\n%3\n%4\n%5")
176  .arg(m_timsDataDirectory.absoluteFilePath("analysis.tdf"))
177  .arg(database_connection_name)
178  .arg(qdb.lastError().databaseText())
179  .arg(qdb.lastError().driverText())
180  .arg(qdb.lastError().nativeErrorCode()));
181  }
182  return qdb;

References m_timsDataDirectory.

Referenced by getQualifiedMassSpectrumByRawIndex(), getQualifiedMs1MassSpectrumByPrecursorId(), getQualifiedMs2MassSpectrumByPrecursorId(), getRawIndexFromCoordinate(), getScanCoordinateFromRawIndex(), getTimsFrameBaseCstSPtr(), getTimsFrameCstSPtr(), getTimsMS1FrameIdRange(), and TimsData().

◆ setMs1FilterCstSPtr()

void TimsData::setMs1FilterCstSPtr ( pappso::FilterInterfaceCstSPtr filter)

Definition at line 1083 of file timsdata.cpp.

1085 {
1086  mcsp_ms1Filter = filter;

References mcsp_ms1Filter.

Referenced by pappso::TimsMsRunReaderMs2::setMs1FilterCstSPtr().

◆ setMs2FilterCstSPtr()

void TimsData::setMs2FilterCstSPtr ( pappso::FilterInterfaceCstSPtr filter)

Definition at line 1078 of file timsdata.cpp.

1080 {
1081  mcsp_ms2Filter = filter;

References mcsp_ms2Filter.

Referenced by pappso::TimsMsRunReaderMs2::setMs2FilterCstSPtr().

Member Data Documentation

◆ m_cacheSize

std::size_t pappso::TimsData::m_cacheSize = 60
private

Definition at line 177 of file timsdata.h.

Referenced by getTimsFrameBaseCstSPtrCached(), and getTimsFrameCstSPtrCached().

◆ m_mutex

QMutex pappso::TimsData::m_mutex
private

Definition at line 183 of file timsdata.h.

Referenced by getTimsFrameBaseCstSPtrCached(), and getTimsFrameCstSPtrCached().

◆ m_timsDataDirectory

◆ m_timsFrameBaseCache

std::deque<TimsFrameBaseCstSPtr> pappso::TimsData::m_timsFrameBaseCache
private

Definition at line 179 of file timsdata.h.

Referenced by getTimsFrameBaseCstSPtrCached().

◆ m_timsFrameCache

std::deque<TimsFrameCstSPtr> pappso::TimsData::m_timsFrameCache
private

Definition at line 178 of file timsdata.h.

Referenced by getTimsFrameCstSPtrCached().

◆ m_totalNumberOfPrecursors

std::size_t pappso::TimsData::m_totalNumberOfPrecursors
private

Definition at line 176 of file timsdata.h.

Referenced by getTotalNumberOfPrecursors(), and TimsData().

◆ m_totalNumberOfScans

std::size_t pappso::TimsData::m_totalNumberOfScans
private

Definition at line 175 of file timsdata.h.

Referenced by getTotalNumberOfScans(), and TimsData().

◆ mcsp_ms1Filter

pappso::FilterInterfaceCstSPtr pappso::TimsData::mcsp_ms1Filter = nullptr
private

◆ mcsp_ms2Filter

pappso::FilterInterfaceCstSPtr pappso::TimsData::mcsp_ms2Filter = nullptr
private

◆ mpa_timsBinDec

TimsBinDec* pappso::TimsData::mpa_timsBinDec = nullptr
private

Definition at line 173 of file timsdata.h.

Referenced by getTimsFrameCstSPtr(), TimsData(), and ~TimsData().


The documentation for this class was generated from the following files:
pappso::TimsData::mcsp_ms2Filter
pappso::FilterInterfaceCstSPtr mcsp_ms2Filter
Definition: timsdata.h:181
pappso::TimsData::m_totalNumberOfPrecursors
std::size_t m_totalNumberOfPrecursors
Definition: timsdata.h:176
pappso::QualifiedMassSpectrum::setPrecursorIntensity
void setPrecursorIntensity(pappso_double intensity)
Set the intensity of the precursor ion.
Definition: qualifiedmassspectrum.cpp:289
pappso::QualifiedMassSpectrumParameter::CollisionEnergy
Bruker's Tims tof collision energy.
pappso::TimsData::mcsp_ms1Filter
pappso::FilterInterfaceCstSPtr mcsp_ms1Filter
Definition: timsdata.h:182
pappso::TimsData::m_timsFrameBaseCache
std::deque< TimsFrameBaseCstSPtr > m_timsFrameBaseCache
Definition: timsdata.h:179
pappso::TimsData::getTimsFrameBaseCstSPtrCached
TimsFrameBaseCstSPtr getTimsFrameBaseCstSPtrCached(std::size_t timsId)
Definition: timsdata.cpp:1040
pappso::TimsFrameSPtr
std::shared_ptr< TimsFrame > TimsFrameSPtr
Definition: timsframe.h:55
pappso::TracePlusCombiner::combine
virtual MapTrace & combine(MapTrace &map_trace, const Trace &trace) const override
Definition: tracepluscombiner.cpp:52
pappso::QualifiedMassSpectrumParameter::OneOverK0end
1/k0 of last acquisition for composite pasef MS/MS spectrum
pappso::TimsFrameBase
Definition: timsframebase.h:62
pappso::TimsBinDec
Definition: timsbindec.h:56
pappso::QualifiedMassSpectrum::setPrecursorMz
void setPrecursorMz(pappso_double precursor_mz)
Set the precursor m/z ratio.
Definition: qualifiedmassspectrum.cpp:186
pappso::TimsBinDec::getTimsFrameSPtrByOffset
TimsFrameSPtr getTimsFrameSPtrByOffset(std::size_t timsId, std::size_t timsOffset) const
Definition: timsbindec.cpp:142
pappso::MassSpectrum
Class to represent a mass spectrum.
Definition: massspectrum.h:89
pappso::TimsData::m_cacheSize
std::size_t m_cacheSize
Definition: timsdata.h:177
pappso::QualifiedMassSpectrumParameter::IsolationMz
isolation window
pappso::QualifiedMassSpectrumParameter::OneOverK0
1/kO of a simple scan
pappso::TimsFrameBaseCstSPtr
std::shared_ptr< const TimsFrameBase > TimsFrameBaseCstSPtr
Definition: timsframebase.h:56
pappso::QualifiedMassSpectrum::setParameterValue
void setParameterValue(QualifiedMassSpectrumParameter parameter, const QVariant &value)
Definition: qualifiedmassspectrum.cpp:358
pappso::MapTrace
Definition: maptrace.h:32
pappso::QualifiedMassSpectrum::setMassSpectrumSPtr
void setMassSpectrumSPtr(MassSpectrumSPtr massSpectrum)
Set the MassSpectrumSPtr.
Definition: qualifiedmassspectrum.cpp:132
pappso::TimsData::getTimsFrameBaseCstSPtr
TimsFrameBaseCstSPtr getTimsFrameBaseCstSPtr(std::size_t timsId) const
get a Tims frame base (no binary data file access) with his database ID
Definition: timsdata.cpp:302
pappso::QualifiedMassSpectrum::setMsLevel
void setMsLevel(uint ms_level)
Set the mass spectrum level.
Definition: qualifiedmassspectrum.cpp:202
pappso::TimsData::getTimsFrameCstSPtrCached
TimsFrameCstSPtr getTimsFrameCstSPtrCached(std::size_t timsId)
get a Tims frame with his database ID but look in the cache first
Definition: timsdata.cpp:1059
pappso::QualifiedMassSpectrum::size
std::size_t size() const
Definition: qualifiedmassspectrum.cpp:304
pappso::QualifiedMassSpectrum::setRtInSeconds
void setRtInSeconds(pappso_double rt)
Set the retention time in seconds.
Definition: qualifiedmassspectrum.cpp:218
pappso::TimsData::m_mutex
QMutex m_mutex
Definition: timsdata.h:183
pappso::Trace
A simple container of DataPoint instances.
Definition: trace.h:125
pappso::QualifiedMassSpectrum
Class representing a fully specified mass spectrum.
Definition: qualifiedmassspectrum.h:83
pappso::TimsData::getScanCoordinateFromRawIndex
std::pair< std::size_t, std::size_t > getScanCoordinateFromRawIndex(std::size_t spectrum_index) const
Definition: timsdata.cpp:199
pappso::TimsData::m_timsDataDirectory
QDir m_timsDataDirectory
Definition: timsdata.h:172
pappso::TimsData::getMassSpectrumCstSPtr
pappso::MassSpectrumCstSPtr getMassSpectrumCstSPtr(std::size_t timsId, std::size_t scanNum)
get a mass spectrum given the tims frame database id and scan number within tims frame
Definition: timsdata.cpp:515
pappso::QualifiedMassSpectrum::setPrecursorNativeId
void setPrecursorNativeId(const QString &native_id)
Set the scan native id of the precursor ion.
Definition: qualifiedmassspectrum.cpp:276
pappso::QualifiedMassSpectrum::setMassSpectrumId
void setMassSpectrumId(const MassSpectrumId &iD)
Set the MassSpectrumId.
Definition: qualifiedmassspectrum.cpp:116
pappso::TimsFrameBaseSPtr
std::shared_ptr< TimsFrameBase > TimsFrameBaseSPtr
Definition: timsframebase.h:54
pappso::TimsData::m_totalNumberOfScans
std::size_t m_totalNumberOfScans
Definition: timsdata.h:175
pappso::TimsData::mpa_timsBinDec
TimsBinDec * mpa_timsBinDec
Definition: timsdata.h:173
pappso::TimsData::m_timsFrameCache
std::deque< TimsFrameCstSPtr > m_timsFrameCache
Definition: timsdata.h:178
pappso::ExceptionNotFound
Definition: exceptionnotfound.h:50
pappso::QualifiedMassSpectrumParameter::OneOverK0begin
pappso::QualifiedMassSpectrum::setPrecursorCharge
void setPrecursorCharge(uint precursor_charge)
Set the precursor charge.
Definition: qualifiedmassspectrum.cpp:170
pappso::MassSpectrumId
Definition: massspectrumid.h:56
pappso::QualifiedMassSpectrum::setEmptyMassSpectrum
void setEmptyMassSpectrum(bool is_empty_mass_spectrum)
Definition: qualifiedmassspectrum.cpp:155
pappso::QualifiedMassSpectrum::setPrecursorSpectrumIndex
void setPrecursorSpectrumIndex(std::size_t precursor_scan_num)
Set the scan number of the precursor ion.
Definition: qualifiedmassspectrum.cpp:261
pappso::TimsData::getTimsFrameCstSPtr
TimsFrameCstSPtr getTimsFrameCstSPtr(std::size_t timsId) const
get a Tims frame with his database ID
Definition: timsdata.cpp:425
pappso::QualifiedMassSpectrumParameter::IsolationWidth
isolation window width
pappso::MassSpectrumId::setSpectrumIndex
void setSpectrumIndex(std::size_t index)
Definition: massspectrumid.cpp:123
pappso::QualifiedMassSpectrum::setDtInMilliSeconds
void setDtInMilliSeconds(pappso_double rt)
Set the drift time in milliseconds.
Definition: qualifiedmassspectrum.cpp:242
pappso::MassSpectrumId::setNativeId
void setNativeId(const QString &native_id)
Definition: massspectrumid.cpp:109
pappso::QualifiedMassSpectrumParameter::BrukerPrecursorIndex
Bruker's Tims tof precursor index.
pappso::TimsData::getRawIndexFromCoordinate
std::size_t getRawIndexFromCoordinate(std::size_t frame_id, std::size_t scan_num) const
Definition: timsdata.cpp:244
pappso::TimsFrameCstSPtr
std::shared_ptr< const TimsFrame > TimsFrameCstSPtr
Definition: timsframe.h:57
pappso::TimsData::openDatabaseConnection
QSqlDatabase openDatabaseConnection() const
Definition: timsdata.cpp:154
pappso::TracePlusCombiner
Definition: tracepluscombiner.h:26
pappso::PappsoException
Definition: pappsoexception.h:60
pappso::FilterTriangle::setTriangleSlope
double setTriangleSlope(double intensity, double mz)
Definition: filtertriangle.cpp:47