libpappsomspp
Library for mass spectrometry
pappso::TimsMsRunReaderMs2 Class Reference

#include <timsmsrunreaderms2.h>

Inheritance diagram for pappso::TimsMsRunReaderMs2:
pappso::MsRunReader pappso::TimsMsRunReaderMs2Selected

Public Member Functions

 TimsMsRunReaderMs2 (MsRunIdCstSPtr &msrun_id_csp)
 
virtual ~TimsMsRunReaderMs2 ()
 
virtual MassSpectrumSPtr massSpectrumSPtr (std::size_t spectrum_index) override
 get a MassSpectrumSPtr class given its spectrum index More...
 
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 More...
 
virtual void readSpectrumCollection (SpectrumCollectionHandlerInterface &handler) override
 function to visit an MsRunReader and get each Spectrum in a spectrum collection handler More...
 
virtual std::size_t spectrumListSize () const override
 get the totat number of spectrum conained in the MSrun data file More...
 
virtual bool hasScanNumbers () const override
 tells if spectra can be accessed using scan numbers by default, it returns false. Only overrided functions can check if scan numbers are available in the current file More...
 
void setMs2FilterCstSPtr (pappso::FilterInterfaceCstSPtr filter)
 
void setMs1FilterCstSPtr (pappso::FilterInterfaceCstSPtr filter)
 
virtual std::vector< std::size_t > getPrecursorsIDFromMzRt (int charge, double mz_val, double rt_sec, double k0)
 Get all the precursors id which match the values. More...
 
virtual bool releaseDevice () override
 release data back end device if a the data back end is released, the developper has to use acquireDevice before using the msrunreader object More...
 
virtual bool acquireDevice () override
 acquire data back end device More...
 
- Public Member Functions inherited from pappso::MsRunReader
 MsRunReader (MsRunIdCstSPtr &ms_run_id)
 
 MsRunReader (const MsRunReader &other)
 
virtual ~MsRunReader ()
 
const MsRunIdCstSPtrgetMsRunId () const
 
virtual std::size_t scanNumber2SpectrumIndex (std::size_t scan_number)
 if possible, converts a scan number into a spectrum index This is a convenient function to help transition from the old scan number (not implemented by all vendors) to more secure spectrum index (not vendor dependant). It is better to not rely on this function. More...
 

Protected Member Functions

virtual void initialize () override
 
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, specific of one or more file format More...
 

Private Attributes

TimsDatampa_timsData = nullptr
 
pappso::FilterInterfaceCstSPtr msp_ms1Filter
 
pappso::FilterInterfaceCstSPtr msp_ms2Filter
 

Friends

class MsFileAccessor
 

Additional Inherited Members

- Protected Attributes inherited from pappso::MsRunReader
MsRunIdCstSPtr mcsp_msRunId
 
MsRunReaderScanNumberMultiMapmpa_multiMapScanNumber = nullptr
 

Detailed Description

Definition at line 40 of file timsmsrunreaderms2.h.

Constructor & Destructor Documentation

◆ TimsMsRunReaderMs2()

TimsMsRunReaderMs2::TimsMsRunReaderMs2 ( MsRunIdCstSPtr msrun_id_csp)
Todo:
write docs

Definition at line 37 of file timsmsrunreaderms2.cpp.

38  : MsRunReader(msrun_id_csp)
39 {
40  initialize();
41 }

References initialize().

◆ ~TimsMsRunReaderMs2()

TimsMsRunReaderMs2::~TimsMsRunReaderMs2 ( )
virtual

Definition at line 43 of file timsmsrunreaderms2.cpp.

44 {
45  if(mpa_timsData != nullptr)
46  {
47  delete mpa_timsData;
48  }
49 }

References mpa_timsData.

Member Function Documentation

◆ accept()

bool TimsMsRunReaderMs2::accept ( const QString &  file_name) const
overrideprotectedvirtual

tells if the reader is able to handle this file must be implemented by private MS run reader, specific of one or more file format

