libpappsomspp
Library for mass spectrometry
Loading...
Searching...
No Matches
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

◆ getFrameId()

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

◆ 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 }
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: