libpappsomspp
Library for mass spectrometry
pappso::TimsFrameRawDataChunck Class Reference

#include <timsframerawdatachunck.h>

Public Member Functions

 TimsFrameRawDataChunck ()
 
virtual ~TimsFrameRawDataChunck ()
 
bool readTimsFrame (QFile *p_file, std::size_t frameId, const std::vector< pappso::TimsFrameRecord > &frame_record_list)
 
quint32 getFrameNumberOfScans () const
 
quint32 getCompressedSize () const
 
quint32 getFrameLength () const
 
char * getMemoryBuffer () const
 
std::size_t getFrameId () const
 

Private Attributes

char * mpa_memoryBuffer = nullptr
 
qint64 m_memoryBufferSize = 0
 
std::size_t m_frameId = 0
 
quint32 m_frameLength = 0
 
quint32 m_frameNumberOfScans = 0
 

Detailed Description

Todo:
write docs

Definition at line 40 of file timsframerawdatachunck.h.

Constructor & Destructor Documentation

◆ TimsFrameRawDataChunck()

TimsFrameRawDataChunck::TimsFrameRawDataChunck ( )

Default constructor

Definition at line 36 of file timsframerawdatachunck.cpp.

37 {
38 }

◆ ~TimsFrameRawDataChunck()

TimsFrameRawDataChunck::~TimsFrameRawDataChunck ( )
virtual

Destructor

Definition at line 40 of file timsframerawdatachunck.cpp.

41 {
42  if(mpa_memoryBuffer != nullptr)
43  delete[] mpa_memoryBuffer;
44 }

References mpa_memoryBuffer.

Member Function Documentation

◆ getCompressedSize()

quint32 pappso::TimsFrameRawDataChunck::getCompressedSize ( ) const

Definition at line 192 of file timsframerawdatachunck.cpp.

193 {
194  return m_frameLength - 8;
195 }

Referenced by pappso::TimsBinDec::getTimsFrameFromRawDataChunck().

◆ getFrameId()

std::size_t pappso::TimsFrameRawDataChunck::getFrameId ( ) const

Definition at line 210 of file timsframerawdatachunck.cpp.

211 {
212  return m_frameId;
213 }

Referenced by pappso::TimsBinDec::getTimsFrameFromRawDataChunck().

◆ getFrameLength()

quint32 pappso::TimsFrameRawDataChunck::getFrameLength ( ) const

Definition at line 204 of file timsframerawdatachunck.cpp.

205 {
206  return m_frameLength;
207 }

Referenced by pappso::TimsBinDec::getTimsFrameFromRawDataChunck().

◆ getFrameNumberOfScans()

quint32 pappso::TimsFrameRawDataChunck::getFrameNumberOfScans ( ) const

◆ getMemoryBuffer()

char * pappso::TimsFrameRawDataChunck::getMemoryBuffer ( ) const

Definition at line 186 of file timsframerawdatachunck.cpp.

187 {
188  return mpa_memoryBuffer;
189 }

Referenced by pappso::TimsBinDec::getTimsFrameFromRawDataChunck().

◆ readTimsFrame()

bool TimsFrameRawDataChunck::readTimsFrame ( QFile *  p_file,
std::size_t  frameId,
const std::vector< pappso::TimsFrameRecord > &  frame_record_list 
)

Definition at line 47 of file timsframerawdatachunck.cpp.