Implements pappso::MsRunReader.

Reimplemented in pappso::TimsMsRunReaderMs2Selected.

Definition at line 90 of file timsmsrunreaderms2.cpp.

91 {
92  qDebug() << file_name;
93  return true;
94 }

◆ acquireDevice()

bool TimsMsRunReaderMs2::acquireDevice ( )
overridevirtual

acquire data back end device

Returns
bool true if done

Implements pappso::MsRunReader.

Definition at line 299 of file timsmsrunreaderms2.cpp.

300 {
301  if(mpa_timsData == nullptr)
302  {
303  initialize();
306  }
307  return true;
308 }

References initialize(), mpa_timsData, msp_ms1Filter, msp_ms2Filter, pappso::TimsData::setMs1FilterCstSPtr(), and pappso::TimsData::setMs2FilterCstSPtr().

◆ getPrecursorsIDFromMzRt()

std::vector< std::size_t > pappso::TimsMsRunReaderMs2::getPrecursorsIDFromMzRt ( int  charge,
double  mz_val,
double  rt_sec,
double  k0 
)
virtual

Get all the precursors id which match the values.

Returns
list of precursors Ids

Definition at line 311 of file timsmsrunreaderms2.cpp.

315 {
316  return mpa_timsData->getPrecursorsFromMzRtCharge(charge, mz_val, rt_sec, k0);
317 }

◆ hasScanNumbers()

bool TimsMsRunReaderMs2::hasScanNumbers ( ) const
overridevirtual

tells if spectra can be accessed using scan numbers by default, it returns false. Only overrided functions can check if scan numbers are available in the current file

Reimplemented from pappso::MsRunReader.

Reimplemented in pappso::TimsMsRunReaderMs2Selected.

Definition at line 284 of file timsmsrunreaderms2.cpp.

285 {
286  return false;
287 }

◆ initialize()

void pappso::TimsMsRunReaderMs2::initialize ( )
overrideprotectedvirtual

Implements pappso::MsRunReader.

Reimplemented in pappso::TimsMsRunReaderMs2Selected.

Definition at line 52 of file timsmsrunreaderms2.cpp.

53 {
54  mpa_timsData = new TimsData(mcsp_msRunId.get()->getFileName());
55 }

Referenced by TimsMsRunReaderMs2(), and acquireDevice().

◆ massSpectrumCstSPtr()

pappso::MassSpectrumCstSPtr TimsMsRunReaderMs2::massSpectrumCstSPtr ( std::size_t  spectrum_index)
overridevirtual

Implements pappso::MsRunReader.

Reimplemented in pappso::TimsMsRunReaderMs2Selected.

Definition at line 107 of file timsmsrunreaderms2.cpp.

108 {
109  QualifiedMassSpectrum mass_spectrum =
110  qualifiedMassSpectrum(spectrum_index, true);
111  return mass_spectrum.getMassSpectrumSPtr();
112 }

References pappso::QualifiedMassSpectrum::getMassSpectrumSPtr(), and qualifiedMassSpectrum().

◆ massSpectrumSPtr()

pappso::MassSpectrumSPtr TimsMsRunReaderMs2::massSpectrumSPtr ( std::size_t  spectrum_index)
overridevirtual

get a MassSpectrumSPtr class given its spectrum index

Implements pappso::MsRunReader.

Reimplemented in pappso::TimsMsRunReaderMs2Selected.

Definition at line 98 of file timsmsrunreaderms2.cpp.

99 {
100  QualifiedMassSpectrum mass_spectrum =
101  qualifiedMassSpectrum(spectrum_index, true);
102  return mass_spectrum.getMassSpectrumSPtr();
103 }

References pappso::QualifiedMassSpectrum::getMassSpectrumSPtr(), and qualifiedMassSpectrum().

◆ qualifiedMassSpectrum()

QualifiedMassSpectrum TimsMsRunReaderMs2::qualifiedMassSpectrum ( std::size_t  spectrum_index,
bool  want_binary_data = true 
) const
overridevirtual

