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:"
118 std::vector<std::size_t> subset_of_tims_frame_ids;
121 bool asked_ion_mobility_range =
false;
122 quint32 mobility_scan_num_begin = 0;
123 quint32 mobility_scan_num_end = 0;
130 asked_ion_mobility_range =
true;
132 mobility_scan_num_begin =
137 mobility_scan_num_end =
150 const std::vector<FrameIdDescr> &frame_id_descr_list =
158 std::size_t scan_count = 0;
159 for(
auto const &frame_record :
msp_timsData->getTimsFrameRecordList())
161 if(frame_record.frame_id == 0)
166 std::size_t ms_level = 2;
167 if(frame_record.msms_type == 0)
171 subset_of_tims_frame_ids.push_back(frame_record.frame_id);
173 if(mobility_scan_num_end == 0)
176 frame_id_descr_list[frame_record.frame_id].m_size;
181 mobility_scan_num_end + 1 - mobility_scan_num_begin;
193 std::size_t mz_index_merge_window = 0;
199 mz_index_merge_window =
205 qDebug() <<
"mz_index_merge_window=" << mz_index_merge_window;
209 bool asked_mz_range =
false;
210 double mz_range_begin = -1;
211 double mz_range_end = -1;
218 asked_mz_range =
true;
226 mz_range_end = config
231 qDebug() <<
"The m/z range asked is: " << mz_range_begin <<
"--"
238 std::size_t scan_index = 0;
240 for(std::size_t tims_frame_id : subset_of_tims_frame_ids)
242 qDebug() <<
"tims_frame_id=" << tims_frame_id;
244 frame_id_descr_list[tims_frame_id];
245 qDebug() <<
"tims_frame_id=" << tims_frame_id;
249 qDebug() <<
"tims_frame_id=" << tims_frame_id;
261 asked_ion_mobility_range =
true;
263 mobility_scan_num_begin =
264 tims_frame_csp.get()->getScanNumFromOneOverK0(
271 mobility_scan_num_end = tims_frame_csp.get()->getScanNumFromOneOverK0(
288 asked_ion_mobility_range =
true;
290 mobility_scan_num_begin =
296 mobility_scan_num_end =
303 qDebug() <<
"tims_frame_id=" << tims_frame_id;
308 quint32 mobility_scans_count = tims_frame_csp->getTotalNumberOfScans();
312 quint32 min_mz_index_out = 0;
313 quint32 max_mz_index_out = 0;
315 qDebug() <<
"tims_frame_id=" << tims_frame_id;
316 if(asked_ion_mobility_range)
318 if(mobility_scan_num_end > (mobility_scans_count - 1))
320 mobility_scan_num_end = mobility_scans_count - 1;
325 mobility_scan_num_begin = 0;
326 mobility_scan_num_end = mobility_scans_count - 1;
329 qDebug() <<
"tims_frame_id=" << tims_frame_id;
349 unsigned int frame_ms_level = tims_frame_csp.get()->getMsLevel();
363 current_frame_record.
m_size + mobility_scan_num_begin;
364 for(quint32 i = mobility_scan_num_begin; i <= mobility_scan_num_end; i++)
369 QString(
"frame=%1 scan=%2 index=%3")
374 qDebug() <<
"i=" << i;
378 quint32 mz_minimum_index_out =
379 std::numeric_limits<quint32>::max();
380 quint32 mz_maximum_index_out = 0;
382 tims_frame_csp.get()->getMobilityScan(i,
383 mz_index_merge_window,
386 mz_minimum_index_out,
387 mz_maximum_index_out);
388 qDebug() << raw.size();
393 tims_frame_csp.get()->getDriftTime(i));
397 tims_frame_csp.get()->getOneOverK0Transformation(i));
406 std::make_shared<MassSpectrum>(raw));
415 qDebug() <<
"mz_index_merge_window=" << mz_index_merge_window;
432 msp_timsData.get()->rawReaderSpectrumCollectionByMsLevel(
438 qDebug() <<
"Reading of MS data interrupted by the user.";
486 [[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 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
@ TimsFrameMzIndexBegin
Bruker's Tims tof mz index frame start range.
@ OneOverK0
1/kO of a simple scan
std::shared_ptr< MassSpectrum > MassSpectrumSPtr
std::shared_ptr< const TimsFrame > TimsFrameCstSPtr
@ TimsFramesMsRunReader_mobility_index_end
@ TimsFramesMsRunReader_mz_end
@ TimsFramesMsRunReader_mz_index_merge_window
@ TimsFramesMsRunReader_mobility_index_begin
@ TimsFramesMsRunReader_mz_begin
@ TimsFramesMsRunReader_mobility_one_over_k0_begin
@ TimsFramesMsRunReader_mobility_one_over_k0_end
std::shared_ptr< XicCoord > XicCoordSPtr
MSrun file reader for native Bruker TimsTOF raw data.