libpappsomspp
Library for mass spectrometry
pappso::TimsMsRunReaderMs2 Class Reference

#include <timsmsrunreaderms2.h>

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

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

Friends

class MsFileAccessor
 

Additional Inherited Members

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

Detailed Description

Definition at line 58 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.

Definition at line 88 of file timsmsrunreaderms2.cpp.

89 {
90  qDebug() << file_name;
91  return true;
92 }

◆ 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.

Definition at line 282 of file timsmsrunreaderms2.cpp.

283 {
284  return false;
285 }

◆ initialize()

void pappso::TimsMsRunReaderMs2::initialize ( )
overrideprotectedvirtual

Implements pappso::MsRunReader.

Definition at line 52 of file timsmsrunreaderms2.cpp.

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

Referenced by TimsMsRunReaderMs2().

◆ massSpectrumCstSPtr()

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

Implements pappso::MsRunReader.

Definition at line 105 of file timsmsrunreaderms2.cpp.

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

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.

Definition at line 96 of file timsmsrunreaderms2.cpp.

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

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.

Definition at line 114 of file timsmsrunreaderms2.cpp.

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

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.

Definition at line 153 of file timsmsrunreaderms2.cpp.

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

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

◆ setMs1FilterCstSPtr()

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

Definition at line 73 of file timsmsrunreaderms2.cpp.

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

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

◆ setMs2FilterCstSPtr()

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

Definition at line 58 of file timsmsrunreaderms2.cpp.

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

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

◆ spectrumListSize()

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

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

Implements pappso::MsRunReader.

Definition at line 275 of file timsmsrunreaderms2.cpp.

276 {
278 }

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

Referenced by readSpectrumCollection().

Friends And Related Function Documentation

◆ MsFileAccessor

friend class MsFileAccessor
friend

Definition at line 78 of file timsmsrunreaderms2.h.

Member Data Documentation

◆ mpa_timsData

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

The documentation for this class was generated from the following files:
pappso::QualifiedMassSpectrum::getMassSpectrumSPtr
MassSpectrumSPtr getMassSpectrumSPtr() const
Get the MassSpectrumSPtr.
Definition: qualifiedmassspectrum.cpp:162
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:114
pappso::TimsData::setMs2FilterCstSPtr
void setMs2FilterCstSPtr(pappso::FilterInterfaceCstSPtr &filter)
Definition: timsdata.cpp:1080
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:664
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::SpectrumCollectionHandlerInterface::setQualifiedMassSpectrum
virtual void setQualifiedMassSpectrum(const QualifiedMassSpectrum &spectrum)=0
pappso::TimsData::setMs1FilterCstSPtr
void setMs1FilterCstSPtr(pappso::FilterInterfaceCstSPtr &filter)
Definition: timsdata.cpp:1085
pappso::SpectrumCollectionHandlerInterface::shouldStop
virtual bool shouldStop()
Definition: msrunreader.cpp:46
pappso::MsRunReader::mcsp_msRunId
MsRunIdCstSPtr mcsp_msRunId
Definition: msrunreader.h:228
pappso::SpectrumCollectionHandlerInterface::loadingEnded
virtual void loadingEnded()
Definition: msrunreader.cpp:51
pappso::TimsData
Definition: timsdata.h:82
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:110
pappso::QualifiedMassSpectrum::setMassSpectrumId
void setMassSpectrumId(const MassSpectrumId &iD)
Set the MassSpectrumId.
Definition: qualifiedmassspectrum.cpp:138
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:146
pappso::MassSpectrumId
Definition: massspectrumid.h:58
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:828
pappso::MsRunReader::MsRunReader
MsRunReader(MsRunIdCstSPtr &ms_run_id)
Definition: msrunreader.cpp:220
pappso::PappsoException
Definition: pappsoexception.h:62
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:275