libpappsomspp
Library for mass spectrometry
pappso::MsRunXicExtractorDiskBuffer Class Reference

#include <msrunxicextractordiskbuffer.h>

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

Public Member Functions

 MsRunXicExtractorDiskBuffer (const MsRunXicExtractorDiskBuffer &other)
 
virtual ~MsRunXicExtractorDiskBuffer ()
 
- Public Member Functions inherited from pappso::MsRunXicExtractorDisk
 MsRunXicExtractorDisk (MsRunReaderSPtr &msrun_reader)
 
 MsRunXicExtractorDisk (const MsRunXicExtractorDisk &other)
 
virtual ~MsRunXicExtractorDisk ()
 
virtual void extractXicCoordSPtrList (UiMonitorInterface &monitor, std::vector< XicCoordSPtr > &xic_coord_list) override
 extract a list of XIC given a list of xic coordinates 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...
 
void setRetentionTimeAroundTarget (double range_in_seconds)
 set the retention time range in seconds around the target rt More...
 
const MsRunIdCstSPtrgetMsRunId () const
 
const MsRunReaderSPtrgetMsRunReaderSPtr () const
 get the msrunreader currently used for XIC extraction More...
 

Protected Member Functions

 MsRunXicExtractorDiskBuffer (MsRunReaderSPtr &msrun_reader, const QDir &temporary_dir)
 
virtual void storeSlices (std::map< unsigned int, MassSpectrum > &slice_vector, std::size_t ipos) override
 store MassSpectrum slices (by daltons) for a given retention time More...
 
void appendSliceInBuffer (unsigned int slice_number, MassSpectrum &spectrum, std::size_t ipos)
 
void flushBufferOnDisk ()
 
virtual void endPwizRead () override
 
- Protected Member Functions inherited from pappso::MsRunXicExtractorDisk
 MsRunXicExtractorDisk (MsRunReaderSPtr &msrun_reader, const QDir &temporary_dir)
 
void prepareExtractor ()
 
void serializeMsRun ()
 
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...
 
- 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

std::map< unsigned int, QByteArray > m_sliceBufferMap
 
std::size_t m_bufferSize = 0
 
std::size_t m_bufferMaxSize = 150
 
- Protected Attributes inherited from pappso::MsRunXicExtractorDisk
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< MsRunXicExtractorPointsm_msrun_points
 
- Protected Attributes inherited from pappso::MsRunXicExtractorInterface
MsRunReaderSPtr msp_msrun_reader
 
XicExtractMethod m_xicExtractMethod = XicExtractMethod::max
 
double m_retentionTimeAroundTarget = std::numeric_limits<double>::max()
 

Private Attributes

friend MsRunXicExtractorFactory
 

Detailed Description

Definition at line 43 of file msrunxicextractordiskbuffer.h.

Constructor & Destructor Documentation

◆ MsRunXicExtractorDiskBuffer() [1/2]

pappso::MsRunXicExtractorDiskBuffer::MsRunXicExtractorDiskBuffer ( const MsRunXicExtractorDiskBuffer other)

Definition at line 48 of file msrunxicextractordiskbuffer.cpp.

50  : MsRunXicExtractorDisk(other)
51 {
52 
53  m_sliceBufferMap.clear();
54 }
std::map< unsigned int, QByteArray > m_sliceBufferMap
MsRunXicExtractorDisk(MsRunReaderSPtr &msrun_reader)

References m_sliceBufferMap.

◆ ~MsRunXicExtractorDiskBuffer()

pappso::MsRunXicExtractorDiskBuffer::~MsRunXicExtractorDiskBuffer ( )
virtual

Definition at line 56 of file msrunxicextractordiskbuffer.cpp.

57 {
58 }

◆ MsRunXicExtractorDiskBuffer() [2/2]

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

Definition at line 40 of file msrunxicextractordiskbuffer.cpp.

42  : MsRunXicExtractorDisk(msrun_reader, temporary_dir)
43 {
44 
45  m_sliceBufferMap.clear();
46 }

References m_sliceBufferMap.

Member Function Documentation

◆ appendSliceInBuffer()

void pappso::MsRunXicExtractorDiskBuffer::appendSliceInBuffer ( unsigned int  slice_number,
MassSpectrum spectrum,
std::size_t  ipos 
)
protected

Definition at line 78 of file msrunxicextractordiskbuffer.cpp.

