libpappsomspp
Library for mass spectrometry
pappso::MsRunXicExtractorDisk Class Reference

#include <msrunxicextractordisk.h>

Inheritance diagram for pappso::MsRunXicExtractorDisk:
pappso::MsRunXicExtractor pappso::MsRunXicExtractorInterface pappso::MsRunXicExtractorDiskBuffer

Public Member Functions

 MsRunXicExtractorDisk (MsRunReaderSPtr &msrun_reader)
 
 MsRunXicExtractorDisk (const MsRunXicExtractorDisk &other)
 
virtual ~MsRunXicExtractorDisk ()
 
virtual XicCstSPtr getXicCstSPtr (const MzRange &mz_range, pappso::pappso_double rt_begin, pappso::pappso_double rt_end) override
 get a XIC on this MsRun at the given mass range More...
 
virtual std::vector< XicCstSPtrgetXicCstSPtrList (const std::vector< MzRange > &mz_range_list) override
 extract a list of XIC given a list of mass to extract More...
 
- Public Member Functions inherited from pappso::MsRunXicExtractor
 MsRunXicExtractor (const MsRunXicExtractor &other)
 
virtual ~MsRunXicExtractor ()
 
- Public Member Functions inherited from pappso::MsRunXicExtractorInterface
void setXicExtractMethod (XicExtractMethod method)
 set the XIC extraction method More...
 
virtual XicCstSPtr getXicCstSPtr (const MzRange &mz_range) final
 get a XIC on this MsRun at the given mass range More...
 
const MsRunIdCstSPtrgetMsRunId () const
 

Protected Member Functions

 MsRunXicExtractorDisk (MsRunReaderSPtr &msrun_reader, const QDir &temporary_dir)
 
void prepareExtractor ()
 
void serializeMsRun ()
 
virtual void storeSlices (std::map< unsigned int, MassSpectrum > &slice_vector, std::size_t ipos)
 store MassSpectrum slices (by daltons) for a given retention time More...
 
void appendSliceOnDisk (unsigned int slice_number, MassSpectrum &spectrum, std::size_t ipos)
 append a slice on disk (in a file) More...
 
std::vector< MsRunSliceSPtracquireSlices (const MzRange &mz_range)
 retrieve all the slices corresponding to a given mz_range More...
 
MsRunSliceSPtr unserializeSlice (unsigned int slice_number)
 get one slice from disk by her slice number (dalton) More...
 
virtual void endPwizRead ()
 
- Protected Member Functions inherited from pappso::MsRunXicExtractor
 MsRunXicExtractor (MsRunReaderSPtr &msrun_reader)
 
virtual void getXicFromPwizMSDataFile (std::vector< Xic * > &xic_list, const std::vector< MzRange > &mass_range_list, pappso::pappso_double rt_begin, pappso::pappso_double rt_end)
 
- Protected Member Functions inherited from pappso::MsRunXicExtractorInterface
 MsRunXicExtractorInterface (MsRunReaderSPtr &msrun_reader)
 constructor is private, use the MsRunXicExtractorFactory More...
 
 MsRunXicExtractorInterface (const MsRunXicExtractorInterface &other)
 
virtual ~MsRunXicExtractorInterface ()
 

Protected Attributes

QString m_temporaryDirectory
 
QTemporaryDir * mpa_temporaryDirectory = nullptr
 
std::vector< pappso::pappso_doublem_retentionTimeList
 
pappso::pappso_double m_maxMz = 0
 
pappso::pappso_double m_minMz = 5000
 
std::size_t m_rtSize = 0
 
std::deque< MsRunSliceSPtrm_msRunSliceListCache
 
QMutex m_mutex
 
- Protected Attributes inherited from pappso::MsRunXicExtractor
std::vector< MsRunXicExtractorPoints > m_msrun_points
 
- Protected Attributes inherited from pappso::MsRunXicExtractorInterface
MsRunReaderSPtr msp_msrun_reader
 
XicExtractMethod m_xicExtractMethod = XicExtractMethod::max
 

Private Attributes

friend MsRunXicExtractorFactory
 

Detailed Description

Definition at line 44 of file msrunxicextractordisk.h.

Constructor & Destructor Documentation

◆ MsRunXicExtractorDisk() [1/3]