get a QualifiedMassSpectrum class given its scan number

Implements pappso::MsRunReader.

Reimplemented in pappso::TimsMsRunReaderMs2Selected.

Definition at line 116 of file timsmsrunreaderms2.cpp.

118 {
119 
120  std::size_t precursor_index = (spectrum_index / 2) + 1;
121 
122  if(spectrum_index % 2 == 0)
123  {
124  qDebug();
125  // this is an MS1 spectrum
126  QualifiedMassSpectrum mass_spectrum_ms1 =
128  spectrum_index, precursor_index, want_binary_data);
129  MassSpectrumId spectrum_id(mass_spectrum_ms1.getMassSpectrumId());
130  spectrum_id.setMsRunId(getMsRunId());
131  mass_spectrum_ms1.setMassSpectrumId(spectrum_id);
132  qDebug(); // << mass_spectrum_ms1.toString();
133 
134  // qDebug() << mass_spectrum_ms1.getMassSpectrumSPtr().get()->toString();
135  return mass_spectrum_ms1;
136  }
137  else
138  {
139  qDebug();
140  QualifiedMassSpectrum mass_spectrum_ms2;
142  mass_spectrum_ms2, spectrum_index, precursor_index, want_binary_data);
143  MassSpectrumId spectrum_id(mass_spectrum_ms2.getMassSpectrumId());
144  spectrum_id.setMsRunId(getMsRunId());
145  mass_spectrum_ms2.setMassSpectrumId(spectrum_id);
146  qDebug(); // << mass_spectrum_ms2.toString();
147 
148  // qDebug() << mass_spectrum_ms2.getMassSpectrumSPtr().get()->toString();
149  return mass_spectrum_ms2;
150  }
151 }

References pappso::QualifiedMassSpectrum::getMassSpectrumId(), pappso::MsRunReader::getMsRunId(), pappso::TimsData::getQualifiedMs1MassSpectrumByPrecursorId(), pappso::TimsData::getQualifiedMs2MassSpectrumByPrecursorId(), mpa_timsData, pappso::QualifiedMassSpectrum::setMassSpectrumId(), and pappso::MassSpectrumId::setMsRunId().

Referenced by massSpectrumCstSPtr(), massSpectrumSPtr(), and readSpectrumCollection().

◆ readSpectrumCollection()

void TimsMsRunReaderMs2::readSpectrumCollection ( SpectrumCollectionHandlerInterface handler)
overridevirtual

function to visit an MsRunReader and get each Spectrum in a spectrum collection handler

Implements pappso::MsRunReader.

Reimplemented in pappso::TimsMsRunReaderMs2Selected.

Definition at line 155 of file timsmsrunreaderms2.cpp.

