|
libpappsomspp
Library for mass spectrometry
|
#include <timsdata.h>
|
| | 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...
|
| |
| std::vector< std::size_t > | getPrecursorsFromMzRtCharge (int charge, double mz_val, double rt_sec, double k0) |
| | guess possible precursor ids given a charge, m/z, retention time and k0 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) |
| | filter interface to apply just after raw MS2 specturm extraction the filter can be a list of filters inside a FilterSuite object More...
|
| |
| void | setMs1FilterCstSPtr (pappso::FilterInterfaceCstSPtr &filter) |
| | filter interface to apply just after raw MS1 specturm extraction the filter can be a list of filters inside a FilterSuite object More...
|
| |
| void | setMs2BuiltinCentroid (bool centroid) |
| | enable or disable simple centroid filter on raw tims data for MS2 More...
|
| |
| bool | getMs2BuiltinCentroid () const |
| | tells if simple centroid filter on raw tims data for MS2 is enabled or not More...
|
| |
| 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...
|
| |
- Todo:
- write docs
Definition at line 70 of file timsdata.h.
◆ TimsData() [1/2]
| TimsData::TimsData |
( |
QDir |
timsDataDirectory | ) |
|
build using the tims data directory
Definition at line 46 of file timsdata.cpp.
55 QObject::tr(
"ERROR TIMS data directory %1 not found")
63 QObject::tr(
"ERROR TIMS data directory, %1 sqlite file not found")
72 if(!q.exec(
"select Key, Value from GlobalMetadata where "
73 "Key='TimsCompressionType';"))
78 QObject::tr(
"ERROR in TIMS sqlite database file %1, executing SQL "
79 "command %2:\n%3\n%4\n%5")
82 .arg(q.lastError().databaseText())
83 .arg(q.lastError().driverText())
84 .arg(q.lastError().nativeErrorCode()));
88 int compression_type = 0;
91 compression_type = q.value(1).toInt();
93 qDebug() <<
" compression_type=" << compression_type;
100 if(!q.exec(
"SELECT COUNT( DISTINCT Id) FROM Precursors;"))
104 QObject::tr(
"ERROR in TIMS sqlite database file %1, executing SQL "
105 "command %2:\n%3\n%4\n%5")
108 .arg(qdb.lastError().databaseText())
109 .arg(qdb.lastError().driverText())
110 .arg(qdb.lastError().nativeErrorCode()));
119 if(!q.exec(
"SELECT SUM(NumScans) FROM Frames"))
123 QObject::tr(
"ERROR in TIMS sqlite database file %1, executing SQL "
124 "command %2:\n%3\n%4\n%5")
127 .arg(qdb.lastError().databaseText())
128 .arg(qdb.lastError().driverText())
129 .arg(qdb.lastError().nativeErrorCode()));
136 if(!q.exec(
"select * from MzCalibration;"))
140 QObject::tr(
"ERROR in TIMS sqlite database file %1, executing SQL "
141 "command %2:\n%3\n%4\n%5")
144 .arg(q.lastError().databaseText())
145 .arg(q.lastError().driverText())
146 .arg(q.lastError().nativeErrorCode()));
151 QSqlRecord record = q.record();
153 std::pair<int, QSqlRecord>(record.value(0).toInt(), record));
156 std::shared_ptr<pappso::FilterPseudoCentroid> ms2filter =
157 std::make_shared<pappso::FilterPseudoCentroid>(35000, 5, 0.5, 0.1);
161 std::shared_ptr<FilterTriangle> ms1filter =
162 std::make_shared<FilterTriangle>();
References m_mapMzCalibrationRecord, m_timsDataDirectory, m_totalNumberOfPrecursors, m_totalNumberOfScans, mcsp_ms1Filter, mcsp_ms2Filter, mpa_mzCalibrationStore, mpa_timsBinDec, openDatabaseConnection(), and pappso::FilterTriangle::setTriangleSlope().
◆ TimsData() [2/2]
| pappso::TimsData::TimsData |
( |
const TimsData & |
other | ) |
|
Copy constructor
- Parameters
-
◆ ~TimsData()
◆ extractXicListByPrecursorIds()
extract a list of XICs from Tims data
- Parameters
-
| precursor_id_list | the list of precursors to extract |
| precision_ptr | precision to compute the mz range to extract for each precursor mass |
| xicExtractMethod | XIC extraction method (sum or max) to use |
| rtRange | retention time range in seconds to extract XIC from rtTarget
- rtRange to rtTarget + rtRange
|
- Returns
- the corresponding XIC list as a specific structure
Definition at line 1277 of file timsdata.cpp.
1285 std::vector<TimsXicStructure> xic_list;
1291 for(
auto precursor_id : precursor_id_list)
1293 QSqlQuery q = qdb.exec(
1294 QString(
"SELECT Frames.Time, "
1295 "PasefFrameMsMsInfo.Frame,PasefFrameMsMsInfo.ScanNumBegin,"
1296 "PasefFrameMsMsInfo.ScanNumEnd, Precursors.MonoisotopicMz, "
1297 "Precursors.Charge FROM "
1298 "PasefFrameMsMsInfo INNER JOIN Precursors ON "
1299 "PasefFrameMsMsInfo.Precursor=Precursors.Id INNER JOIN "
1300 "Frames ON PasefFrameMsMsInfo.Frame=Frames.Id where "
1301 "Precursors.Id=%1;")
1302 .arg(precursor_id));
1303 if(q.lastError().isValid())
1308 "ERROR in TIMS sqlite database file %1, executing SQL "
1309 "command %2:\n%3\n%4\n%5")
1312 .arg(qdb.lastError().databaseText())
1313 .arg(qdb.lastError().driverText())
1314 .arg(qdb.lastError().nativeErrorCode()));
1327 MzRange(q.value(4).toDouble(), precision_ptr);
1329 xic_structure.
scanNumEnd = q.value(3).toUInt();
1330 xic_structure.
rtTarget = q.value(0).toDouble();
1333 xic_list.push_back(xic_structure);
1346 catch(std::exception &error)
1348 qDebug() << QString(
"Failure %1 ").arg(error.what());
References pappso::TimsXicExtractorInterface::extractTimsXicList(), m_timsDataDirectory, pappso::TimsXicStructure::mzRange, openDatabaseConnection(), pappso::TimsXicStructure::precursorId, pappso::TimsXicStructure::rtTarget, pappso::TimsXicStructure::scanNumBegin, pappso::TimsXicStructure::scanNumEnd, and pappso::TimsXicExtractorInterface::setXicExtractMethod().
◆ getClosestPrecursorIdByMz()
| std::vector< std::size_t > TimsData::getClosestPrecursorIdByMz |
( |
std::vector< std::vector< double >> |
ids, |
|
|
double |
mz_value |
|
) |
| |
|
private |
- Todo:
- documentation
Definition at line 658 of file timsdata.cpp.
661 std::vector<std::size_t> best_precursor;
662 double best_value = 1;
664 int best_val_position = 0;
666 for(std::vector<double> values : ids)
668 double new_val = abs(mz_value - values[4]);
669 if(new_val < best_value)
671 best_value = new_val;
672 best_val_position = count;
676 best_precursor.push_back(ids[best_val_position][1]);
677 return best_precursor;
Referenced by getPrecursorsFromMzRtCharge().
◆ getMassSpectrumCstSPtr()
◆ getMassSpectrumCstSPtrByRawIndex()
◆ getMatchPrecursorIdByKo()
| std::vector< std::size_t > TimsData::getMatchPrecursorIdByKo |
( |
std::vector< std::vector< double >> |
ids, |
|
|
double |
ko_value |
|
) |
| |
|
private |
Definition at line 632 of file timsdata.cpp.
635 std::vector<std::size_t> precursor_id;
636 for(std::vector<double> index : ids)
643 double bko = tims_frame.get()->getOneOverK0Transformation(index[2]);
644 double eko = tims_frame.get()->getOneOverK0Transformation(index[3]);
646 qInfo() <<
"diff" << (bko + eko) / 2;
647 double mean_ko = (bko + eko) / 2;
649 if(mean_ko > ko_value - 0.1 && mean_ko < ko_value + 0.1)
651 precursor_id.push_back(index[1]);
References getScanCoordinateFromRawIndex(), and getTimsFrameBaseCstSPtrCached().
◆ getMs2BuiltinCentroid()
| bool TimsData::getMs2BuiltinCentroid |
( |
| ) |
const |
◆ getMsLevelBySpectrumIndex()
| unsigned int TimsData::getMsLevelBySpectrumIndex |
( |
std::size_t |
spectrum_index | ) |
|
◆ getPrecursorsFromMzRtCharge()
| std::vector< std::size_t > TimsData::getPrecursorsFromMzRtCharge |
( |
int |
charge, |
|
|
double |
mz_val, |
|
|
double |
rt_sec, |
|
|
double |
k0 |
|
) |
| |
guess possible precursor ids given a charge, m/z, retention time and k0
- Returns
- a list of possible precursor ids
Definition at line 553 of file timsdata.cpp.
558 std::vector<std::size_t> precursor_ids;
559 std::vector<std::vector<double>> ids;
562 QSqlQuery q = qdb.exec(
564 "SELECT Frames.time, Precursors.MonoisotopicMz, Precursors.Charge, "
565 "Precursors.Id, Frames.Id, PasefFrameMsMsInfo.ScanNumBegin, "
566 "PasefFrameMsMsInfo.scanNumEnd "
568 "INNER JOIN PasefFrameMsMsInfo ON Frames.Id = PasefFrameMsMsInfo.Frame "
569 "INNER JOIN Precursors ON PasefFrameMsMsInfo.Precursor = Precursors.Id "
570 "WHERE Precursors.Charge == %1 "
571 "AND Precursors.MonoisotopicMz > %2 -0.01 "
572 "AND Precursors.MonoisotopicMz < %2 +0.01 "
573 "AND Frames.Time >= %3 "
574 "AND Frames.Time < %3 +1; ")
578 if(q.lastError().isValid())
582 QObject::tr(
"ERROR in TIMS sqlite database file %1, database name %2, "
584 "command %3:\n%4\n%5\n%6")
586 .arg(qdb.databaseName())
588 .arg(qdb.lastError().databaseText())
589 .arg(qdb.lastError().driverText())
590 .arg(qdb.lastError().nativeErrorCode()));
594 qInfo() << q.value(0).toDouble() << q.value(1).toDouble()
595 << q.value(2).toDouble() << q.value(3).toDouble();
597 std::vector<double> sql_values;
598 sql_values.push_back(q.value(4).toDouble());
599 sql_values.push_back(q.value(3).toDouble());
600 sql_values.push_back(q.value(5).toDouble());
601 sql_values.push_back(q.value(6).toDouble());
602 sql_values.push_back(q.value(1).toDouble());
604 ids.push_back(sql_values);
607 if(std::find(precursor_ids.begin(),
609 q.value(3).toDouble()) == precursor_ids.end())
611 precursor_ids.push_back(q.value(3).toDouble());
615 if(precursor_ids.size() > 1)
619 if(precursor_ids.size() > 1)
623 return precursor_ids;
627 return precursor_ids;
References getClosestPrecursorIdByMz(), m_timsDataDirectory, and openDatabaseConnection().
◆ getQualifiedMassSpectrumByRawIndex()
| QualifiedMassSpectrum TimsData::getQualifiedMassSpectrumByRawIndex |
( |
std::size_t |
spectrum_index, |
|
|
bool |
want_binary_data |
|
) |
| |
Definition at line 691 of file timsdata.cpp.
708 spectrum_id.
setNativeId(QString(
"frame=%1 scan=%2 index=%3")
709 .arg(coordinate.first)
710 .arg(coordinate.second)
711 .arg(spectrum_index));
715 mass_spectrum.
setMsLevel(tims_frame.get()->getMsLevel());
719 tims_frame.get()->getDriftTime(coordinate.second));
722 QualifiedMassSpectrumParameter::OneOverK0,
723 tims_frame.get()->getOneOverK0Transformation(coordinate.second));
729 tims_frame.get()->getMassSpectrumSPtr(coordinate.second));
730 if(mass_spectrum.
size() > 0)
742 if(tims_frame.get()->getMsLevel() > 1)
746 QSqlQuery q = qdb.exec(
748 "SELECT PasefFrameMsMsInfo.*, Precursors.* FROM "
749 "PasefFrameMsMsInfo INNER JOIN Precursors ON "
750 "PasefFrameMsMsInfo.Precursor=Precursors.Id where "
751 "PasefFrameMsMsInfo.Frame=%1 and (PasefFrameMsMsInfo.ScanNumBegin "
752 "<= %2 and PasefFrameMsMsInfo.ScanNumEnd >= %2);")
753 .arg(coordinate.first)
754 .arg(coordinate.second));
755 if(q.lastError().isValid())
758 QObject::tr(
"ERROR in TIMS sqlite database file %1, executing SQL "
759 "command %2:\n%3\n%4\n%5")
762 .arg(qdb.lastError().databaseText())
763 .arg(qdb.lastError().driverText())
764 .arg(qdb.lastError().nativeErrorCode()));
776 q.value(13).toDouble()));
781 q.value(14).toDouble(), coordinate.second);
785 QString(
"frame=%1 scan=%2 index=%3")
786 .arg(q.value(14).toDouble())
787 .arg(coordinate.second)
788 .arg(prec_spectrum_index));
791 QualifiedMassSpectrumParameter::IsolationMz, q.value(3).toDouble());
793 QualifiedMassSpectrumParameter::IsolationWidth,
794 q.value(4).toDouble());
797 QualifiedMassSpectrumParameter::CollisionEnergy,
798 q.value(5).toFloat());
800 QualifiedMassSpectrumParameter::BrukerPrecursorIndex,
805 return mass_spectrum;
References pappso::QualifiedMassSpectrum::appendPrecursorIonData(), getRawIndexFromCoordinate(), getScanCoordinateFromRawIndex(), getTimsFrameBaseCstSPtrCached(), getTimsFrameCstSPtrCached(), m_timsDataDirectory, openDatabaseConnection(), pappso::QualifiedMassSpectrum::setDtInMilliSeconds(), pappso::QualifiedMassSpectrum::setEmptyMassSpectrum(), pappso::QualifiedMassSpectrum::setMassSpectrumId(), pappso::QualifiedMassSpectrum::setMassSpectrumSPtr(), pappso::QualifiedMassSpectrum::setMsLevel(), pappso::MassSpectrumId::setNativeId(), pappso::QualifiedMassSpectrum::setParameterValue(), 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 810 of file timsdata.cpp.
823 qdb.exec(QString(
"SELECT PasefFrameMsMsInfo.*, Precursors.* FROM "
824 "PasefFrameMsMsInfo INNER JOIN Precursors ON "
825 "PasefFrameMsMsInfo.Precursor=Precursors.Id where "
827 .arg(precursor_index));
828 if(q.lastError().isValid())
832 QObject::tr(
"ERROR in TIMS sqlite database file %1, executing SQL "
833 "command %2:\n%3\n%4\n%5")
836 .arg(qdb.lastError().databaseText())
837 .arg(qdb.lastError().driverText())
838 .arg(qdb.lastError().nativeErrorCode()));
845 "ERROR in getQualifiedMassSpectrumByPrecursorId, precursor "
847 .arg(precursor_index));
856 std::size_t scan_mobility_start = 0;
857 std::size_t scan_mobility_end = 0;
858 std::set<std::size_t> tims_frame_list;
862 tims_frame_list.insert(q.value(14).toLongLong());
871 QString(
"frame=%1 begin=%2 end=%3 precursor=%4 idxms2=%5")
872 .arg(q.value(0).toLongLong())
873 .arg(q.value(1).toLongLong())
874 .arg(q.value(2).toLongLong())
875 .arg(precursor_index)
882 scan_mobility_start = q.value(1).toLongLong();
883 scan_mobility_end = q.value(2).toLongLong();
890 for(std::size_t tims_id : tims_frame_list)
899 QualifiedMassSpectrumParameter::OneOverK0begin,
900 tims_frame.get()->getOneOverK0Transformation(
901 scan_mobility_start));
904 QualifiedMassSpectrumParameter::OneOverK0end,
905 tims_frame.get()->getOneOverK0Transformation(
914 combiner.
combine(combiner_result,
915 tims_frame.get()->cumulateScanToTrace(
916 scan_mobility_start, scan_mobility_end));
929 "ERROR in getQualifiedMassSpectrumByPrecursorId, precursor "
931 .arg(precursor_index));
966 catch(std::exception &error)
968 qDebug() << QString(
"Failure %1 ").arg(error.what());
970 return mass_spectrum;
References pappso::TracePlusCombiner::combine(), getTimsFrameCstSPtrCached(), m_timsDataDirectory, mcsp_ms1Filter, openDatabaseConnection(), pappso::QualifiedMassSpectrum::setEmptyMassSpectrum(), pappso::QualifiedMassSpectrum::setMassSpectrumId(), pappso::QualifiedMassSpectrum::setMassSpectrumSPtr(), pappso::QualifiedMassSpectrum::setMsLevel(), pappso::MassSpectrumId::setNativeId(), pappso::QualifiedMassSpectrum::setParameterValue(), pappso::QualifiedMassSpectrum::setPrecursorSpectrumIndex(), pappso::QualifiedMassSpectrum::setRtInSeconds(), and pappso::MassSpectrumId::setSpectrumIndex().
Referenced by pappso::TimsMsRunReaderMs2Selected::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 975 of file timsdata.cpp.
989 QString(
"precursor=%1 idxms2=%2").arg(precursor_index).arg(ms2_index));
1011 qdb.exec(QString(
"SELECT PasefFrameMsMsInfo.*, Precursors.* FROM "
1012 "PasefFrameMsMsInfo INNER JOIN Precursors ON "
1013 "PasefFrameMsMsInfo.Precursor=Precursors.Id where "
1014 "Precursors.Id=%1;")
1015 .arg(precursor_index));
1016 if(q.lastError().isValid())
1020 QObject::tr(
"ERROR in TIMS sqlite database file %1, executing SQL "
1021 "command %2:\n%3\n%4\n%5")
1024 .arg(qdb.lastError().databaseText())
1025 .arg(qdb.lastError().driverText())
1026 .arg(qdb.lastError().nativeErrorCode()));
1035 "ERROR in getQualifiedMassSpectrumByPrecursorId, precursor "
1037 .arg(precursor_index));
1044 std::size_t scan_mobility_start = 0;
1045 std::size_t scan_mobility_end = 0;
1046 std::vector<std::size_t> tims_frame_list;
1050 tims_frame_list.push_back(q.value(0).toLongLong());
1059 q.value(11).toInt(),
1060 q.value(13).toDouble()));
1063 QString(
"frame=%1 begin=%2 end=%3 precursor=%4 idxms2=%5")
1064 .arg(q.value(14).toLongLong())
1065 .arg(q.value(1).toLongLong())
1066 .arg(q.value(2).toLongLong())
1067 .arg(precursor_index)
1068 .arg(ms2_index - 1));
1071 scan_mobility_start = q.value(1).toLongLong();
1072 scan_mobility_end = q.value(2).toLongLong();
1075 QualifiedMassSpectrumParameter::IsolationMz,
1076 q.value(3).toDouble());
1078 QualifiedMassSpectrumParameter::IsolationWidth,
1079 q.value(4).toDouble());
1082 QualifiedMassSpectrumParameter::CollisionEnergy,
1083 q.value(5).toFloat());
1085 QualifiedMassSpectrumParameter::BrukerPrecursorIndex,
1086 q.value(6).toInt());
1096 std::map<quint32, quint32> raw_spectrum;
1098 for(std::size_t tims_id : tims_frame_list)
1107 QualifiedMassSpectrumParameter::OneOverK0begin,
1108 tims_frame.get()->getOneOverK0Transformation(
1109 scan_mobility_start));
1112 QualifiedMassSpectrumParameter::OneOverK0end,
1113 tims_frame.get()->getOneOverK0Transformation(
1114 scan_mobility_end));
1120 if(want_binary_data)
1126 if(previous_frame.get() !=
nullptr)
1128 if(previous_frame.get()->hasSameCalibrationData(
1136 "ERROR in %1 %2, different calibration data "
1137 "between frame id %3 and frame id %4")
1140 .arg(previous_frame.get()->getId())
1141 .arg(tims_frame.get()->getId()));
1144 tims_frame.get()->cumulateScansInRawMap(
1145 raw_spectrum, scan_mobility_start, scan_mobility_end);
1148 previous_frame = tims_frame;
1150 qDebug() <<
" precursor_index=" << precursor_index
1151 <<
" num_rows=" << tims_frame_list.size()
1152 <<
" sql=" << q.lastQuery() <<
" "
1153 << (std::size_t)QThread::currentThreadId();
1158 "ERROR in getQualifiedMassSpectrumByPrecursorId, precursor "
1160 .arg(precursor_index));
1162 if(want_binary_data)
1170 tims_frame.get()->getTraceFromCumulatedScansBuiltinCentroid(
1178 tims_frame.get()->getTraceFromCumulatedScans(raw_spectrum);
1181 if(trace.size() > 0)
1183 qDebug() << trace.size() <<
" "
1184 << (std::size_t)QThread::currentThreadId();
1219 catch(std::exception &error)
1221 qDebug() << QString(
"Failure %1 ").arg(error.what());
References pappso::QualifiedMassSpectrum::appendPrecursorIonData(), getTimsFrameCstSPtrCached(), m_builtinMs2Centroid, m_timsDataDirectory, mcsp_ms2Filter, openDatabaseConnection(), pappso::QualifiedMassSpectrum::setEmptyMassSpectrum(), pappso::QualifiedMassSpectrum::setMassSpectrumId(), pappso::QualifiedMassSpectrum::setMassSpectrumSPtr(), pappso::QualifiedMassSpectrum::setMsLevel(), pappso::MassSpectrumId::setNativeId(), pappso::QualifiedMassSpectrum::setParameterValue(), pappso::QualifiedMassSpectrum::setPrecursorNativeId(), pappso::QualifiedMassSpectrum::setPrecursorSpectrumIndex(), pappso::QualifiedMassSpectrum::setRtInSeconds(), and pappso::MassSpectrumId::setSpectrumIndex().
Referenced by pappso::TimsMsRunReaderMs2Selected::qualifiedMassSpectrum().
◆ getRawIndexFromCoordinate()
| std::size_t TimsData::getRawIndexFromCoordinate |
( |
std::size_t |
frame_id, |
|
|
std::size_t |
scan_num |
|
) |
| const |
|
private |
Definition at line 270 of file timsdata.cpp.
277 qdb.exec(QString(
"SELECT Id, NumScans FROM "
278 "Frames ORDER BY Id"));
279 if(q.lastError().isValid())
283 QObject::tr(
"ERROR in TIMS sqlite database file %1, executing SQL "
284 "command %2:\n%3\n%4\n%5")
287 .arg(qdb.lastError().databaseText())
288 .arg(qdb.lastError().driverText())
289 .arg(qdb.lastError().nativeErrorCode()));
291 bool index_found =
false;
293 std::size_t numberScans;
294 std::size_t offset = 0;
295 while(q.next() && (!index_found))
297 timsId = q.value(0).toUInt();
298 numberScans = q.value(1).toUInt();
300 if(timsId == frame_id)
302 return offset + scan_num;
305 offset += numberScans;
309 QObject::tr(
"ERROR raw index with frame=%1 scan=%2 not found")
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 225 of file timsdata.cpp.
231 qdb.exec(QString(
"SELECT Id, NumScans FROM "
232 "Frames ORDER BY Id"));
233 if(q.lastError().isValid())
237 QObject::tr(
"ERROR in TIMS sqlite database file %1, executing SQL "
238 "command %2:\n%3\n%4\n%5")
241 .arg(qdb.lastError().databaseText())
242 .arg(qdb.lastError().driverText())
243 .arg(qdb.lastError().nativeErrorCode()));
246 bool index_found =
false;
248 std::size_t numberScans;
249 std::size_t offset = 0;
250 while(q.next() && (!index_found))
252 timsId = q.value(0).toUInt();
253 numberScans = q.value(1).toUInt();
255 if(raw_index < (offset + numberScans))
257 return std::pair<std::size_t, std::size_t>(timsId,
261 offset += numberScans;
265 QObject::tr(
"ERROR raw index %1 not found").arg(raw_index));
References m_timsDataDirectory, and openDatabaseConnection().
Referenced by getMassSpectrumCstSPtrByRawIndex(), getMatchPrecursorIdByKo(), getMsLevelBySpectrumIndex(), and getQualifiedMassSpectrumByRawIndex().
◆ getTimsFrameBaseCstSPtr()
get a Tims frame base (no binary data file access) with his database ID
Definition at line 328 of file timsdata.cpp.
331 qDebug() <<
" timsId=" << timsId;
334 QSqlQuery q = qdb.exec(
335 QString(
"SELECT Frames.TimsId, Frames.AccumulationTime, "
336 "Frames.MzCalibration, "
337 "Frames.T1, Frames.T2, "
338 "Frames.Time, Frames.MsMsType, TimsCalibration.ModelType, "
339 "TimsCalibration.C0, TimsCalibration.C1, TimsCalibration.C2, "
340 "TimsCalibration.C3, TimsCalibration.C4, TimsCalibration.C5, "
341 "TimsCalibration.C6, TimsCalibration.C7, TimsCalibration.C8, "
342 "TimsCalibration.C9 FROM Frames"
343 " INNER JOIN TimsCalibration "
344 "ON Frames.TimsCalibration=TimsCalibration.Id where "
347 if(q.lastError().isValid())
351 QObject::tr(
"ERROR in TIMS sqlite database file %1, database name %2, "
353 "command %3:\n%4\n%5\n%6")
355 .arg(qdb.databaseName())
357 .arg(qdb.lastError().databaseText())
358 .arg(qdb.lastError().driverText())
359 .arg(qdb.lastError().nativeErrorCode()));
366 tims_frame = std::make_shared<TimsFrameBase>(
373 double T1_frame = q.value(3).toDouble();
374 double T2_frame = q.value(4).toDouble();
377 tims_frame.get()->setMzCalibrationInterfaceSPtr(
379 T1_frame, T2_frame, it_map_record->second));
384 QObject::tr(
"ERROR MzCalibration database id %1 not found")
385 .arg(q.value(2).toInt()));
388 tims_frame.get()->setAccumulationTime(q.value(1).toDouble());
390 tims_frame.get()->setTime(q.value(5).toDouble());
391 tims_frame.get()->setMsMsType(q.value(6).toUInt());
393 tims_frame.get()->setTimsCalibration(q.value(7).toInt(),
394 q.value(8).toDouble(),
395 q.value(9).toDouble(),
396 q.value(10).toDouble(),
397 q.value(11).toDouble(),
398 q.value(12).toDouble(),
399 q.value(13).toDouble(),
400 q.value(14).toDouble(),
401 q.value(15).toDouble(),
402 q.value(16).toDouble(),
403 q.value(17).toDouble());
References pappso::MzCalibrationStore::getInstance(), m_mapMzCalibrationRecord, m_timsDataDirectory, mpa_mzCalibrationStore, and openDatabaseConnection().
Referenced by getTimsFrameBaseCstSPtrCached().
◆ getTimsFrameBaseCstSPtrCached()
◆ getTimsFrameCstSPtr()
get a Tims frame with his database ID
Definition at line 446 of file timsdata.cpp.
449 qDebug() <<
" timsId=" << timsId;
452 QSqlQuery q = qdb.exec(
453 QString(
"SELECT Frames.TimsId, Frames.AccumulationTime, "
454 "Frames.MzCalibration, "
455 "Frames.T1, Frames.T2, "
456 "Frames.Time, Frames.MsMsType, TimsCalibration.ModelType, "
457 "TimsCalibration.C0, TimsCalibration.C1, TimsCalibration.C2, "
458 "TimsCalibration.C3, TimsCalibration.C4, TimsCalibration.C5, "
459 "TimsCalibration.C6, TimsCalibration.C7, TimsCalibration.C8, "
460 "TimsCalibration.C9 FROM Frames"
461 " INNER JOIN TimsCalibration "
462 "ON Frames.TimsCalibration=TimsCalibration.Id where "
465 if(q.lastError().isValid())
469 QObject::tr(
"ERROR in TIMS sqlite database file %1, database name %2, "
471 "command %3:\n%4\n%5\n%6")
473 .arg(qdb.databaseName())
475 .arg(qdb.lastError().databaseText())
476 .arg(qdb.lastError().driverText())
477 .arg(qdb.lastError().nativeErrorCode()));
492 double T1_frame = q.value(3).toDouble();
493 double T2_frame = q.value(4).toDouble();
496 tims_frame.get()->setMzCalibrationInterfaceSPtr(
498 T1_frame, T2_frame, it_map_record->second));
503 QObject::tr(
"ERROR MzCalibration database id %1 not found")
504 .arg(q.value(2).toInt()));
507 tims_frame.get()->setAccumulationTime(q.value(1).toDouble());
509 tims_frame.get()->setTime(q.value(5).toDouble());
510 tims_frame.get()->setMsMsType(q.value(6).toUInt());
512 tims_frame.get()->setTimsCalibration(q.value(7).toInt(),
513 q.value(8).toDouble(),
514 q.value(9).toDouble(),
515 q.value(10).toDouble(),
516 q.value(11).toDouble(),
517 q.value(12).toDouble(),
518 q.value(13).toDouble(),
519 q.value(14).toDouble(),
520 q.value(15).toDouble(),
521 q.value(16).toDouble(),
522 q.value(17).toDouble());
References pappso::MzCalibrationStore::getInstance(), pappso::TimsBinDec::getTimsFrameSPtrByOffset(), m_mapMzCalibrationRecord, m_timsDataDirectory, mpa_mzCalibrationStore, mpa_timsBinDec, and openDatabaseConnection().
Referenced by pappso::TimsDirectXicExtractor::extractTimsXicList(), and getTimsFrameCstSPtrCached().
◆ getTimsFrameCstSPtrCached()
◆ getTimsMS1FrameIdRange()
| std::vector< std::size_t > TimsData::getTimsMS1FrameIdRange |
( |
double |
rt_begin, |
|
|
double |
rt_end |
|
) |
| const |
Definition at line 412 of file timsdata.cpp.
415 qDebug() <<
" rt_begin=" << rt_begin <<
" rt_end=" << rt_end;
416 std::vector<std::size_t> tims_frameid_list;
418 QSqlQuery q = qdb.exec(QString(
"SELECT Frames.TimsId FROM Frames WHERE "
419 "Frames.MsMsType=0 AND (Frames.Time=>%1) AND "
420 "(Frames.Time<=%2) SORT BY Frames.Time;")
423 if(q.lastError().isValid())
427 QObject::tr(
"ERROR in TIMS sqlite database file %1, database name %2, "
429 "command %3:\n%4\n%5\n%6")
431 .arg(qdb.databaseName())
433 .arg(qdb.lastError().databaseText())
434 .arg(qdb.lastError().driverText())
435 .arg(qdb.lastError().nativeErrorCode()));
440 tims_frameid_list.push_back(q.value(0).toUInt());
442 return tims_frameid_list;
References m_timsDataDirectory, and openDatabaseConnection().
Referenced by pappso::TimsDirectXicExtractor::extractTimsXicList().
◆ getTotalNumberOfPrecursors()
| std::size_t TimsData::getTotalNumberOfPrecursors |
( |
| ) |
const |
◆ getTotalNumberOfScans()
| std::size_t TimsData::getTotalNumberOfScans |
( |
| ) |
const |
◆ openDatabaseConnection()
| QSqlDatabase TimsData::openDatabaseConnection |
( |
| ) |
const |
|
private |
Definition at line 168 of file timsdata.cpp.
170 QString database_connection_name = QString(
"%1_%2")
172 .arg((quintptr)QThread::currentThread());
174 QSqlDatabase qdb = QSqlDatabase::database(database_connection_name);
177 qDebug() << database_connection_name;
178 qdb = QSqlDatabase::addDatabase(
"QSQLITE", database_connection_name);
187 QObject::tr(
"ERROR opening TIMS sqlite database file %1, database name "
190 .arg(database_connection_name)
191 .arg(qdb.lastError().databaseText())
192 .arg(qdb.lastError().driverText())
193 .arg(qdb.lastError().nativeErrorCode()));
References m_timsDataDirectory.
Referenced by TimsData(), extractXicListByPrecursorIds(), getPrecursorsFromMzRtCharge(), getQualifiedMassSpectrumByRawIndex(), getQualifiedMs1MassSpectrumByPrecursorId(), getQualifiedMs2MassSpectrumByPrecursorId(), getRawIndexFromCoordinate(), getScanCoordinateFromRawIndex(), getTimsFrameBaseCstSPtr(), getTimsFrameCstSPtr(), and getTimsMS1FrameIdRange().
◆ setMs1FilterCstSPtr()
◆ setMs2BuiltinCentroid()
| void TimsData::setMs2BuiltinCentroid |
( |
bool |
centroid | ) |
|
◆ setMs2FilterCstSPtr()
◆ m_builtinMs2Centroid
| bool pappso::TimsData::m_builtinMs2Centroid = true |
|
private |
◆ m_cacheSize
| std::size_t pappso::TimsData::m_cacheSize = 60 |
|
private |
◆ m_mapMzCalibrationRecord
| std::map<int, QSqlRecord> pappso::TimsData::m_mapMzCalibrationRecord |
|
private |
◆ m_mutex
| QMutex pappso::TimsData::m_mutex |
|
private |
◆ m_timsDataDirectory
| QDir pappso::TimsData::m_timsDataDirectory |
|
private |
Definition at line 214 of file timsdata.h.
Referenced by TimsData(), extractXicListByPrecursorIds(), getPrecursorsFromMzRtCharge(), getQualifiedMassSpectrumByRawIndex(), getQualifiedMs1MassSpectrumByPrecursorId(), getQualifiedMs2MassSpectrumByPrecursorId(), getRawIndexFromCoordinate(), getScanCoordinateFromRawIndex(), getTimsFrameBaseCstSPtr(), getTimsFrameCstSPtr(), getTimsMS1FrameIdRange(), and openDatabaseConnection().
◆ m_timsFrameBaseCache
◆ m_timsFrameCache
◆ m_totalNumberOfPrecursors
| std::size_t pappso::TimsData::m_totalNumberOfPrecursors |
|
private |
◆ m_totalNumberOfScans
| std::size_t pappso::TimsData::m_totalNumberOfScans |
|
private |
◆ mcsp_ms1Filter
◆ mcsp_ms2Filter
◆ mpa_mzCalibrationStore
◆ mpa_timsBinDec
| TimsBinDec* pappso::TimsData::mpa_timsBinDec = nullptr |
|
private |
The documentation for this class was generated from the following files:
std::map< int, QSqlRecord > m_mapMzCalibrationRecord
pappso::FilterInterfaceCstSPtr mcsp_ms2Filter
std::size_t m_totalNumberOfPrecursors
pappso::FilterInterfaceCstSPtr mcsp_ms1Filter
std::deque< TimsFrameBaseCstSPtr > m_timsFrameBaseCache
TimsFrameBaseCstSPtr getTimsFrameBaseCstSPtrCached(std::size_t timsId)
std::shared_ptr< TimsFrame > TimsFrameSPtr
virtual MapTrace & combine(MapTrace &map_trace, const Trace &trace) const override
TimsFrameSPtr getTimsFrameSPtrByOffset(std::size_t timsId, std::size_t timsOffset) const
Class to represent a mass spectrum.
std::shared_ptr< const TimsFrameBase > TimsFrameBaseCstSPtr
void setParameterValue(QualifiedMassSpectrumParameter parameter, const QVariant &value)
void setMassSpectrumSPtr(MassSpectrumSPtr massSpectrum)
Set the MassSpectrumSPtr.
TimsFrameBaseCstSPtr getTimsFrameBaseCstSPtr(std::size_t timsId) const
get a Tims frame base (no binary data file access) with his database ID
std::vector< std::size_t > getClosestPrecursorIdByMz(std::vector< std::vector< double >> ids, double mz_value)
void setMsLevel(uint ms_level)
Set the mass spectrum level.
TimsFrameCstSPtr getTimsFrameCstSPtrCached(std::size_t timsId)
get a Tims frame with his database ID but look in the cache first
void setRtInSeconds(pappso_double rt)
Set the retention time in seconds.
A simple container of DataPoint instances.
Class representing a fully specified mass spectrum.
std::pair< std::size_t, std::size_t > getScanCoordinateFromRawIndex(std::size_t spectrum_index) const
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
void setPrecursorNativeId(const QString &native_id)
Set the scan native id of the precursor ion.
void appendPrecursorIonData(const PrecursorIonData &precursor_ion_data)
void setMassSpectrumId(const MassSpectrumId &iD)
Set the MassSpectrumId.
MzCalibrationInterfaceSPtr getInstance(double T1_frame, double T2_frame, const QSqlRecord &mzcalibration_record)
std::shared_ptr< TimsFrameBase > TimsFrameBaseSPtr
std::size_t m_totalNumberOfScans
TimsBinDec * mpa_timsBinDec
std::deque< TimsFrameCstSPtr > m_timsFrameCache
structure needed to extract XIC from Tims data
void setEmptyMassSpectrum(bool is_empty_mass_spectrum)
void setPrecursorSpectrumIndex(std::size_t precursor_scan_num)
Set the scan number of the precursor ion.
TimsFrameCstSPtr getTimsFrameCstSPtr(std::size_t timsId) const
get a Tims frame with his database ID
MzCalibrationStore * mpa_mzCalibrationStore
void setSpectrumIndex(std::size_t index)
void setDtInMilliSeconds(pappso_double rt)
Set the drift time in milliseconds.
void setNativeId(const QString &native_id)
std::size_t getRawIndexFromCoordinate(std::size_t frame_id, std::size_t scan_num) const
std::shared_ptr< const TimsFrame > TimsFrameCstSPtr
QSqlDatabase openDatabaseConnection() const
pappso::pappso_double rtTarget
bool m_builtinMs2Centroid
enable builtin centroid on raw tims integers by default
double setTriangleSlope(double intensity, double mz)