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) |
|
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...
|
|
- Todo:
- write docs
Definition at line 64 of file timsdata.h.
◆ TimsData() [1/2]
TimsData::TimsData |
( |
QDir |
timsDataDirectory | ) |
|
build using the tims data directory
Definition at line 45 of file timsdata.cpp.
49 qDebug() << __FILE__ <<
" " << __FUNCTION__ <<
" " << __LINE__;
53 QObject::tr(
"ERROR TIMS data directory %1 not found")
61 QObject::tr(
"ERROR TIMS data directory, %1 sqlite file not found")
70 if(!q.exec(
"select Key, Value from GlobalMetadata where "
71 "Key='TimsCompressionType';"))
76 QObject::tr(
"ERROR in TIMS sqlite database file %1, executing SQL "
77 "command %2:\n%3\n%4\n%5")
80 .arg(q.lastError().databaseText())
81 .arg(q.lastError().driverText())
82 .arg(q.lastError().nativeErrorCode()));
86 int compression_type = 0;
89 compression_type = q.value(1).toInt();
91 qDebug() << __FILE__ <<
" " << __FUNCTION__ <<
" " << __LINE__
92 <<
" compression_type=" << compression_type;
99 if(!q.exec(
"SELECT COUNT( DISTINCT Id) FROM Precursors;"))
103 QObject::tr(
"ERROR in TIMS sqlite database file %1, executing SQL "
104 "command %2:\n%3\n%4\n%5")
107 .arg(qdb.lastError().databaseText())
108 .arg(qdb.lastError().driverText())
109 .arg(qdb.lastError().nativeErrorCode()));
118 if(!q.exec(
"SELECT SUM(NumScans) FROM Frames"))
122 QObject::tr(
"ERROR in TIMS sqlite database file %1, executing SQL "
123 "command %2:\n%3\n%4\n%5")
126 .arg(qdb.lastError().databaseText())
127 .arg(qdb.lastError().driverText())
128 .arg(qdb.lastError().nativeErrorCode()));
143 std::shared_ptr<pappso::FilterPseudoCentroid> ms2filter =
144 std::make_shared<pappso::FilterPseudoCentroid>(20000, 0.05, 0.5, 0.1);
148 std::shared_ptr<FilterTriangle> ms1filter =
149 std::make_shared<FilterTriangle>();
References m_timsDataDirectory, m_totalNumberOfPrecursors, m_totalNumberOfScans, mcsp_ms1Filter, mcsp_ms2Filter, 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 1219 of file timsdata.cpp.
1227 std::vector<TimsXicStructure> xic_list;
1233 for(
auto precursor_id : precursor_id_list)
1235 QSqlQuery q = qdb.exec(
1236 QString(
"SELECT Frames.Time, "
1237 "PasefFrameMsMsInfo.Frame,PasefFrameMsMsInfo.ScanNumBegin,"
1238 "PasefFrameMsMsInfo.ScanNumEnd, Precursors.MonoisotopicMz, "
1239 "Precursors.Charge FROM "
1240 "PasefFrameMsMsInfo INNER JOIN Precursors ON "
1241 "PasefFrameMsMsInfo.Precursor=Precursors.Id INNER JOIN "
1242 "Frames ON PasefFrameMsMsInfo.Frame=Frames.Id where "
1243 "Precursors.Id=%1;")
1244 .arg(precursor_id));
1245 if(q.lastError().isValid())
1250 "ERROR in TIMS sqlite database file %1, executing SQL "
1251 "command %2:\n%3\n%4\n%5")
1254 .arg(qdb.lastError().databaseText())
1255 .arg(qdb.lastError().driverText())
1256 .arg(qdb.lastError().nativeErrorCode()));
1269 MzRange(q.value(4).toDouble(), precision_ptr);
1271 xic_structure.
scanNumEnd = q.value(3).toUInt();
1272 xic_structure.
rtTarget = q.value(0).toDouble();
1275 xic_list.push_back(xic_structure);
1284 catch(std::exception &error)
1286 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().
◆ getClosestIdByMz()
std::vector< std::size_t > TimsData::getClosestIdByMz |
( |
std::vector< std::vector< double >> |
ids, |
|
|
double |
mz_value |
|
) |
| |
|
private |
Definition at line 642 of file timsdata.cpp.
645 std::vector<std::size_t> best_precursor;
646 double best_value = 1;
648 int best_val_position;
650 for(std::vector<double> values : ids)
652 double new_val = abs(mz_value - values[4]);
653 if(new_val < best_value)
655 best_value = new_val;
656 best_val_position = count;
660 best_precursor.push_back(ids[best_val_position][1]);
661 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 616 of file timsdata.cpp.
619 std::vector<std::size_t> precursor_id;
620 for(std::vector<double> index : ids)
627 double bko = tims_frame.get()->getOneOverK0Transformation(index[2]);
628 double eko = tims_frame.get()->getOneOverK0Transformation(index[3]);
630 qInfo() <<
"diff" << (bko + eko) / 2;
631 double mean_ko = (bko + eko) / 2;
633 if(mean_ko > ko_value - 0.1 && mean_ko < ko_value + 0.1)
635 precursor_id.push_back(index[1]);
References getScanCoordinateFromRawIndex(), and getTimsFrameBaseCstSPtrCached().
◆ 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 537 of file timsdata.cpp.
542 std::vector<std::size_t> precursor_ids;
543 std::vector<std::vector<double>> ids;
546 QSqlQuery q = qdb.exec(
548 "SELECT Frames.time, Precursors.MonoisotopicMz, Precursors.Charge, "
549 "Precursors.Id, Frames.Id, PasefFrameMsMsInfo.ScanNumBegin, "
550 "PasefFrameMsMsInfo.scanNumEnd "
552 "INNER JOIN PasefFrameMsMsInfo ON Frames.Id = PasefFrameMsMsInfo.Frame "
553 "INNER JOIN Precursors ON PasefFrameMsMsInfo.Precursor = Precursors.Id "
554 "WHERE Precursors.Charge == %1 "
555 "AND Precursors.MonoisotopicMz > %2 -0.01 "
556 "AND Precursors.MonoisotopicMz < %2 +0.01 "
557 "AND Frames.Time >= %3 "
558 "AND Frames.Time < %3 +1; ")
562 if(q.lastError().isValid())
566 QObject::tr(
"ERROR in TIMS sqlite database file %1, database name %2, "
568 "command %3:\n%4\n%5\n%6")
570 .arg(qdb.databaseName())
572 .arg(qdb.lastError().databaseText())
573 .arg(qdb.lastError().driverText())
574 .arg(qdb.lastError().nativeErrorCode()));
578 qInfo() << q.value(0).toDouble() << q.value(1).toDouble()
579 << q.value(2).toDouble() << q.value(3).toDouble();
581 std::vector<double> sql_values;
582 sql_values.push_back(q.value(4).toDouble());
583 sql_values.push_back(q.value(3).toDouble());
584 sql_values.push_back(q.value(5).toDouble());
585 sql_values.push_back(q.value(6).toDouble());
586 sql_values.push_back(q.value(1).toDouble());
588 ids.push_back(sql_values);
591 if(std::find(precursor_ids.begin(),
593 q.value(3).toDouble()) == precursor_ids.end())
595 precursor_ids.push_back(q.value(3).toDouble());
599 if(precursor_ids.size() > 1)
603 if(precursor_ids.size() > 1)
607 return precursor_ids;
611 return precursor_ids;
References getClosestIdByMz(), m_timsDataDirectory, and openDatabaseConnection().
◆ getQualifiedMassSpectrumByRawIndex()
QualifiedMassSpectrum TimsData::getQualifiedMassSpectrumByRawIndex |
( |
std::size_t |
spectrum_index, |
|
|
bool |
want_binary_data |
|
) |
| |
Definition at line 675 of file timsdata.cpp.
692 spectrum_id.
setNativeId(QString(
"frame=%1 scan=%2 index=%3")
693 .arg(coordinate.first)
694 .arg(coordinate.second)
695 .arg(spectrum_index));
699 mass_spectrum.
setMsLevel(tims_frame.get()->getMsLevel());
703 tims_frame.get()->getDriftTime(coordinate.second));
706 QualifiedMassSpectrumParameter::OneOverK0,
707 tims_frame.get()->getOneOverK0Transformation(coordinate.second));
713 tims_frame.get()->getMassSpectrumSPtr(coordinate.second));
714 if(mass_spectrum.
size() > 0)
726 if(tims_frame.get()->getMsLevel() > 1)
730 QSqlQuery q = qdb.exec(
732 "SELECT PasefFrameMsMsInfo.*, Precursors.* FROM "
733 "PasefFrameMsMsInfo INNER JOIN Precursors ON "
734 "PasefFrameMsMsInfo.Precursor=Precursors.Id where "
735 "PasefFrameMsMsInfo.Frame=%1 and (PasefFrameMsMsInfo.ScanNumBegin "
736 "<= %2 and PasefFrameMsMsInfo.ScanNumEnd >= %2);")
737 .arg(coordinate.first)
738 .arg(coordinate.second));
739 if(q.lastError().isValid())
742 QObject::tr(
"ERROR in TIMS sqlite database file %1, executing SQL "
743 "command %2:\n%3\n%4\n%5")
746 .arg(qdb.lastError().databaseText())
747 .arg(qdb.lastError().driverText())
748 .arg(qdb.lastError().nativeErrorCode()));
760 q.value(13).toDouble()));
765 q.value(14).toDouble(), coordinate.second);
769 QString(
"frame=%1 scan=%2 index=%3")
770 .arg(q.value(14).toDouble())
771 .arg(coordinate.second)
772 .arg(prec_spectrum_index));
775 QualifiedMassSpectrumParameter::IsolationMz, q.value(3).toDouble());
777 QualifiedMassSpectrumParameter::IsolationWidth,
778 q.value(4).toDouble());
781 QualifiedMassSpectrumParameter::CollisionEnergy,
782 q.value(5).toFloat());
784 QualifiedMassSpectrumParameter::BrukerPrecursorIndex,
789 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 794 of file timsdata.cpp.
807 qdb.exec(QString(
"SELECT PasefFrameMsMsInfo.*, Precursors.* FROM "
808 "PasefFrameMsMsInfo INNER JOIN Precursors ON "
809 "PasefFrameMsMsInfo.Precursor=Precursors.Id where "
811 .arg(precursor_index));
812 if(q.lastError().isValid())
816 QObject::tr(
"ERROR in TIMS sqlite database file %1, executing SQL "
817 "command %2:\n%3\n%4\n%5")
820 .arg(qdb.lastError().databaseText())
821 .arg(qdb.lastError().driverText())
822 .arg(qdb.lastError().nativeErrorCode()));
829 "ERROR in getQualifiedMassSpectrumByPrecursorId, precursor "
831 .arg(precursor_index));
840 std::size_t scan_mobility_start = 0;
841 std::size_t scan_mobility_end = 0;
842 std::set<std::size_t> tims_frame_list;
846 tims_frame_list.insert(q.value(14).toLongLong());
855 QString(
"frame=%1 begin=%2 end=%3 precursor=%4 idxms2=%5")
856 .arg(q.value(0).toLongLong())
857 .arg(q.value(1).toLongLong())
858 .arg(q.value(2).toLongLong())
859 .arg(precursor_index)
866 scan_mobility_start = q.value(1).toLongLong();
867 scan_mobility_end = q.value(2).toLongLong();
874 for(std::size_t tims_id : tims_frame_list)
883 QualifiedMassSpectrumParameter::OneOverK0begin,
884 tims_frame.get()->getOneOverK0Transformation(
885 scan_mobility_start));
888 QualifiedMassSpectrumParameter::OneOverK0end,
889 tims_frame.get()->getOneOverK0Transformation(
898 combiner.
combine(combiner_result,
899 tims_frame.get()->cumulateScanToTrace(
900 scan_mobility_start, scan_mobility_end));
913 "ERROR in getQualifiedMassSpectrumByPrecursorId, precursor "
915 .arg(precursor_index));
945 catch(std::exception &error)
947 qDebug() << __FILE__ <<
"@" << __LINE__ << __FUNCTION__ <<
"()"
948 << QString(
"Failure %1 ").arg(error.what());
950 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::TimsMsRunReaderMs2::qualifiedMassSpectrum(), and 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 955 of file timsdata.cpp.
969 QString(
"precursor=%1 idxms2=%2").arg(precursor_index).arg(ms2_index));
991 qdb.exec(QString(
"SELECT PasefFrameMsMsInfo.*, Precursors.* FROM "
992 "PasefFrameMsMsInfo INNER JOIN Precursors ON "
993 "PasefFrameMsMsInfo.Precursor=Precursors.Id where "
995 .arg(precursor_index));
996 if(q.lastError().isValid())
1000 QObject::tr(
"ERROR in TIMS sqlite database file %1, executing SQL "
1001 "command %2:\n%3\n%4\n%5")
1004 .arg(qdb.lastError().databaseText())
1005 .arg(qdb.lastError().driverText())
1006 .arg(qdb.lastError().nativeErrorCode()));
1015 "ERROR in getQualifiedMassSpectrumByPrecursorId, precursor "
1017 .arg(precursor_index));
1024 std::size_t scan_mobility_start = 0;
1025 std::size_t scan_mobility_end = 0;
1026 std::vector<std::size_t> tims_frame_list;
1030 tims_frame_list.push_back(q.value(0).toLongLong());
1039 q.value(11).toInt(),
1040 q.value(13).toDouble()));
1043 QString(
"frame=%1 begin=%2 end=%3 precursor=%4 idxms2=%5")
1044 .arg(q.value(14).toLongLong())
1045 .arg(q.value(1).toLongLong())
1046 .arg(q.value(2).toLongLong())
1047 .arg(precursor_index)
1048 .arg(ms2_index - 1));
1051 scan_mobility_start = q.value(1).toLongLong();
1052 scan_mobility_end = q.value(2).toLongLong();
1055 QualifiedMassSpectrumParameter::IsolationMz,
1056 q.value(3).toDouble());
1058 QualifiedMassSpectrumParameter::IsolationWidth,
1059 q.value(4).toDouble());
1062 QualifiedMassSpectrumParameter::CollisionEnergy,
1063 q.value(5).toFloat());
1065 QualifiedMassSpectrumParameter::BrukerPrecursorIndex,
1066 q.value(6).toInt());
1077 for(std::size_t tims_id : tims_frame_list)
1086 QualifiedMassSpectrumParameter::OneOverK0begin,
1087 tims_frame.get()->getOneOverK0Transformation(
1088 scan_mobility_start));
1091 QualifiedMassSpectrumParameter::OneOverK0end,
1092 tims_frame.get()->getOneOverK0Transformation(
1093 scan_mobility_end));
1099 if(want_binary_data)
1102 combiner.
combine(combiner_result,
1103 tims_frame.get()->cumulateScanToTrace(
1104 scan_mobility_start, scan_mobility_end));
1108 qDebug() <<
" precursor_index=" << precursor_index
1109 <<
" num_rows=" << tims_frame_list.size()
1110 <<
" sql=" << q.lastQuery() <<
" "
1111 << (std::size_t)QThread::currentThreadId();
1116 "ERROR in getQualifiedMassSpectrumByPrecursorId, precursor "
1118 .arg(precursor_index));
1120 if(want_binary_data)
1127 if(trace.size() > 0)
1129 qDebug() << trace.size() <<
" "
1130 << (std::size_t)QThread::currentThreadId();
1160 catch(std::exception &error)
1162 qDebug() << __FILE__ <<
"@" << __LINE__ << __FUNCTION__ <<
"()"
1163 << QString(
"Failure %1 ").arg(error.what());
References pappso::QualifiedMassSpectrum::appendPrecursorIonData(), pappso::TracePlusCombiner::combine(), getTimsFrameCstSPtrCached(), 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::TimsMsRunReaderMs2::qualifiedMassSpectrum(), and pappso::TimsMsRunReaderMs2Selected::qualifiedMassSpectrum().
◆ getRawIndexFromCoordinate()
std::size_t TimsData::getRawIndexFromCoordinate |
( |
std::size_t |
frame_id, |
|
|
std::size_t |
scan_num |
|
) |
| const |
|
private |
Definition at line 245 of file timsdata.cpp.
252 qdb.exec(QString(
"SELECT Id, NumScans FROM "
253 "Frames ORDER BY Id"));
254 if(q.lastError().isValid())
258 QObject::tr(
"ERROR in TIMS sqlite database file %1, executing SQL "
259 "command %2:\n%3\n%4\n%5")
262 .arg(qdb.lastError().databaseText())
263 .arg(qdb.lastError().driverText())
264 .arg(qdb.lastError().nativeErrorCode()));
266 bool index_found =
false;
268 std::size_t numberScans;
269 std::size_t offset = 0;
270 while(q.next() && (!index_found))
272 timsId = q.value(0).toUInt();
273 numberScans = q.value(1).toUInt();
275 if(timsId == frame_id)
277 return offset + scan_num;
280 offset += numberScans;
284 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 200 of file timsdata.cpp.
206 qdb.exec(QString(
"SELECT Id, NumScans FROM "
207 "Frames ORDER BY Id"));
208 if(q.lastError().isValid())
212 QObject::tr(
"ERROR in TIMS sqlite database file %1, executing SQL "
213 "command %2:\n%3\n%4\n%5")
216 .arg(qdb.lastError().databaseText())
217 .arg(qdb.lastError().driverText())
218 .arg(qdb.lastError().nativeErrorCode()));
221 bool index_found =
false;
223 std::size_t numberScans;
224 std::size_t offset = 0;
225 while(q.next() && (!index_found))
227 timsId = q.value(0).toUInt();
228 numberScans = q.value(1).toUInt();
230 if(raw_index < (offset + numberScans))
232 return std::pair<std::size_t, std::size_t>(timsId,
236 offset += numberScans;
240 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 303 of file timsdata.cpp.
306 qDebug() <<
" timsId=" << timsId;
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 "
325 if(q.lastError().isValid())
329 QObject::tr(
"ERROR in TIMS sqlite database file %1, database name %2, "
331 "command %3:\n%4\n%5\n%6")
333 .arg(qdb.databaseName())
335 .arg(qdb.lastError().databaseText())
336 .arg(qdb.lastError().driverText())
337 .arg(qdb.lastError().nativeErrorCode()));
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();
349 double T1_frame = q.value(12).toDouble();
350 double T2_frame = q.value(13).toDouble();
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);
357 tims_frame = std::make_shared<TimsFrameBase>(
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());
368 tims_frame.get()->setAccumulationTime(q.value(1).toDouble());
370 tims_frame.get()->setTime(q.value(14).toDouble());
371 tims_frame.get()->setMsMsType(q.value(15).toUInt());
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());
References m_timsDataDirectory, and openDatabaseConnection().
Referenced by getTimsFrameBaseCstSPtrCached().
◆ getTimsFrameBaseCstSPtrCached()
◆ getTimsFrameCstSPtr()
get a Tims frame with his database ID
Definition at line 426 of file timsdata.cpp.
429 qDebug() <<
" timsId=" << timsId;
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 "
448 if(q.lastError().isValid())
452 QObject::tr(
"ERROR in TIMS sqlite database file %1, database name %2, "
454 "command %3:\n%4\n%5\n%6")
456 .arg(qdb.databaseName())
458 .arg(qdb.lastError().databaseText())
459 .arg(qdb.lastError().driverText())
460 .arg(qdb.lastError().nativeErrorCode()));
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();
472 double T1_frame = q.value(12).toDouble();
473 double T2_frame = q.value(13).toDouble();
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);
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());
491 tims_frame.get()->setAccumulationTime(q.value(1).toDouble());
493 tims_frame.get()->setTime(q.value(14).toDouble());
494 tims_frame.get()->setMsMsType(q.value(15).toUInt());
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());
References pappso::TimsBinDec::getTimsFrameSPtrByOffset(), m_timsDataDirectory, 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 392 of file timsdata.cpp.
395 qDebug() <<
" rt_begin=" << rt_begin <<
" rt_end=" << rt_end;
396 std::vector<std::size_t> tims_frameid_list;
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;")
403 if(q.lastError().isValid())
407 QObject::tr(
"ERROR in TIMS sqlite database file %1, database name %2, "
409 "command %3:\n%4\n%5\n%6")
411 .arg(qdb.databaseName())
413 .arg(qdb.lastError().databaseText())
414 .arg(qdb.lastError().driverText())
415 .arg(qdb.lastError().nativeErrorCode()));
420 tims_frameid_list.push_back(q.value(0).toUInt());
422 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 155 of file timsdata.cpp.
157 QString database_connection_name = QString(
"%1_%2")
159 .arg((quintptr)QThread::currentThread());
161 QSqlDatabase qdb = QSqlDatabase::database(database_connection_name);
164 qDebug() << database_connection_name;
165 qdb = QSqlDatabase::addDatabase(
"QSQLITE", database_connection_name);
174 QObject::tr(
"ERROR opening TIMS sqlite database file %1, database name "
177 .arg(database_connection_name)
178 .arg(qdb.lastError().databaseText())
179 .arg(qdb.lastError().driverText())
180 .arg(qdb.lastError().nativeErrorCode()));
References m_timsDataDirectory.
Referenced by TimsData(), extractXicListByPrecursorIds(), getPrecursorsFromMzRtCharge(), getQualifiedMassSpectrumByRawIndex(), getQualifiedMs1MassSpectrumByPrecursorId(), getQualifiedMs2MassSpectrumByPrecursorId(), getRawIndexFromCoordinate(), getScanCoordinateFromRawIndex(), getTimsFrameBaseCstSPtr(), getTimsFrameCstSPtr(), and getTimsMS1FrameIdRange().
◆ setMs1FilterCstSPtr()
◆ setMs2FilterCstSPtr()
◆ m_cacheSize
std::size_t pappso::TimsData::m_cacheSize = 60 |
|
private |
◆ m_mutex
QMutex pappso::TimsData::m_mutex |
|
private |
◆ m_timsDataDirectory
QDir pappso::TimsData::m_timsDataDirectory |
|
private |
Definition at line 187 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_timsBinDec
TimsBinDec* pappso::TimsData::mpa_timsBinDec = nullptr |
|
private |
The documentation for this class was generated from the following files:
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::vector< std::size_t > getClosestIdByMz(std::vector< std::vector< double >> ids, double mz_value)
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
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.
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
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
double setTriangleSlope(double intensity, double mz)