157 {
158  const bool want_binary_data = handler.needPeakList();
159  // const bool want_binary_data = false;
160 
161  // We'll need it to perform the looping in the spectrum list.
162  std::size_t spectrum_list_size = spectrumListSize();
163 
164  // qDebug() << "The spectrum list has size:" << spectrum_list_size;
165 
166  // Inform the handler of the spectrum list so that it can handle feedback to
167  // the user.
168  handler.spectrumListHasSize(spectrum_list_size);
169 
170  // Iterate in the full list of spectra.
171  bool readAhead = handler.isReadAhead();
172 
173  if(readAhead)
174  {
175 
176  std::size_t process_list_size = 300;
177 
178  struct tmp_item
179  {
180  QualifiedMassSpectrum qualified_mass_spectrum;
181  std::size_t iter;
182  bool want_binary_data;
183  };
184 
185  for(std::size_t i = 0; i < spectrum_list_size; i += process_list_size)
186  {
187  qDebug();
188  // If the user of this reader instance wants to stop reading the
189  // spectra, then break this loop.
190  if(handler.shouldStop())
191  {
192  qDebug() << "The operation was cancelled. Breaking the loop.";
193  break;
194  }
195  std::vector<tmp_item> item_list;
196  for(std::size_t iter = 0;
197  (iter < process_list_size) && ((iter + i) < spectrum_list_size);
198  iter++)
199  {
200 
201  bool get_data = want_binary_data;
202  if((iter + i) % 2 == 0)
203  { // MS1
204  get_data = handler.needMsLevelPeakList(1);
205  }
206  else
207  {
208  get_data = handler.needMsLevelPeakList(2);
209  }
210 
211  item_list.push_back(
212  {QualifiedMassSpectrum(), iter + i, get_data});
213  }
214  qDebug() << item_list.size();
215  // Use QtConcurrentBlocking::mapped to apply the scale function to all
216  // the images in the list.
217  QtConcurrent::blockingMap(
218  item_list.begin(), item_list.end(), [this](tmp_item &one_item) {
219  qDebug() << one_item.iter;
220  one_item.qualified_mass_spectrum =
221  qualifiedMassSpectrum(one_item.iter, one_item.want_binary_data);
222 
223  // qDebug() << one_item.qualified_mass_spectrum.size() << " " <<
224  // one_item.qualified_mass_spectrum.getMassSpectrumSPtr().get()->toString();
225  });
226 
227  qDebug() << item_list.size();
228  for(auto &item : item_list)
229  {
230  // qDebug() << item.qualified_mass_spectrum.getMassSpectrumSPtr()
231  // .get()
232  // ->toString();
233  handler.setQualifiedMassSpectrum(item.qualified_mass_spectrum);
234  qDebug();
235  }
236  }
237  }
238  else
239  {
240  for(std::size_t iter = 0; iter < spectrum_list_size; iter++)
241  {
242  qDebug();
243  // If the user of this reader instance wants to stop reading the
244  // spectra, then break this loop.
245  if(handler.shouldStop())
246  {
247  qDebug() << "The operation was cancelled. Breaking the loop.";
248  break;
249  }
250  bool get_data = want_binary_data;
251  if(iter % 2 == 0)
252  { // MS1
253  if(!handler.needMsLevelPeakList(1))
254  {
255  get_data = false;
256  }
257  }
258  QualifiedMassSpectrum qualified_mass_spectrum =
259  qualifiedMassSpectrum(iter, get_data);
260  handler.setQualifiedMassSpectrum(qualified_mass_spectrum);
261  qDebug();
262  }
263  }
264  // End of
265  // for(std::size_t iter = 0; iter < spectrum_list_size; iter++)
266 
267  // Now let the loading handler know that the loading of the data has ended.
268  // The handler might need this "signal" to perform additional tasks or to
269  // cleanup cruft.
270 
271  // qDebug() << "Loading ended";
272  handler.loadingEnded();
273 }

References pappso::SpectrumCollectionHandlerInterface::isReadAhead(), pappso::SpectrumCollectionHandlerInterface::loadingEnded(), pappso::SpectrumCollectionHandlerInterface::needMsLevelPeakList(), pappso::SpectrumCollectionHandlerInterface::needPeakList(), qualifiedMassSpectrum(), pappso::SpectrumCollectionHandlerInterface::setQualifiedMassSpectrum(), pappso::SpectrumCollectionHandlerInterface::shouldStop(), pappso::SpectrumCollectionHandlerInterface::spectrumListHasSize(), and spectrumListSize().

◆ releaseDevice()

bool TimsMsRunReaderMs2::releaseDevice ( )
overridevirtual

release data back end device if a the data back end is released, the developper has to use acquireDevice before using the msrunreader object

Returns
bool true if done

Implements pappso::MsRunReader.

Definition at line 291 of file timsmsrunreaderms2.cpp.

292 {
293  delete mpa_timsData;
294  mpa_timsData = nullptr;
295  return true;
296 }

References mpa_timsData.

◆ setMs1FilterCstSPtr()

void TimsMsRunReaderMs2::setMs1FilterCstSPtr ( pappso::FilterInterfaceCstSPtr  filter)

