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)
 
void setMs2BuiltinCentroid (bool centroid)
 enable or disable simple centroid filter on raw tims data for MS2 More...
 
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...
 
virtual TimsDataSp getTimsDataSPtr ()
 give an access to the underlying raw data pointer 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

TimsDataSp msp_timsData = nullptr
 
pappso::FilterInterfaceCstSPtr msp_ms1Filter
 
pappso::FilterInterfaceCstSPtr msp_ms2Filter
 
bool m_builtinMs2Centroid = true
 enable builtin centroid on raw tims integers by default More...
 

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(msp_timsData != nullptr)
46  {
47  msp_timsData = nullptr;
48  }
49 }

References msp_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 106 of file timsmsrunreaderms2.cpp.

107 {
108  qDebug() << file_name;
109  return true;
110 }

◆ acquireDevice()

bool TimsMsRunReaderMs2::acquireDevice ( )
overridevirtual

acquire data back end device

Returns
bool true if done

Implements pappso::MsRunReader.

Definition at line 314 of file timsmsrunreaderms2.cpp.

315 {
316  if(msp_timsData == nullptr)
317  {
318  initialize();
319  msp_timsData->setMs2BuiltinCentroid(m_builtinMs2Centroid);
320  msp_timsData->setMs1FilterCstSPtr(msp_ms1Filter);
321  msp_timsData->setMs2FilterCstSPtr(msp_ms2Filter);
322  }
323  return true;
324 }

References initialize(), m_builtinMs2Centroid, msp_ms1Filter, msp_ms2Filter, and msp_timsData.

◆ 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 327 of file timsmsrunreaderms2.cpp.

331 {
332  return msp_timsData->getPrecursorsFromMzRtCharge(charge, mz_val, rt_sec, k0);
333 }

◆ getTimsDataSPtr()

pappso::TimsDataSp pappso::TimsMsRunReaderMs2::getTimsDataSPtr ( )
virtual

give an access to the underlying raw data pointer

Definition at line 336 of file timsmsrunreaderms2.cpp.

337 {
338  acquireDevice();
339  return msp_timsData;
340 }

◆ 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 300 of file timsmsrunreaderms2.cpp.

301 {
302  return false;
303 }

◆ initialize()

void pappso::TimsMsRunReaderMs2::initialize ( )
overrideprotectedvirtual

Implements pappso::MsRunReader.

Reimplemented in pappso::TimsMsRunReaderMs2Selected.

Definition at line 52 of file timsmsrunreaderms2.cpp.

