50 [[maybe_unused]] std::size_t spectrum_index)
53 QObject::tr(
"Not yet implemented in TimsFramesMsRunReader %1.\n")
69 bool want_binary_data)
const
75 getMsRunId(), mass_spectrum, spectrum_index, want_binary_data);
99 std::vector<std::size_t> subset_of_tims_frame_ids;
102 bool asked_ion_mobility_scan_num_range =
false;
104 quint32 mobility_scan_num_range_begin = std::numeric_limits<quint32>::max();
105 quint32 mobility_scan_num_range_end = std::numeric_limits<quint32>::max();
106 quint32 mobility_scan_num_range_width = std::numeric_limits<quint32>::max();
108 double mobility_one_over_k0 = std::numeric_limits<double>::max();
109 double mobility_one_over_k0_range_begin = std::numeric_limits<double>::max();
110 double mobility_one_over_k0_range_end = std::numeric_limits<double>::max();
121 mobility_scan_num_range_begin =
126 mobility_scan_num_range_end =
133 mobility_scan_num_range_width =
134 mobility_scan_num_range_end + 1 - mobility_scan_num_range_begin;
136 asked_ion_mobility_scan_num_range =
true;
142 const std::vector<FrameIdDescr> &frame_id_descr_list =
146 std::size_t scan_count = 0;
154 QObject::tr(
"Reading timsTOF data cancelled by the user."));
157 if(frame_record.frame_id == 0)
163 std::size_t ms_level = 2;
164 if(frame_record.msms_type == 0)
173 subset_of_tims_frame_ids.push_back(frame_record.frame_id);
175 if(mobility_scan_num_range_width != std::numeric_limits<int>::max())
177 scan_count += mobility_scan_num_range_width;
181 scan_count += frame_id_descr_list[frame_record.frame_id].m_scanCount;
186 std::size_t frame_count = subset_of_tims_frame_ids.size();
187 qDebug() <<
"The number of retained RT range- and MS level-matching frames : "
202 bool asked_mz_range =
false;
203 double mz_range_begin = -1;
204 double mz_range_end = -1;
208 asked_mz_range =
true;
225 std::size_t mz_index_merge_window = 0;
231 mz_index_merge_window =
242 std::size_t scan_index = 0;
244 for(std::size_t tims_frame_id : subset_of_tims_frame_ids)
250 QObject::tr(
"Reading timsTOF data cancelled by the user."));
256 frame_id_descr_list[tims_frame_id];
282 mobility_one_over_k0_range_begin =
288 mobility_one_over_k0_range_end =
294 mobility_scan_num_range_begin =
296 mobility_one_over_k0_range_begin);
298 mobility_scan_num_range_end =
300 mobility_one_over_k0_range_end);
302 asked_ion_mobility_scan_num_range =
true;
310 if(asked_ion_mobility_scan_num_range)
312 if(mobility_scan_num_range_end > (count_of_mobility_scans - 1))
314 mobility_scan_num_range_end = count_of_mobility_scans - 1;
319 mobility_scan_num_range_begin = 0;
320 mobility_scan_num_range_end = count_of_mobility_scans - 1;
327 if(mobility_one_over_k0_range_begin == std::numeric_limits<double>::max())
328 mobility_one_over_k0_range_begin =
330 mobility_scan_num_range_begin);
331 if(mobility_one_over_k0_range_end == std::numeric_limits<double>::max())
332 mobility_one_over_k0_range_end =
334 mobility_scan_num_range_end);
336 mobility_scan_num_range_width =
337 mobility_scan_num_range_end + 1 - mobility_scan_num_range_begin;
342 mobility_scan_num_range_begin + (mobility_scan_num_range_width / 2));
355 QString(
"frame_id=%1 global_scan_index=%2 im_scan_range_begin=%3 "
356 "im_scan_range_end=%4")
359 .arg(mobility_scan_num_range_begin)
360 .arg(mobility_scan_num_range_end));
371 unsigned int frame_ms_level = tims_frame_csp.get()->
getMsLevel();
372 qualified_mass_spectrum.
setMsLevel(frame_ms_level);
379 mobility_scan_num_range_begin + (mobility_scan_num_range_width / 2)));
382 qDebug() <<
"mobility_one_over_k0:" << mobility_one_over_k0
383 <<
"mobility_one_over_k0_range_begin:"
384 << mobility_one_over_k0_range_begin
385 <<
"mobility_one_over_k0_range_end"
386 << mobility_one_over_k0_range_end;
388 if(mobility_one_over_k0 == std::numeric_limits<double>::max() ||
389 mobility_one_over_k0_range_begin ==
390 std::numeric_limits<double>::max() ||
391 mobility_one_over_k0_range_end == std::numeric_limits<double>::max())
394 "range are undefined."));
400 mobility_one_over_k0_range_begin);
403 mobility_one_over_k0_range_end);
410 if(mobility_scan_num_range_begin == std::numeric_limits<quint32>::max() ||
411 mobility_scan_num_range_end == std::numeric_limits<quint32>::max())
413 "Not possible that mobility_scan_num_range values are undefined."));
417 mobility_scan_num_range_begin + (mobility_scan_num_range_width / 2));
420 mobility_scan_num_range_begin);
423 mobility_scan_num_range_end);
436 quint32 min_mz_index_out = 0;
437 quint32 max_mz_index_out = 0;
443 mz_index_merge_window,
446 mobility_scan_num_range_begin,
447 mobility_scan_num_range_end,
455 mz_index_merge_window,
456 mobility_scan_num_range_begin,
457 mobility_scan_num_range_end,
473 std::make_shared<MassSpectrum>(trace));
489 [[maybe_unused]]
unsigned int ms_level)
524 Trace tic_chromatogram;
526 const std::vector<FrameIdDescr> frame_descr_list =
533 std::size_t scan_begin = 0;
553 return tic_chromatogram;
void setNativeId(const QString &native_id)
void setMsRunId(MsRunIdCstSPtr other)
void setSpectrumIndex(std::size_t index)
bool needPeakList() const
const QVariant getParameterValue(MsRunReadConfigParameter parameter) const
bool acceptMsLevel(std::size_t ms_level) const
bool acceptRetentionTimeInSeconds(double retention_time_in_seconds) const
const MsRunIdCstSPtr & getMsRunId() const
Class representing a fully specified mass spectrum.
void setDtInMilliSeconds(pappso_double rt)
Set the drift time in milliseconds.
void setMassSpectrumId(const MassSpectrumId &iD)
Set the MassSpectrumId.
void setMsLevel(uint ms_level)
Set the mass spectrum level.
void setParameterValue(QualifiedMassSpectrumParameter parameter, const QVariant &value)
void setMassSpectrumSPtr(MassSpectrumSPtr massSpectrum)
Set the MassSpectrumSPtr.
void setRtInSeconds(pappso_double rt)
Set the retention time in seconds.
void setEmptyMassSpectrum(bool is_empty_mass_spectrum)
interface to collect spectrums from the MsRunReader class
virtual bool shouldStop()
virtual void spectrumListHasSize(std::size_t size)
virtual void setQualifiedMassSpectrum(const QualifiedMassSpectrum &spectrum)=0
std::size_t getTotalScanCount() const
const std::vector< TimsFrameRecord > & getTimsFrameRecordList() const
TimsFrameCstSPtr getTimsFrameCstSPtrCached(std::size_t timsId)
get a Tims frame with his database ID but look in the cache first
const std::vector< FrameIdDescr > & getFrameIdDescrList() const
void getQualifiedMassSpectrumByGlobalScanIndex(const MsRunIdCstSPtr &msrun_id, QualifiedMassSpectrum &mass_spectrum, std::size_t global_scan_index, bool want_binary_data)
pappso::MassSpectrumCstSPtr getMassSpectrumCstSPtrByGlobalScanIndex(std::size_t index)
virtual std::size_t getTotalNumberOfScans() const
get the number of scans contained in this frame each scan represents an ion mobility slice
double getDriftTimeInMilliseconds(std::size_t scan_index) const
get drift time of a scan number in milliseconds
std::size_t getScanIndexFromOneOverK0(double one_over_k0) const
get the scan number from a given 1/Ko mobility value
double getRtInSeconds() const
unsigned int getMsLevel() const
double getOneOverK0Transformation(std::size_t scan_index) const
get 1/K0 value of a given scan (mobility value)
virtual Trace combineScansToTraceWithDowngradedMzResolution(std::size_t mzindex_merge_window, std::size_t scanNumBegin, std::size_t scanNumEnd, quint32 &mz_minimum_index, quint32 &mz_maximum_index) const override
cumulate spectrum given a scan number range need the binary file The intensities are normalized with ...
virtual quint64 cumulateScanRangeIntensities(std::size_t scanNumBegin, std::size_t scanNumEnd) const override
...
virtual Trace combineScansToTraceWithDowngradedMzResolution2(std::size_t mz_index_merge_window, double mz_range_begin, double mz_range_end, std::size_t mobility_scan_begin, std::size_t mobility_scan_end, quint32 &mz_minimum_index_out, quint32 &mz_maximum_index_out) const override
cumulate spectrum given a scan number range need the binary file The intensities are normalized with ...
virtual std::size_t spectrumListSize() const override
get the totat number of spectrum conained in the MSrun data file
virtual void readSpectrumCollection(SpectrumCollectionHandlerInterface &handler) override
function to visit an MsRunReader and get each Spectrum in a spectrum collection handler
virtual MassSpectrumCstSPtr massSpectrumCstSPtr(std::size_t spectrum_index) override
virtual QualifiedMassSpectrum qualifiedMassSpectrum(std::size_t spectrum_index, bool want_binary_data=true) const override
get a QualifiedMassSpectrum class given its scan number
virtual MassSpectrumSPtr massSpectrumSPtr(std::size_t spectrum_index) override
get a MassSpectrumSPtr class given its spectrum index
virtual void readSpectrumCollection2(const MsRunReadConfig &config, SpectrumCollectionHandlerInterface &handler) override
virtual Trace computeTicChromatogram()
virtual ~TimsFramesMsRunReader()
TimsFramesMsRunReader(MsRunIdCstSPtr &msrun_id_csp)
virtual void readSpectrumCollectionByMsLevel(SpectrumCollectionHandlerInterface &handler, unsigned int ms_level) override
function to visit an MsRunReader and get each Spectrum in a spectrum collection handler by Ms Levels
A simple container of DataPoint instances.
size_t append(const DataPoint &data_point)
appends a datapoint and return new size
process interrupted exception
tries to keep as much as possible monoisotopes, removing any possible C13 peaks and changes multichar...
std::shared_ptr< const MsRunId > MsRunIdCstSPtr
std::shared_ptr< const MassSpectrum > MassSpectrumCstSPtr
@ TimsFrameIonMobScanIndexBegin
@ TimsFrameIonMobScanIndexEnd
@ TimsFrameMzIndexBegin
Bruker's timsTOF mz index frame start range.
@ IonMobOneOverK0Begin
1/K0 range's begin value
@ IonMobOneOverK0End
1/K0 range's end value
@ TimsFrameScansCount
Bruker's timsTOF frame's total ion mobility slots.
@ TimsFrameMzIndexEnd
Bruker's timsTOF mz index frame end range.
@ IonMobOneOverK0
1/kO value
std::shared_ptr< MassSpectrum > MassSpectrumSPtr
std::shared_ptr< const TimsFrame > TimsFrameCstSPtr
@ TimsFrameIonMobOneOverK0Begin
@ TimsFrameIonMobOneOverK0End
@ TimsFrameIonMobScanIndexBegin
@ TimsFrameMzIndexMergeWindow
@ TimsFrameIonMobScanIndexEnd
std::size_t m_globalScanIndex
handle specific data for DDA MS runs