pappso::MsRunXicExtractorDisk::MsRunXicExtractorDisk ( MsRunReaderSPtr msrun_reader)

◆ MsRunXicExtractorDisk() [2/3]

pappso::MsRunXicExtractorDisk::MsRunXicExtractorDisk ( const MsRunXicExtractorDisk other)

Definition at line 68 of file msrunxicextractordisk.cpp.

68 {
69  QString filename(msp_msrun_reader.get()->getMsRunId().get()->getFileName());
70  qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ << " "
71  << filename;
72  try
73  {
74  QByteArray byte_array = filename.toUtf8();
75  std::string res = "";
76  for(char c : byte_array)
77  {

References pappso::c, pappso::MsRunXicExtractorInterface::msp_msrun_reader, and pappso::res.

◆ ~MsRunXicExtractorDisk()

pappso::MsRunXicExtractorDisk::~MsRunXicExtractorDisk ( )
virtual

Definition at line 79 of file msrunxicextractordisk.cpp.

84  {
85  qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;

◆ MsRunXicExtractorDisk() [3/3]

pappso::MsRunXicExtractorDisk::MsRunXicExtractorDisk ( MsRunReaderSPtr msrun_reader,
const QDir &  temporary_dir 
)
protected

Definition at line 60 of file msrunxicextractordisk.cpp.

61  {
63  }
64 }
65 
66 void

References mpa_temporaryDirectory.

Member Function Documentation

◆ acquireSlices()

std::vector< MsRunSliceSPtr > pappso::MsRunXicExtractorDisk::acquireSlices ( const MzRange mz_range)
protected

retrieve all the slices corresponding to a given mz_range

Parameters
mz_rangedesired mz range

Definition at line 347 of file msrunxicextractordisk.cpp.

351  {
352  m_msRunSliceListCache.pop_front();
353  }
354  return slice_list;
355 }
356 
357 
358 void
360 {
361 }
362 } // namespace pappso

◆ appendSliceOnDisk()

void pappso::MsRunXicExtractorDisk::appendSliceOnDisk ( unsigned int  slice_number,
MassSpectrum spectrum,
std::size_t  ipos 
)
protected

append a slice on disk (in a file)

Parameters
slice_numberthe slice number == dalton integer
spectrumthe part of the mass spectrum (mz/intensity) in the range of the slice number
iposthe position in the retention time vector

Definition at line 272 of file msrunxicextractordisk.cpp.

286 {
287  qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
288  try
289  {
290  std::shared_ptr<MsRunSlice> msrun_slice_sp =
291  std::make_shared<MsRunSlice>(MsRunSlice());
292 
293  QFile slice_file(
294  QString("%1/%2").arg(mpa_temporaryDirectory->path()).arg(slice_number));
295  if(!slice_file.exists())
296  {
297  msrun_slice_sp.get()->setSize(m_rtSize);
298  msrun_slice_sp.get()->setSliceNumber(slice_number);
299  return msrun_slice_sp;
300  }
301  if(!slice_file.open(QIODevice::ReadOnly))
302  {

◆ endPwizRead()

void pappso::MsRunXicExtractorDisk::endPwizRead ( )
protectedvirtual

Reimplemented in pappso::MsRunXicExtractorDiskBuffer.

Definition at line 380 of file msrunxicextractordisk.cpp.

◆ getXicCstSPtr()

XicCstSPtr pappso::MsRunXicExtractorDisk::getXicCstSPtr ( const MzRange mz_range,
pappso::pappso_double  rt_begin,
pappso::pappso_double  rt_end 
)
overridevirtual

get a XIC on this MsRun at the given mass range

Parameters
mz_rangemz range to extract
rt_beginbegining of the XIC in seconds
rt_endend of the XIC in seconds

Reimplemented from pappso::MsRunXicExtractor.

Definition at line 122 of file msrunxicextractordisk.cpp.

125  : slice_list)
126  {
127  const MassSpectrum &spectrum = msrun_slice.get()->getSpectrum(i);
128  for(auto &&peak : spectrum)
129  {
130  if(mz_range.contains(peak.x))
131  {
133  {
134  xic_element.y += peak.y;
135  }
136  else
137  {
138  if(xic_element.y < peak.y)
139  {
140  xic_element.y = peak.y;
141  }
142  }
143  }
144  }
145  }
146  msrunxic_sp.get()->push_back(xic_element);
147  }
148 
149  return (msrunxic_sp);
150 }
151 
152 std::vector<XicCstSPtr>
154  const std::vector<MzRange> &mz_range_list)
155 {
156 
157  std::vector<XicCstSPtr> xic_list_return;
158  for(auto &range : mz_range_list)
159  {
160  xic_list_return.push_back(getXicCstSPtr(range, 0, 40000000));
161  }
162  return xic_list_return;
163 }
164 
165 void
167 {
168  qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
169  m_minMz = 5000;
170  m_maxMz = 0;
171 

References pappso::MsRunXicExtractorInterface::m_xicExtractMethod, and pappso::sum.

◆ getXicCstSPtrList()

std::vector< XicCstSPtr > pappso::MsRunXicExtractorDisk::getXicCstSPtrList ( const std::vector< MzRange > &  mz_range_list)
overridevirtual

extract a list of XIC given a list of mass to extract

Reimplemented from pappso::MsRunXicExtractor.

Definition at line 174 of file msrunxicextractordisk.cpp.

187  : m_msrun_points)

◆ prepareExtractor()

void pappso::MsRunXicExtractorDisk::prepareExtractor ( )
protected

Definition at line 88 of file msrunxicextractordisk.cpp.

91  {
92  qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
94  QObject::tr("Error reading file (%1) using : %2")
95  .arg(filename)
96  .arg(error.what()));
97  }
98 }
99 
101 MsRunXicExtractorDisk::getXicCstSPtr(const MzRange &mz_range,
102  pappso::pappso_double rt_begin,
103  pappso::pappso_double rt_end)
104 {
105  std::shared_ptr<Xic> msrunxic_sp = std::make_shared<Xic>(Xic());
106 
107  std::vector<MsRunSliceSPtr> slice_list;
108  slice_list = acquireSlices(mz_range);
109 
110  if(slice_list.size() == 0)
111  {
113  QObject::tr("Error getMsRunXicSp slice_list.size() == 0"));
114  }
115 
116  for(std::size_t i = 0; i < m_retentionTimeList.size(); i++)
117  {
118 
119  DataPoint xic_element;

◆ serializeMsRun()

void pappso::MsRunXicExtractorDisk::serializeMsRun ( )
protected

Definition at line 187 of file msrunxicextractordisk.cpp.

187  : m_msrun_points)
188  {
189 
190  spectrum_map.clear();
191 
192  m_retentionTimeList.push_back(msrun_point.rt);
193 
194  spectrum =
195  msp_msrun_reader.get()->massSpectrumCstSPtr(msrun_point.spectrum_index);
196 
197  const MassSpectrum *p_spectrum = spectrum.get();
198  if(p_spectrum->size() > 0)
199  {
200  if(p_spectrum->begin()->x < m_minMz)
201  {
202  m_minMz = p_spectrum->begin()->x;
203  }
204  // iterate through the m/z-intensity pairs
205 
206  if(p_spectrum->back().x > m_maxMz)
207  {
208  m_maxMz = p_spectrum->back().x;
209  }
210 
211  for(auto &peak : *p_spectrum)
212  {
213 
214  slice_number = peak.x;
215 
216  std::pair<std::map<unsigned int, MassSpectrum>::iterator, bool>
217  ret = spectrum_map.insert(std::pair<unsigned int, MassSpectrum>(
218  slice_number, MassSpectrum()));
219 
220  ret.first->second.push_back(peak);
221  // auto ret = spectrum_map.insert(std::pair<unsigned int,
222  // MassSpectrum>(slice_number,MassSpectrum()));
223  // ret.first->second.push_back(peak);
224  }
225 
226  // slices are ready for this retention time
227  storeSlices(spectrum_map, m_retentionTimeList.size() - 1);
228  }
229  }
230 
231  endPwizRead();
232  qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
233 }
234 
235 
236 void
238  std::map<unsigned int, MassSpectrum> &spectrum_map, std::size_t ipos)
239 {
240  // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
241 
242  for(auto &&spectrum_pair : spectrum_map)
243  {
244  appendSliceOnDisk(spectrum_pair.first, spectrum_pair.second, ipos);
245  }
246 
247  // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
248 }
249 
250 void
251 MsRunXicExtractorDisk::appendSliceOnDisk(unsigned int slice_number,
252  MassSpectrum &spectrum,
253  std::size_t ipos)
254 {

References m_maxMz, m_minMz, m_retentionTimeList, pappso::MsRunXicExtractorInterface::msp_msrun_reader, and storeSlices().

◆ storeSlices()

void pappso::MsRunXicExtractorDisk::storeSlices ( std::map< unsigned int, MassSpectrum > &  slice_vector,
std::size_t  ipos 
)
protectedvirtual

store MassSpectrum slices (by daltons) for a given retention time

Parameters
slice_vectormass spectrum chunks (by daltons)
iposthe position in the retention time vector

Reimplemented in pappso::MsRunXicExtractorDiskBuffer.

Definition at line 258 of file msrunxicextractordisk.cpp.

260  {
261  new_file = true;
262  }
263  if(!slice_file.open(QIODevice::WriteOnly | QIODevice::Append))
264  {
266  QObject::tr("unable to open file %1").arg(slice_file.fileName()));
267  }
268  QDataStream stream(&slice_file);
269 

Referenced by serializeMsRun().

◆ unserializeSlice()

MsRunSliceSPtr pappso::MsRunXicExtractorDisk::unserializeSlice ( unsigned int  slice_number)
protected

get one slice from disk by her slice number (dalton)

Parameters
slice_numberthe slice number == dalton integer

Definition at line 306 of file msrunxicextractordisk.cpp.

316  {
318  QObject::tr("error unserializing slice %1:\n%2")
319  .arg(slice_number)
320  .arg(error.qwhat()));
321  }
322  qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
323 }
324 
325 std::vector<MsRunSliceSPtr>
326 MsRunXicExtractorDisk::acquireSlices(const MzRange &mz_range)
327 {
328  QMutexLocker lock(&m_mutex);
329  std::vector<MsRunSliceSPtr> slice_list;
330  for(unsigned int i = mz_range.lower(); i <= mz_range.upper(); i++)
331  {
332  auto it = std::find_if(m_msRunSliceListCache.begin(),
333  m_msRunSliceListCache.end(),
334  [i](const MsRunSliceSPtr &slice_sp) {
335  return slice_sp.get()->getSliceNumber() == i;
336  });
337  if(it != m_msRunSliceListCache.end())
338  {
339  slice_list.push_back(*it);
340  m_msRunSliceListCache.push_back(*it);
341  }
342  else
343  {
344  MsRunSliceSPtr slice_sp = unserializeSlice(i);

Member Data Documentation

◆ m_maxMz

pappso::pappso_double pappso::MsRunXicExtractorDisk::m_maxMz = 0
protected

Definition at line 102 of file msrunxicextractordisk.h.

Referenced by serializeMsRun().

◆ m_minMz

pappso::pappso_double pappso::MsRunXicExtractorDisk::m_minMz = 5000
protected

Definition at line 103 of file msrunxicextractordisk.h.

Referenced by serializeMsRun().

◆ m_msRunSliceListCache

std::deque<MsRunSliceSPtr> pappso::MsRunXicExtractorDisk::m_msRunSliceListCache
protected

Definition at line 107 of file msrunxicextractordisk.h.

◆ m_mutex

QMutex pappso::MsRunXicExtractorDisk::m_mutex
protected

Definition at line 109 of file msrunxicextractordisk.h.

◆ m_retentionTimeList

std::vector<pappso::pappso_double> pappso::MsRunXicExtractorDisk::m_retentionTimeList
protected

Definition at line 100 of file msrunxicextractordisk.h.

Referenced by serializeMsRun().

◆ m_rtSize

std::size_t pappso::MsRunXicExtractorDisk::m_rtSize = 0
protected

Definition at line 105 of file msrunxicextractordisk.h.

◆ m_temporaryDirectory

QString pappso::MsRunXicExtractorDisk::m_temporaryDirectory
protected

Definition at line 98 of file msrunxicextractordisk.h.

◆ mpa_temporaryDirectory

QTemporaryDir* pappso::MsRunXicExtractorDisk::mpa_temporaryDirectory = nullptr
protected

Definition at line 99 of file msrunxicextractordisk.h.

Referenced by MsRunXicExtractorDisk().

◆ MsRunXicExtractorFactory

friend pappso::MsRunXicExtractorDisk::MsRunXicExtractorFactory
private

Definition at line 46 of file msrunxicextractordisk.h.


The documentation for this class was generated from the following files:
pappso::pappso_double
double pappso_double
A type definition for doubles.
Definition: types.h:69
pappso::MsRunXicExtractorDisk::acquireSlices
std::vector< MsRunSliceSPtr > acquireSlices(const MzRange &mz_range)
retrieve all the slices corresponding to a given mz_range
Definition: msrunxicextractordisk.cpp:347
pappso::MsRunXicExtractorDisk::mpa_temporaryDirectory
QTemporaryDir * mpa_temporaryDirectory
Definition: msrunxicextractordisk.h:99
pappso::MsRunXicExtractorDisk::m_msRunSliceListCache
std::deque< MsRunSliceSPtr > m_msRunSliceListCache
Definition: msrunxicextractordisk.h:107
pappso::MsRunXicExtractorDisk::m_mutex
QMutex m_mutex
Definition: msrunxicextractordisk.h:109
pappso::MsRunXicExtractorDisk::m_rtSize
std::size_t m_rtSize
Definition: msrunxicextractordisk.h:105
pappso::MsRunXicExtractorDisk::m_retentionTimeList
std::vector< pappso::pappso_double > m_retentionTimeList
Definition: msrunxicextractordisk.h:100
pappso::MsRunXicExtractorDisk::m_minMz
pappso::pappso_double m_minMz
Definition: msrunxicextractordisk.h:103
pappso::PrecisionUnit::res
@ res
pappso::MsRunXicExtractorInterface::m_xicExtractMethod
XicExtractMethod m_xicExtractMethod
Definition: msrunxicextractorinterface.h:106
pappso::MsRunXicExtractorDisk::m_maxMz
pappso::pappso_double m_maxMz
Definition: msrunxicextractordisk.h:102
pappso::MsRunXicExtractorDisk::storeSlices
virtual void storeSlices(std::map< unsigned int, MassSpectrum > &slice_vector, std::size_t ipos)
store MassSpectrum slices (by daltons) for a given retention time
Definition: msrunxicextractordisk.cpp:258
pappso::XicCstSPtr
std::shared_ptr< const Xic > XicCstSPtr
Definition: xic.h:58
pappso::MsRunXicExtractorInterface::msp_msrun_reader
MsRunReaderSPtr msp_msrun_reader
Definition: msrunxicextractorinterface.h:105
pappso::XicExtractMethod::sum
@ sum
sum of intensities
pappso::MsRunSliceSPtr
std::shared_ptr< const MsRunSlice > MsRunSliceSPtr
Definition: msrunslice.h:60
pappso::MsRunXicExtractorDisk::serializeMsRun
void serializeMsRun()
Definition: msrunxicextractordisk.cpp:187
pappso::MsRunXicExtractorDisk::getXicCstSPtrList
virtual std::vector< XicCstSPtr > getXicCstSPtrList(const std::vector< MzRange > &mz_range_list) override
extract a list of XIC given a list of mass to extract
Definition: msrunxicextractordisk.cpp:174
pappso::MsRunXicExtractorDisk::getXicCstSPtr
virtual XicCstSPtr getXicCstSPtr(const MzRange &mz_range, pappso::pappso_double rt_begin, pappso::pappso_double rt_end) override
get a XIC on this MsRun at the given mass range
Definition: msrunxicextractordisk.cpp:122
pappso::MsRunXicExtractorDisk::unserializeSlice
MsRunSliceSPtr unserializeSlice(unsigned int slice_number)
get one slice from disk by her slice number (dalton)
Definition: msrunxicextractordisk.cpp:306
pappso::MsRunXicExtractor::m_msrun_points
std::vector< MsRunXicExtractorPoints > m_msrun_points
Definition: msrunxicextractor.h:46
pappso::MsRunXicExtractorDisk::appendSliceOnDisk
void appendSliceOnDisk(unsigned int slice_number, MassSpectrum &spectrum, std::size_t ipos)
append a slice on disk (in a file)
Definition: msrunxicextractordisk.cpp:272
pappso::MsRunXicExtractorDisk::endPwizRead
virtual void endPwizRead()
Definition: msrunxicextractordisk.cpp:380
pappso::PappsoException
Definition: pappsoexception.h:62