Definition at line 74 of file timsmsrunreaderms2.cpp.

75 {
76  msp_ms1Filter = filter;
77  if(mpa_timsData != nullptr)
78  {
80  }
81  else
82  {
83  throw PappsoException(
84  QObject::tr("ERROR in TimsMsRunReaderMs2::setMs1FilterCstSPtr "
85  "mpa_timsData is null"));
86  }
87 }

References mpa_timsData, msp_ms1Filter, and pappso::TimsData::setMs1FilterCstSPtr().

◆ setMs2FilterCstSPtr()

void TimsMsRunReaderMs2::setMs2FilterCstSPtr ( pappso::FilterInterfaceCstSPtr  filter)

Definition at line 58 of file timsmsrunreaderms2.cpp.

59 {
60  msp_ms2Filter = filter;
61  if(mpa_timsData != nullptr)
62  {
64  }
65  else
66  {
67  throw PappsoException(
68  QObject::tr("ERROR in TimsMsRunReaderMs2::setMs2FilterCstSPtr "
69  "mpa_timsData is null"));
70  }
71 }

References mpa_timsData, msp_ms2Filter, and pappso::TimsData::setMs2FilterCstSPtr().

Referenced by pappso::TandemWrapperRun::convertOrginalMsData2mzXmlData().

◆ spectrumListSize()

std::size_t TimsMsRunReaderMs2::spectrumListSize ( ) const
overridevirtual

get the totat number of spectrum conained in the MSrun data file

Implements pappso::MsRunReader.

Reimplemented in pappso::TimsMsRunReaderMs2Selected.

Definition at line 277 of file timsmsrunreaderms2.cpp.

278 {
280 }

References pappso::TimsData::getTotalNumberOfPrecursors(), and mpa_timsData.

Referenced by readSpectrumCollection().

Friends And Related Function Documentation

◆ MsFileAccessor

friend class MsFileAccessor
friend

Definition at line 42 of file timsmsrunreaderms2.h.

Member Data Documentation

◆ mpa_timsData

TimsData* pappso::TimsMsRunReaderMs2::mpa_timsData = nullptr
private

◆ msp_ms1Filter

pappso::FilterInterfaceCstSPtr pappso::TimsMsRunReaderMs2::msp_ms1Filter
private

Definition at line 87 of file timsmsrunreaderms2.h.

Referenced by acquireDevice(), and setMs1FilterCstSPtr().

◆ msp_ms2Filter

pappso::FilterInterfaceCstSPtr pappso::TimsMsRunReaderMs2::msp_ms2Filter
private

Definition at line 88 of file timsmsrunreaderms2.h.

Referenced by acquireDevice(), and setMs2FilterCstSPtr().