81 {
82  qDebug();
83 
84  std::size_t spectrum_size = spectrum.size();
85 
86  if(spectrum_size == 0)
87  return;
88  try
89  {
90  std::pair<std::map<unsigned int, QByteArray>::iterator, bool> ret =
91  m_sliceBufferMap.insert(
92  std::pair<unsigned int, QByteArray>(slice_number, QByteArray()));
93 
94 
95  if(ret.second)
96  { // new buffer
97  ret.first->second.resize(0);
98  QDataStream outstream(&ret.first->second, QIODevice::WriteOnly);
99  outstream << (quint32)ipos;
100  outstream << spectrum;
101  }
102  else
103  {
104  QDataStream outstream(&ret.first->second,
105  QIODevice::WriteOnly | QIODevice::Append);
106  outstream << (quint32)ipos;
107  outstream << spectrum;
108  }
109  }
110  catch(PappsoException &error_pappso)
111  {
113  QObject::tr("appendSliceInBuffer : error ipos=%1 :\n%2")
114  .arg(ipos)
115  .arg(error_pappso.qwhat()));
116  }
117  catch(std::exception &error)
118  {
120  QObject::tr("appendSliceInBuffer slice_number=%1 ipos=%2 error :\n%3")
121  .arg(slice_number)
122  .arg(ipos)
123  .arg(error.what()));
124  }
125  qDebug();
126 }

References m_sliceBufferMap, and pappso::PappsoException::qwhat().

Referenced by storeSlices().

◆ endPwizRead()

void pappso::MsRunXicExtractorDiskBuffer::endPwizRead ( )
overrideprotectedvirtual

◆ flushBufferOnDisk()

void pappso::MsRunXicExtractorDiskBuffer::flushBufferOnDisk ( )
protected

Definition at line 130 of file msrunxicextractordiskbuffer.cpp.

131 {
132  qDebug();
133 
134  try
135  {
136  for(auto &buffer_pair : m_sliceBufferMap)
137  {
138 
139  if(buffer_pair.second.size() > 0)
140  {
141  QFile slice_file(QString("%1/%2")
142  .arg(mpa_temporaryDirectory->path())
143  .arg(buffer_pair.first));
144  bool new_file = false;
145  if(!slice_file.exists())
146  {
147  new_file = true;
148 
149  if(!slice_file.open(QIODevice::WriteOnly))
150  {
152  QObject::tr("unable to open file %1")
153  .arg(slice_file.fileName()));
154  }
155  }
156  else
157  {
158  if(!slice_file.open(QIODevice::WriteOnly | QIODevice::Append))
159  {
161  QObject::tr("unable to open file %1")
162  .arg(slice_file.fileName()));
163  }
164  }
165 
166  QDataStream stream(&slice_file);
167 
168  if(new_file)
169  {
170  stream << (quint32)buffer_pair.first;
171  stream << (quint32)m_rtSize;
172  stream.writeRawData(buffer_pair.second.constData(),
173  buffer_pair.second.size());
174  }
175  else
176  {
177  stream.writeRawData(buffer_pair.second.constData(),
178  buffer_pair.second.size());
179  }
180 
181 
182  slice_file.flush();
183  slice_file.close();
184  }
185  // buffer_pair.second = std::vector<MassSpectrum>();
186  }
187 
188  m_bufferSize = 0;
189  m_sliceBufferMap.clear();
190  }
191  catch(PappsoException &error_pappso)
192  {
194  QObject::tr("flushBufferOnDisk error :\n%1").arg(error_pappso.qwhat()));
195  }
196  catch(std::exception &error)
197  {
199  QObject::tr("flushBufferOnDisk error :\n%1").arg(error.what()));
200  }
201  qDebug();
202 }

References m_bufferSize, pappso::MsRunXicExtractorDisk::m_rtSize, m_sliceBufferMap, pappso::MsRunXicExtractorDisk::mpa_temporaryDirectory, and pappso::PappsoException::qwhat().

Referenced by endPwizRead(), and storeSlices().

◆ storeSlices()

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

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 from pappso::MsRunXicExtractorDisk.

Definition at line 61 of file msrunxicextractordiskbuffer.cpp.

63 {
64 
65  m_bufferSize++;
66  for(auto &&msrun_slice : slice_vector)
67  {
68  appendSliceInBuffer(msrun_slice.first, msrun_slice.second, ipos);
69  }
70 
72  {
74  }
75 }
void appendSliceInBuffer(unsigned int slice_number, MassSpectrum &spectrum, std::size_t ipos)

References appendSliceInBuffer(), flushBufferOnDisk(), m_bufferMaxSize, and m_bufferSize.

Member Data Documentation

◆ m_bufferMaxSize

std::size_t pappso::MsRunXicExtractorDiskBuffer::m_bufferMaxSize = 150
protected

Definition at line 69 of file msrunxicextractordiskbuffer.h.

Referenced by storeSlices().

◆ m_bufferSize

std::size_t pappso::MsRunXicExtractorDiskBuffer::m_bufferSize = 0
protected

Definition at line 68 of file msrunxicextractordiskbuffer.h.

Referenced by flushBufferOnDisk(), and storeSlices().

◆ m_sliceBufferMap

std::map<unsigned int, QByteArray> pappso::MsRunXicExtractorDiskBuffer::m_sliceBufferMap
protected

◆ MsRunXicExtractorFactory

friend pappso::MsRunXicExtractorDiskBuffer::MsRunXicExtractorFactory
private

Definition at line 45 of file msrunxicextractordiskbuffer.h.


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