53 {
54  msp_timsData = std::make_shared<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 123 of file timsmsrunreaderms2.cpp.

124 {
125  QualifiedMassSpectrum mass_spectrum =
126  qualifiedMassSpectrum(spectrum_index, true);
127  return mass_spectrum.getMassSpectrumSPtr();
128 }

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 114 of file timsmsrunreaderms2.cpp.

115 {
116  QualifiedMassSpectrum mass_spectrum =
117  qualifiedMassSpectrum(spectrum_index, true);
118  return mass_spectrum.getMassSpectrumSPtr();
119 }

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 132 of file timsmsrunreaderms2.cpp.

134 {
135 
136  std::size_t precursor_index = (spectrum_index / 2) + 1;
137 
138  if(spectrum_index % 2 == 0)
139  {
140  qDebug();
141  // this is an MS1 spectrum
142  QualifiedMassSpectrum mass_spectrum_ms1 =
143  msp_timsData->getQualifiedMs1MassSpectrumByPrecursorId(
144  spectrum_index, precursor_index, want_binary_data);
145  MassSpectrumId spectrum_id(mass_spectrum_ms1.getMassSpectrumId());
146  spectrum_id.setMsRunId(getMsRunId());
147  mass_spectrum_ms1.setMassSpectrumId(spectrum_id);
148  qDebug(); // << mass_spectrum_ms1.toString();
149 
150  // qDebug() << mass_spectrum_ms1.getMassSpectrumSPtr().get()->toString();
151  return mass_spectrum_ms1;
152  }
153  else
154  {
155  qDebug();
156  QualifiedMassSpectrum mass_spectrum_ms2;
157  msp_timsData->getQualifiedMs2MassSpectrumByPrecursorId(
158  mass_spectrum_ms2, spectrum_index, precursor_index, want_binary_data);
159  MassSpectrumId spectrum_id(mass_spectrum_ms2.getMassSpectrumId());
160  spectrum_id.setMsRunId(getMsRunId());
161  mass_spectrum_ms2.setMassSpectrumId(spectrum_id);
162  qDebug(); // << mass_spectrum_ms2.toString();
163 
164  // qDebug() << mass_spectrum_ms2.getMassSpectrumSPtr().get()->toString();
165  return mass_spectrum_ms2;
166  }
167 }

References pappso::QualifiedMassSpectrum::getMassSpectrumId(), pappso::MsRunReader::getMsRunId(), msp_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 171 of file timsmsrunreaderms2.cpp.

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

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 307 of file timsmsrunreaderms2.cpp.

308 {
309  msp_timsData = nullptr;
310  return true;
311 }

References msp_timsData.

◆ setMs1FilterCstSPtr()

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

Definition at line 90 of file timsmsrunreaderms2.cpp.

91 {
92  msp_ms1Filter = filter;
93  if(msp_timsData != nullptr)
94  {
95  msp_timsData->setMs1FilterCstSPtr(filter);
96  }
97  else
98  {
99  throw PappsoException(
100  QObject::tr("ERROR in TimsMsRunReaderMs2::setMs1FilterCstSPtr "
101  "msp_timsData is null"));
102  }
103 }

References msp_ms1Filter, and msp_timsData.

◆ setMs2BuiltinCentroid()

void TimsMsRunReaderMs2::setMs2BuiltinCentroid ( bool  centroid)

enable or disable simple centroid filter on raw tims data for MS2

Definition at line 58 of file timsmsrunreaderms2.cpp.

59 {
60  m_builtinMs2Centroid = centroid;
61  if(msp_timsData != nullptr)
62  {
63  msp_timsData->setMs2BuiltinCentroid(m_builtinMs2Centroid);
64  }
65  else
66  {
67  throw PappsoException(
68  QObject::tr("ERROR in TimsMsRunReaderMs2::setMs2BuiltinCentroid "
69  "msp_timsData is null"));
70  }
71 }

References m_builtinMs2Centroid, and msp_timsData.

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

◆ setMs2FilterCstSPtr()

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

Definition at line 74 of file timsmsrunreaderms2.cpp.

75 {
76  msp_ms2Filter = filter;
77  if(msp_timsData != nullptr)
78  {
79  msp_timsData->setMs2FilterCstSPtr(msp_ms2Filter);
80  }
81  else
82  {
83  throw PappsoException(
84  QObject::tr("ERROR in TimsMsRunReaderMs2::setMs2FilterCstSPtr "
85  "msp_timsData is null"));
86  }
87 }

References msp_ms2Filter, and msp_timsData.

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 293 of file timsmsrunreaderms2.cpp.

294 {
295  return (msp_timsData->getTotalNumberOfPrecursors() * 2);
296 }

References msp_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

◆ m_builtinMs2Centroid

bool pappso::TimsMsRunReaderMs2::m_builtinMs2Centroid = true
private

enable builtin centroid on raw tims integers by default

Definition at line 99 of file timsmsrunreaderms2.h.

Referenced by acquireDevice(), and setMs2BuiltinCentroid().

◆ msp_ms1Filter

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

Definition at line 95 of file timsmsrunreaderms2.h.

Referenced by acquireDevice(), and setMs1FilterCstSPtr().

◆ msp_ms2Filter

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

Definition at line 96 of file timsmsrunreaderms2.h.

Referenced by acquireDevice(), and setMs2FilterCstSPtr().

◆ msp_timsData


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:132
pappso::TimsMsRunReaderMs2::initialize
virtual void initialize() override
Definition: timsmsrunreaderms2.cpp:52
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:95
pappso::TimsMsRunReaderMs2::msp_ms2Filter
pappso::FilterInterfaceCstSPtr msp_ms2Filter
Definition: timsmsrunreaderms2.h:96
pappso::SpectrumCollectionHandlerInterface::setQualifiedMassSpectrum
virtual void setQualifiedMassSpectrum(const QualifiedMassSpectrum &spectrum)=0
pappso::TimsMsRunReaderMs2::m_builtinMs2Centroid
bool m_builtinMs2Centroid
enable builtin centroid on raw tims integers by default
Definition: timsmsrunreaderms2.h:99
pappso::TimsMsRunReaderMs2::msp_timsData
TimsDataSp msp_timsData
Definition: timsmsrunreaderms2.h:93
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::TimsMsRunReaderMs2::acquireDevice
virtual bool acquireDevice() override
acquire data back end device
Definition: timsmsrunreaderms2.cpp:314
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::QualifiedMassSpectrum::setMassSpectrumId
void setMassSpectrumId(const MassSpectrumId &iD)
Set the MassSpectrumId.
Definition: qualifiedmassspectrum.cpp:149
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::MassSpectrumId
Definition: massspectrumid.h:38
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:293