The documentation for this class was generated from the following files:
pappso::QualifiedMassSpectrum::getMassSpectrumSPtr
MassSpectrumSPtr getMassSpectrumSPtr() const
Get the MassSpectrumSPtr.
Definition: qualifiedmassspectrum.cpp:133
pappso::TimsMsRunReaderMs2::qualifiedMassSpectrum
virtual QualifiedMassSpectrum qualifiedMassSpectrum(std::size_t spectrum_index, bool want_binary_data=true) const override
get a QualifiedMassSpectrum class given its scan number
Definition: timsmsrunreaderms2.cpp:116
pappso::TimsData::setMs2FilterCstSPtr
void setMs2FilterCstSPtr(pappso::FilterInterfaceCstSPtr &filter)
Definition: timsdata.cpp:1208
pappso::TimsMsRunReaderMs2::initialize
virtual void initialize() override
Definition: timsmsrunreaderms2.cpp:52
pappso::TimsData::getQualifiedMs1MassSpectrumByPrecursorId
QualifiedMassSpectrum getQualifiedMs1MassSpectrumByPrecursorId(std::size_t ms2_index, std::size_t precursor_index, bool want_binary_data)
Definition: timsdata.cpp:794
pappso::SpectrumCollectionHandlerInterface::spectrumListHasSize
virtual void spectrumListHasSize(std::size_t size)
Definition: msrunreader.cpp:55
pappso::SpectrumCollectionHandlerInterface::isReadAhead
virtual bool isReadAhead() const
tells if we want to read ahead spectrum
Definition: msrunreader.cpp:66
pappso::TimsMsRunReaderMs2::msp_ms1Filter
pappso::FilterInterfaceCstSPtr msp_ms1Filter
Definition: timsmsrunreaderms2.h:87
pappso::TimsMsRunReaderMs2::msp_ms2Filter
pappso::FilterInterfaceCstSPtr msp_ms2Filter
Definition: timsmsrunreaderms2.h:88
pappso::SpectrumCollectionHandlerInterface::setQualifiedMassSpectrum
virtual void setQualifiedMassSpectrum(const QualifiedMassSpectrum &spectrum)=0
pappso::TimsData::setMs1FilterCstSPtr
void setMs1FilterCstSPtr(pappso::FilterInterfaceCstSPtr &filter)
Definition: timsdata.cpp:1213
pappso::SpectrumCollectionHandlerInterface::shouldStop
virtual bool shouldStop()
Definition: msrunreader.cpp:46
pappso::MsRunReader::mcsp_msRunId
MsRunIdCstSPtr mcsp_msRunId
Definition: msrunreader.h:220
pappso::SpectrumCollectionHandlerInterface::loadingEnded
virtual void loadingEnded()
Definition: msrunreader.cpp:51
pappso::TimsData
Definition: timsdata.h:65
pappso::MsRunReader::getMsRunId
const MsRunIdCstSPtr & getMsRunId() const
Definition: msrunreader.cpp:232
pappso::QualifiedMassSpectrum
Class representing a fully specified mass spectrum.
Definition: qualifiedmassspectrum.h:85
pappso::SpectrumCollectionHandlerInterface::needPeakList
virtual bool needPeakList() const =0
tells if we need the peak list (if we want the binary data) for each spectrum
pappso::TimsMsRunReaderMs2::mpa_timsData
TimsData * mpa_timsData
Definition: timsmsrunreaderms2.h:85
pappso::QualifiedMassSpectrum::setMassSpectrumId
void setMassSpectrumId(const MassSpectrumId &iD)
Set the MassSpectrumId.
Definition: qualifiedmassspectrum.cpp:149
pappso::TimsData::getTotalNumberOfPrecursors
std::size_t getTotalNumberOfPrecursors() const
get the number of precursors analyzes by PASEF
Definition: timsdata.cpp:531
pappso::SpectrumCollectionHandlerInterface::needMsLevelPeakList
virtual bool needMsLevelPeakList(unsigned int ms_level) const final
tells if we need the peak list (if we want the binary data) for each spectrum, given an MS level
Definition: msrunreader.cpp:72
pappso::QualifiedMassSpectrum::getMassSpectrumId
const MassSpectrumId & getMassSpectrumId() const
Get the MassSpectrumId.
Definition: qualifiedmassspectrum.cpp:157
pappso::TimsData::getPrecursorsFromMzRtCharge
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
Definition: timsdata.cpp:537
pappso::MassSpectrumId
Definition: massspectrumid.h:38
pappso::TimsData::getQualifiedMs2MassSpectrumByPrecursorId
void getQualifiedMs2MassSpectrumByPrecursorId(QualifiedMassSpectrum &mass_spectrum, std::size_t ms2_index, std::size_t precursor_index, bool want_binary_data)
Definition: timsdata.cpp:955
pappso::MsRunReader::MsRunReader
MsRunReader(MsRunIdCstSPtr &ms_run_id)
Definition: msrunreader.cpp:220
pappso::PappsoException
Definition: pappsoexception.h:42
pappso::TimsMsRunReaderMs2::spectrumListSize
virtual std::size_t spectrumListSize() const override
get the totat number of spectrum conained in the MSrun data file
Definition: timsmsrunreaderms2.cpp:277