51 {
52 
53  m_frameId = frameId;
54  qint64 position = p_file->pos();
55  const pappso::TimsFrameRecord &frame_record = frame_record_list[frameId];
56  if(frameId == 1)
57  {
58  bool seekpos_ok = p_file->seek(frame_record.tims_offset);
59  if(!seekpos_ok)
60  {
61  throw PappsoException(QObject::tr("ERROR reading TIMS frame %1 "
62  "m_timsBinFile.seek(%3) failed")
63  .arg(frameId)
64  .arg(frame_record.tims_offset));
65  }
66  }
67  else
68  {
69 
70  if(position == (qint64)frame_record.tims_offset)
71  {
72  // OK
73  }
74  else
75  {
76  // need to move to frame position :
77  if(position > (qint64)frame_record.tims_offset)
78  {
79  // get back
80  p_file->seek(frame_record.tims_offset);
81  position = p_file->pos();
82  }
83  else
84  {
85  const pappso::TimsFrameRecord &previous_frame_record =
86  frame_record_list[frameId - 1];
87  if(position < (qint64)previous_frame_record.tims_offset)
88  {
89 
90  throw PappsoException(
91  QObject::tr("ERROR reading TIMS frame %1 "
92  "file position %2 is before previous frame %3")
93  .arg(frameId)
94  .arg(position)
95  .arg(previous_frame_record.tims_offset));
96  }
97  else
98  {
99  // catch up current position
100  qint64 move_size =
101  (qint64)frame_record.tims_offset - position;
102  p_file->read(move_size);
103  position = p_file->pos();
104  }
105  }
106  }
107  }
108 
109  if(position != (qint64)frame_record.tims_offset)
110  {
111 
112  throw PappsoException(
113  QObject::tr("ERROR reading TIMS frame %1 "
114  "file position %2 is different of frame offset %3")
115  .arg(frameId)
116  .arg(position)
117  .arg(frame_record.tims_offset));
118  }
119  qDebug();
120  p_file->read((char *)&m_frameLength, 4);
121  // frame_length = qToBigEndian(frame_length);
122 
123  // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__
124  // << " frame_length=" << frame_length;
125 
126  qDebug();
127  p_file->read((char *)&m_frameNumberOfScans, 4);
128  // scan_number = qToBigEndian(scan_number);
129 
130  // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__
131  // << " pos=" << m_timsBinFile.pos();
132 
133  // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__
134  // << " scan_number=" << scan_number;
135  // m_timsBinFile.seek(m_indexArray.at(timsId) + 8);
136 
137 
138  qDebug();
139 
140  // if (m_memoryBufferSize
141  if(mpa_memoryBuffer == nullptr)
142  {
143  qDebug() << "mpa_memoryBuffer == nullptr";
144  m_memoryBufferSize = (qint64)m_frameLength + 10;
146  }
147  if((m_memoryBufferSize - 10) < m_frameLength)
148  {
149  if(mpa_memoryBuffer != nullptr)
150  {
151  delete[] mpa_memoryBuffer;
152  }
153  m_memoryBufferSize = (qint64)m_frameLength + 10;
155  }
156 
157 
158  // QByteArray frame_byte_array(mpa_memoryBuffer, m_memoryBufferSize);
159 
160  qDebug();
161  qint64 read_length =
162  p_file->read(mpa_memoryBuffer, (qint64)m_frameLength - 8);
163  qDebug();
164 
165  // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__
166  // << " +frame_length-1="
167  // << (quint8) * (frame_byte_array.constData() + frame_length - 1);
168  // qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__
169  // << " +frame_length="
170  // << (quint8) * (frame_byte_array.constData() + frame_length);
171  // m_timsBinFile.seek(m_indexArray.at(timsId) + 8);
172 
173  if(read_length + 8 != (qint64)m_frameLength)
174  {
175  throw PappsoException(QObject::tr("ERROR reading TIMS frame %1: "
176  "read_length=%2 != %3frame_length")
177  .arg(frameId)
178  .arg(read_length)
179  .arg(m_frameLength));
180  }
181 
182  return true;
183 }

References m_frameId, m_frameLength, m_frameNumberOfScans, m_memoryBufferSize, mpa_memoryBuffer, and pappso::TimsFrameRecord::tims_offset.

Referenced by pappso::TimsBinDec::getTimsFrameSPtrByOffset().

Member Data Documentation

◆ m_frameId

std::size_t pappso::TimsFrameRawDataChunck::m_frameId = 0
private

Definition at line 70 of file timsframerawdatachunck.h.

Referenced by readTimsFrame().

◆ m_frameLength

quint32 pappso::TimsFrameRawDataChunck::m_frameLength = 0
private

Definition at line 71 of file timsframerawdatachunck.h.

Referenced by readTimsFrame().

◆ m_frameNumberOfScans

quint32 pappso::TimsFrameRawDataChunck::m_frameNumberOfScans = 0
private

Definition at line 72 of file timsframerawdatachunck.h.

Referenced by readTimsFrame().

◆ m_memoryBufferSize

qint64 pappso::TimsFrameRawDataChunck::m_memoryBufferSize = 0
private

Definition at line 68 of file timsframerawdatachunck.h.

Referenced by readTimsFrame().

◆ mpa_memoryBuffer

char* pappso::TimsFrameRawDataChunck::mpa_memoryBuffer = nullptr
private

Definition at line 67 of file timsframerawdatachunck.h.

Referenced by ~TimsFrameRawDataChunck(), and readTimsFrame().


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