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 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 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 }
MsRunReader(MsRunIdCstSPtr &ms_run_id)
virtual void initialize() override

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

114 {
115  qDebug() << file_name;
116  return true;
117 }

◆ acquireDevice()

bool TimsMsRunReaderMs2::acquireDevice ( )
overridevirtual

acquire data back end device

Returns
bool true if done

Implements pappso::MsRunReader.

Definition at line 329 of file timsmsrunreaderms2.cpp.

330 {
331  if(msp_timsData == nullptr)
332  {
333  initialize();
334  msp_timsData->setMs2BuiltinCentroid(m_builtinMs2Centroid);
335  msp_timsData->setMs1FilterCstSPtr(msp_ms1Filter);
336  msp_timsData->setMs2FilterCstSPtr(msp_ms2Filter);
337  }
338  return true;
339 }
pappso::FilterInterfaceCstSPtr msp_ms2Filter
pappso::FilterInterfaceCstSPtr msp_ms1Filter
bool m_builtinMs2Centroid
enable builtin centroid on raw tims integers by default

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

346 {
347  return msp_timsData->getPrecursorsFromMzRtCharge(charge, mz_val, rt_sec, k0);
348 }

◆ getTimsDataSPtr()

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

give an access to the underlying raw data pointer

Definition at line 351 of file timsmsrunreaderms2.cpp.

352 {
353  acquireDevice();
354  return msp_timsData;
355 }
virtual bool acquireDevice() override
acquire data back end device

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

316 {
317  return false;
318 }

◆ 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  if(msp_timsData == nullptr)
56  {
57  throw PappsoException(
58  QObject::tr("ERROR in TimsMsRunReaderMs2::initialize "
59  "msp_timsData is null for MsRunId %1")
60  .arg(mcsp_msRunId.get()->toString()));
61  }
62 }
MsRunIdCstSPtr mcsp_msRunId
Definition: msrunreader.h:229

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

131 {
132  QualifiedMassSpectrum mass_spectrum =
133  qualifiedMassSpectrum(spectrum_index, true);
134  return mass_spectrum.getMassSpectrumSPtr();
135 }
Class representing a fully specified mass spectrum.
MassSpectrumSPtr getMassSpectrumSPtr() const
Get the MassSpectrumSPtr.
virtual QualifiedMassSpectrum qualifiedMassSpectrum(std::size_t spectrum_index, bool want_binary_data=true) const override
get a QualifiedMassSpectrum class given its scan number

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

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

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

141 {
142 
143  std::size_t precursor_index = (spectrum_index / 2) + 1;
144 
145  if(spectrum_index % 2 == 0)
146  {
147  qDebug();
148  // this is an MS1 spectrum
149  QualifiedMassSpectrum mass_spectrum_ms1 =
150  msp_timsData->getQualifiedMs1MassSpectrumByPrecursorId(
151  spectrum_index, precursor_index, want_binary_data);
152  MassSpectrumId spectrum_id(mass_spectrum_ms1.getMassSpectrumId());
153  spectrum_id.setMsRunId(getMsRunId());
154  mass_spectrum_ms1.setMassSpectrumId(spectrum_id);
155  qDebug(); // << mass_spectrum_ms1.toString();
156 
157  // qDebug() << mass_spectrum_ms1.getMassSpectrumSPtr().get()->toString();
158  return mass_spectrum_ms1;
159  }
160  else
161  {
162  qDebug();
163  QualifiedMassSpectrum mass_spectrum_ms2;
164  msp_timsData->getQualifiedMs2MassSpectrumByPrecursorId(
165  mass_spectrum_ms2, spectrum_index, precursor_index, want_binary_data);
166  MassSpectrumId spectrum_id(mass_spectrum_ms2.getMassSpectrumId());
167  spectrum_id.setMsRunId(getMsRunId());
168  mass_spectrum_ms2.setMassSpectrumId(spectrum_id);
169  qDebug(); // << mass_spectrum_ms2.toString();
170 
171  // qDebug() << mass_spectrum_ms2.getMassSpectrumSPtr().get()->toString();
172  return mass_spectrum_ms2;
173  }
174 }
const MsRunIdCstSPtr & getMsRunId() const
const MassSpectrumId & getMassSpectrumId() const
Get the MassSpectrumId.
void setMassSpectrumId(const MassSpectrumId &iD)
Set the MassSpectrumId.

References pappso::QualifiedMassSpectrum::getMassSpectrumId(), pappso::MsRunReader::getMsRunId(), msp_timsData, pappso::QualifiedMassSpectrum::setMassSpectrumId(), and pappso::MassSpectrumId::setMsRunId().

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

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

180 {
182 }
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

References readSpectrumCollectionByMsLevel().

◆ readSpectrumCollectionByMsLevel()

void TimsMsRunReaderMs2::readSpectrumCollectionByMsLevel ( SpectrumCollectionHandlerInterface handler,
unsigned int  ms_level 
)
overridevirtual

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

Implements pappso::MsRunReader.

Definition at line 185 of file timsmsrunreaderms2.cpp.

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

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().

Referenced by readSpectrumCollection().

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

323 {
324  msp_timsData = nullptr;
325  return true;
326 }

References msp_timsData.

◆ setMs1FilterCstSPtr()

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

Definition at line 97 of file timsmsrunreaderms2.cpp.

98 {
99  msp_ms1Filter = filter;
100  if(msp_timsData != nullptr)
101  {
102  msp_timsData->setMs1FilterCstSPtr(filter);
103  }
104  else
105  {
106  throw PappsoException(
107  QObject::tr("ERROR in TimsMsRunReaderMs2::setMs1FilterCstSPtr "
108  "msp_timsData is null"));
109  }
110 }

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

66 {
67  m_builtinMs2Centroid = centroid;
68  if(msp_timsData != nullptr)
69  {
70  msp_timsData->setMs2BuiltinCentroid(m_builtinMs2Centroid);
71  }
72  else
73  {
74  throw PappsoException(
75  QObject::tr("ERROR in TimsMsRunReaderMs2::setMs2BuiltinCentroid "
76  "msp_timsData is null"));
77  }
78 }

References m_builtinMs2Centroid, and msp_timsData.

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

◆ setMs2FilterCstSPtr()

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

Definition at line 81 of file timsmsrunreaderms2.cpp.

82 {
83  msp_ms2Filter = filter;
84  if(msp_timsData != nullptr)
85  {
86  msp_timsData->setMs2FilterCstSPtr(msp_ms2Filter);
87  }
88  else
89  {
90  throw PappsoException(
91  QObject::tr("ERROR in TimsMsRunReaderMs2::setMs2FilterCstSPtr "
92  "msp_timsData is null"));
93  }
94 }

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

309 {
310  return (msp_timsData->getTotalNumberOfPrecursors() * 2);
311 }

References msp_timsData.

Referenced by readSpectrumCollectionByMsLevel().

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 104 of file timsmsrunreaderms2.h.

Referenced by acquireDevice(), and setMs2BuiltinCentroid().

◆ msp_ms1Filter

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

Definition at line 100 of file timsmsrunreaderms2.h.

Referenced by acquireDevice(), and setMs1FilterCstSPtr().

◆ msp_ms2Filter

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

Definition at line 101 of file timsmsrunreaderms2.h.

Referenced by acquireDevice(), and setMs2FilterCstSPtr().

◆ msp_timsData


The documentation for this class was generated from the following files: