29#include "../../exception/exceptionnotimplemented.h"
30#include "../../exception/exceptioninterrupted.h"
53 throw PappsoException(QObject::tr(
"ERROR in TimsMsRunReader::initialize "
54 "msp_timsData is null for MsRunId %1")
63 qDebug() << file_name;
72 QObject::tr(
"Not yet implemented in TimsMsRunReader %1.\n").arg(__LINE__));
80 return msp_timsData->getMassSpectrumCstSPtrByRawIndex(spectrum_index);
86 bool want_binary_data)
const
92 getMsRunId(), mass_spectrum, spectrum_index, want_binary_data);
109 qDebug().noquote() <<
"Reading the spectrum collection with this "
110 "specific configuration:"
113 std::vector<std::size_t> subset_of_tims_frame_ids;
115 bool asked_ion_mobility_scan_num_range =
false;
117 quint32 mobility_scan_num_range_begin =
118 std::numeric_limits<quint32>::quiet_NaN();
119 quint32 mobility_scan_num_range_end =
120 std::numeric_limits<quint32>::quiet_NaN();
121 quint32 mobility_scan_num_range_width =
122 std::numeric_limits<quint32>::quiet_NaN();
124 double mobility_one_over_k0_range_begin =
125 std::numeric_limits<double>::quiet_NaN();
126 double mobility_one_over_k0_range_end =
127 std::numeric_limits<double>::quiet_NaN();
138 mobility_scan_num_range_begin =
143 mobility_scan_num_range_end =
150 mobility_scan_num_range_width =
151 mobility_scan_num_range_end + 1 - mobility_scan_num_range_begin;
153 asked_ion_mobility_scan_num_range =
true;
159 const std::vector<FrameIdDescr> &frame_id_descr_list =
163 std::size_t scan_count = 0;
165 for(
auto const &frame_record :
msp_timsData->getTimsFrameRecordList())
171 QObject::tr(
"Reading timsTOF data cancelled by the user."));
174 if(frame_record.frame_id == 0)
180 std::size_t ms_level = 2;
181 if(frame_record.msms_type == 0)
187 subset_of_tims_frame_ids.push_back(frame_record.frame_id);
189 if(mobility_scan_num_range_width)
191 scan_count += mobility_scan_num_range_width;
195 scan_count += frame_id_descr_list[frame_record.frame_id].m_size;
200 std::size_t frame_count = subset_of_tims_frame_ids.size();
201 qDebug() <<
"The number of retained RT range- and MS level-matching frames : "
209 double mz_range_begin = -1;
210 double mz_range_end = -1;
232 std::size_t mz_index_merge_window = 0;
238 mz_index_merge_window =
247 std::size_t number_of_mobility_scans_set_as_qualified_mass_spectra = 0;
249 for(std::size_t tims_frame_id : subset_of_tims_frame_ids)
255 QObject::tr(
"Reading timsTOF data cancelled by the user."));
261 frame_id_descr_list[tims_frame_id];
281 mobility_one_over_k0_range_begin =
287 mobility_one_over_k0_range_end =
293 mobility_scan_num_range_begin =
294 tims_frame_csp.get()->getScanNumFromOneOverK0(
295 mobility_one_over_k0_range_begin);
297 mobility_scan_num_range_end =
298 tims_frame_csp.get()->getScanNumFromOneOverK0(
299 mobility_one_over_k0_range_end);
301 asked_ion_mobility_scan_num_range =
true;
308 quint32 count_of_mobility_scans = tims_frame_csp->getTotalNumberOfScans();
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;
339 unsigned int frame_ms_level = tims_frame_csp.get()->getMsLevel();
344 std::size_t scan_index = current_frame_record.
m_cumulSize -
345 current_frame_record.
m_size +
346 mobility_scan_num_range_begin;
348 for(quint32 iter_scan_index = mobility_scan_num_range_begin;
349 iter_scan_index <= mobility_scan_num_range_end;
355 QString(
"frame_id=%1 scan_index=%2 global_scan_index=%3")
357 .arg(iter_scan_index)
364 quint32 mz_minimum_index_out = 0;
365 quint32 mz_maximum_index_out = 0;
368 tims_frame_csp.get()->getMobilityScan(iter_scan_index,
369 mz_index_merge_window,
372 mz_minimum_index_out,
373 mz_maximum_index_out);
382 mz_minimum_index_out);
385 mz_maximum_index_out);
392 tims_frame_csp.get()->getDriftTime(iter_scan_index));
396 tims_frame_csp.get()->getOneOverK0Transformation(
401 std::make_shared<MassSpectrum>(raw_trace));
412 ++number_of_mobility_scans_set_as_qualified_mass_spectra;
417 qDebug() <<
"Total number of loaded mass spectra:"
418 << number_of_mobility_scans_set_as_qualified_mass_spectra;
431 msp_timsData.get()->rawReaderSpectrumCollectionByMsLevel(
437 qDebug() <<
"Reading of MS data interrupted by the user.";
485 [[maybe_unused]])
const
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
base class to read MSrun the only way to build a MsRunReader object is to use the MsRunReaderFactory
MsRunIdCstSPtr mcsp_msRunId
const MsRunIdCstSPtr & getMsRunId() const
Class representing a fully specified mass spectrum.
void setDtInMilliSeconds(pappso_double rt)
Set the drift time in milliseconds.
const MassSpectrumId & getMassSpectrumId() const
Get the MassSpectrumId.
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 loadingEnded()
virtual void spectrumListHasSize(std::size_t size)
virtual void setQualifiedMassSpectrum(const QualifiedMassSpectrum &spectrum)=0
TimsMsRunReader(MsRunIdCstSPtr &msrun_id_csp)
virtual void readSpectrumCollection2(const MsRunReadConfig &config, SpectrumCollectionHandlerInterface &handler) override
virtual void readSpectrumCollection(SpectrumCollectionHandlerInterface &handler) override
function to visit an MsRunReader and get each Spectrum in a spectrum collection handler
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
virtual MassSpectrumCstSPtr massSpectrumCstSPtr(std::size_t spectrum_index) override
virtual MassSpectrumSPtr massSpectrumSPtr(std::size_t spectrum_index) override
get a MassSpectrumSPtr class given its spectrum index
virtual bool hasScanNumbers() const override
tells if spectra can be accessed using scan numbers by default, it returns false. Only overrided func...
virtual pappso::XicCoordSPtr newXicCoordSPtrFromSpectrumIndex(std::size_t spectrum_index, pappso::PrecisionPtr precision) const override
get a xic coordinate object from a given spectrum index
virtual QualifiedMassSpectrum qualifiedMassSpectrum(std::size_t spectrum_index, bool want_binary_data=true) const override
get a QualifiedMassSpectrum class given its scan number
virtual bool releaseDevice() override
release data back end device if a the data back end is released, the developper has to use acquireDev...
virtual bool acquireDevice() override
acquire data back end device
virtual bool accept(const QString &file_name) const override
tells if the reader is able to handle this file must be implemented by private MS run reader,...
virtual TimsDataSp getTimsDataSPtr()
give an access to the underlying raw data pointer
virtual void initialize() override
virtual std::size_t spectrumListSize() const override
get the totat number of spectrum conained in the MSrun data file
virtual pappso::XicCoordSPtr newXicCoordSPtrFromQualifiedMassSpectrum(const pappso::QualifiedMassSpectrum &mass_spectrum, pappso::PrecisionPtr precision) const override
get a xic coordinate object from a given spectrum
virtual ~TimsMsRunReader()
virtual Trace getTicChromatogram() override
get a TIC chromatogram
A simple container of DataPoint instances.
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< TimsData > TimsDataSp
shared pointer on a TimsData object
std::shared_ptr< const MassSpectrum > MassSpectrumCstSPtr
@ TimsIonMobScanOneOverK0
1/kO of a simple scan
@ TimsFrameMzIndexBegin
Bruker's timsTOF mz index frame start range.
@ TimsFrameMzIndexEnd
Bruker's timsTOF mz index frame end range.
std::shared_ptr< MassSpectrum > MassSpectrumSPtr
std::shared_ptr< const TimsFrame > TimsFrameCstSPtr
@ TimsFrameIonMobOneOverK0Begin
@ TimsFrameIonMobOneOverK0End
@ TimsFrameIonMobScanIndexBegin
@ TimsFrameMzIndexMergeWindow
@ TimsFrameIonMobScanIndexEnd
std::shared_ptr< XicCoord > XicCoordSPtr
MSrun file reader for native Bruker TimsTOF raw data.