libpappsomspp
Library for mass spectrometry
pappso::TimsMsRunReaderMs2Selected Class Reference

#include <timsmsrunreaderms2selected.h>

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

Public Member Functions

 TimsMsRunReaderMs2Selected (MsRunIdCstSPtr &msrun_id_csp)
 
virtual ~TimsMsRunReaderMs2Selected ()
 
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::TimsMsRunReaderMs2
 TimsMsRunReaderMs2 (MsRunIdCstSPtr &msrun_id_csp)
 
virtual ~TimsMsRunReaderMs2 ()
 
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...
 
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

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 41 of file timsmsrunreaderms2selected.h.

Constructor & Destructor Documentation

◆ TimsMsRunReaderMs2Selected()

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

Definition at line 37 of file timsmsrunreaderms2selected.cpp.

39  : TimsMsRunReaderMs2(msrun_id_csp)
40 {
41  initialize();
42 }
TimsMsRunReaderMs2(MsRunIdCstSPtr &msrun_id_csp)

References initialize().

◆ ~TimsMsRunReaderMs2Selected()

TimsMsRunReaderMs2Selected::~TimsMsRunReaderMs2Selected ( )
virtual

Definition at line 44 of file timsmsrunreaderms2selected.cpp.

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

References mpa_timsData.

Member Function Documentation

◆ accept()

bool TimsMsRunReaderMs2Selected::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

Reimplemented from pappso::TimsMsRunReaderMs2.

Definition at line 91 of file timsmsrunreaderms2selected.cpp.

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

◆ hasScanNumbers()

bool TimsMsRunReaderMs2Selected::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::TimsMsRunReaderMs2.

Definition at line 309 of file timsmsrunreaderms2selected.cpp.

310 {
311  return false;
312 }

◆ initialize()

void pappso::TimsMsRunReaderMs2Selected::initialize ( )
overrideprotectedvirtual

Reimplemented from pappso::TimsMsRunReaderMs2.

Definition at line 53 of file timsmsrunreaderms2selected.cpp.

54 {
55  mpa_timsData = new TimsData(mcsp_msRunId.get()->getFileName());
56 }
MsRunIdCstSPtr mcsp_msRunId
Definition: msrunreader.h:229

Referenced by TimsMsRunReaderMs2Selected().

◆ massSpectrumCstSPtr()

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

Reimplemented from pappso::TimsMsRunReaderMs2.

Definition at line 108 of file timsmsrunreaderms2selected.cpp.

109 {
110  QualifiedMassSpectrum mass_spectrum =
111  qualifiedMassSpectrum(spectrum_index, true);
112  return mass_spectrum.getMassSpectrumSPtr();
113 }
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 TimsMsRunReaderMs2Selected::massSpectrumSPtr ( std::size_t  spectrum_index)
overridevirtual

get a MassSpectrumSPtr class given its spectrum index

Reimplemented from pappso::TimsMsRunReaderMs2.

Definition at line 99 of file timsmsrunreaderms2selected.cpp.

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

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

◆ qualifiedMassSpectrum()

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

get a QualifiedMassSpectrum class given its scan number

Reimplemented from pappso::TimsMsRunReaderMs2.

Definition at line 117 of file timsmsrunreaderms2selected.cpp.

119 {
120 
121  std::size_t precursor_index = (spectrum_index / 2) + 1;
122 
123  if(spectrum_index % 2 == 0)
124  {
125  qDebug();
126  // this is an MS1 spectrum
127  QualifiedMassSpectrum mass_spectrum_ms1 =
129  spectrum_index, precursor_index, want_binary_data);
130  MassSpectrumId spectrum_id(mass_spectrum_ms1.getMassSpectrumId());
131  spectrum_id.setMsRunId(getMsRunId());
132  mass_spectrum_ms1.setMassSpectrumId(spectrum_id);
133  qDebug(); // << mass_spectrum_ms1.toString();
134 
135  // qDebug() << mass_spectrum_ms1.getMassSpectrumSPtr().get()->toString();
136  return mass_spectrum_ms1;
137  }
138  else
139  {
140  qDebug();
141  QualifiedMassSpectrum mass_spectrum_ms2;
143  mass_spectrum_ms2, spectrum_index, precursor_index, want_binary_data);
144  MassSpectrumId spectrum_id(mass_spectrum_ms2.getMassSpectrumId());
145  spectrum_id.setMsRunId(getMsRunId());
146  mass_spectrum_ms2.setMassSpectrumId(spectrum_id);
147  qDebug(); // << mass_spectrum_ms2.toString();
148 
149  // qDebug() << mass_spectrum_ms2.getMassSpectrumSPtr().get()->toString();
150  return mass_spectrum_ms2;
151  }
152 }
const MsRunIdCstSPtr & getMsRunId() const
const MassSpectrumId & getMassSpectrumId() const
Get the MassSpectrumId.
void setMassSpectrumId(const MassSpectrumId &iD)
Set the MassSpectrumId.
QualifiedMassSpectrum getQualifiedMs1MassSpectrumByPrecursorId(std::size_t ms2_index, std::size_t precursor_index, bool want_binary_data)
Definition: timsdata.cpp:862
void getQualifiedMs2MassSpectrumByPrecursorId(QualifiedMassSpectrum &mass_spectrum, std::size_t ms2_index, std::size_t precursor_index, bool want_binary_data)
Definition: timsdata.cpp:1027

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 TimsMsRunReaderMs2Selected::readSpectrumCollection ( SpectrumCollectionHandlerInterface handler)
overridevirtual

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

Reimplemented from pappso::TimsMsRunReaderMs2.

Definition at line 156 of file timsmsrunreaderms2selected.cpp.

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

◆ setMs1FilterCstSPtr()

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

Definition at line 75 of file timsmsrunreaderms2selected.cpp.

77 {
78  if(mpa_timsData != nullptr)
79  {
81  }
82  else
83  {
84  throw PappsoException(
85  QObject::tr("ERROR in TimsMsRunReaderMs2Selected::setMs1FilterCstSPtr "
86  "mpa_timsData is null"));
87  }
88 }
void setMs1FilterCstSPtr(pappso::FilterInterfaceCstSPtr &filter)
filter interface to apply just after raw MS1 specturm extraction the filter can be a list of filters ...
Definition: timsdata.cpp:1323

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

◆ setMs2FilterCstSPtr()

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

Definition at line 59 of file timsmsrunreaderms2selected.cpp.

61 {
62  if(mpa_timsData != nullptr)
63  {
65  }
66  else
67  {
68  throw PappsoException(
69  QObject::tr("ERROR in TimsMsRunReaderMs2Selected::setMs2FilterCstSPtr "
70  "mpa_timsData is null"));
71  }
72 }
void setMs2FilterCstSPtr(pappso::FilterInterfaceCstSPtr &filter)
filter interface to apply just after raw MS2 specturm extraction the filter can be a list of filters ...
Definition: timsdata.cpp:1318

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

◆ spectrumListSize()

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

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

Reimplemented from pappso::TimsMsRunReaderMs2.

Definition at line 302 of file timsmsrunreaderms2selected.cpp.

303 {
305 }
std::size_t getTotalNumberOfPrecursors() const
get the number of precursors analyzes by PASEF
Definition: timsdata.cpp:599

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

Referenced by readSpectrumCollection().

Friends And Related Function Documentation

◆ MsFileAccessor

friend class MsFileAccessor
friend

Definition at line 43 of file timsmsrunreaderms2selected.h.

Member Data Documentation

◆ mpa_timsData

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

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