libpappsomspp
Library for mass spectrometry
Loading...
Searching...
No Matches
pappso::cbor::mzcbor::Spectrum Struct Reference

#include <spectrum.h>

Public Member Functions

void fromCbor (CborStreamReader &reader, bool want_binary_data)
 fill the structure reading data from a CBOR stream
QJsonObject toJsonObject () const
 write the structure to a JSON object This is a simplified representation for easy JSON data handling binary arrays are decoded in simple traces
void decodeTrace (pappso::Trace &trace) const
uint getMsLevel () const
double getRtInSeconds () const
qint64 getTotalIonCount () const

Static Public Member Functions

static std::map< QString, pappso::cbor::mzcbor::CvParamreadScanCvParams (CborStreamReader &reader)

Public Attributes

QString id
std::size_t index
std::size_t defaultArrayLength
CvParamMap cvParamMap
CvParamMap scanListCvParamMap
CvParamMap precursorListCvParamMap
std::vector< ScanscanList
std::vector< PrecursorprecursorList
std::vector< BinaryDataArraybinaryDataArrayList

Detailed Description

Todo
write docs

Definition at line 47 of file spectrum.h.

Member Function Documentation

◆ decodeTrace()

void pappso::cbor::mzcbor::Spectrum::decodeTrace ( pappso::Trace & trace) const

Definition at line 353 of file spectrum.cpp.

354{
355 std::vector<pappso_double> xVector;
356 std::vector<pappso_double> yVector;
357 for(auto &binary_array : binaryDataArrayList)
358 {
359 if(binary_array.isIntensity())
360 {
361 binary_array.decodeVector(defaultArrayLength, yVector);
362 }
363 else if(binary_array.isMz())
364 {
365 binary_array.decodeVector(defaultArrayLength, xVector);
366 }
367 else
368 {
369
370 throw pappso::ExceptionNotFound(QObject::tr(
371 "error in pappso::cbor::mzcbor::Spectrum::decodeTrace: binary vector type not found"));
372 }
373 }
374
375 trace.initialize(xVector, yVector);
376}
size_t initialize(const std::vector< pappso_double > &xVector, const std::vector< pappso_double > &yVector)
Definition trace.cpp:597
std::vector< BinaryDataArray > binaryDataArrayList
Definition spectrum.h:82

References binaryDataArrayList, defaultArrayLength, and pappso::Trace::initialize().

Referenced by pappso::MzcborMsRunReader::massSpectrumSPtr(), pappso::MzcborMsRunReader::qualifiedMassSpectrum(), pappso::cbor::mzcbor::MzcborSpectrumCollectionReader::readSpectrum(), and toJsonObject().

◆ fromCbor()

void pappso::cbor::mzcbor::Spectrum::fromCbor ( CborStreamReader & reader,
bool want_binary_data )

fill the structure reading data from a CBOR stream

Parameters
readerCBOR stream
want_binary_dataif true, stores also binary data array list

Definition at line 40 of file spectrum.cpp.

41{
42 QString txt_value;
43 // cborBinaryDataArray.clear();
44 precursorList.clear();
46 index = 0;
47 cvParamMap.clear();
48 scanListCvParamMap.clear();
49 scanList.clear();
50 id.clear();
51 qDebug();
52
53 if(reader.isInvalid())
54 {
55 throw pappso::PappsoException(
56 QObject::tr("ERROR in Spectrum::fromCbor :\ncbor is not valid"));
57 }
58 if(reader.enterContainer())
59 {
60 while(reader.hasNext() && (!reader.isInvalid()))
61 {
62 if(reader.isString())
63 {
64 reader.decodeString(txt_value);
65 qDebug() << txt_value;
66 if(txt_value == "id")
67 {
68 reader.decodeString(txt_value);
69 qDebug() << txt_value;
70 id = txt_value;
71 }
72 else if(txt_value == "index")
73 {
74 index = reader.toUnsignedInteger();
75 reader.next();
76 }
77 else if(txt_value == "defaultArrayLength")
78 {
79 defaultArrayLength = reader.toUnsignedInteger();
80 reader.next();
81 }
82 else if(txt_value == "cvParam")
83 {
84 cvParamMap.fromCbor(reader);
85 }
86 else if(txt_value == "scanList")
87 {
88 // mpa_cborReader->next();
89 reader.enterContainer();
90
91 while(reader.hasNext() && (!reader.isInvalid()))
92 {
93 if(reader.isString())
94 {
95 if(reader.decodeString(txt_value))
96 {
97 qDebug() << txt_value;
98 if(txt_value == "cvParam")
99 {
100 scanListCvParamMap.fromCbor(reader);
101 }
102 else if(txt_value == "scan")
103 {
104 // scan array
105 reader.enterContainer();
106
107 while(reader.hasNext() && (!reader.isInvalid()))
108 {
109 // scan array
110 Scan scan;
111 scan.fromCbor(reader);
112 scanList.emplace_back(scan);
113 }
114 reader.leaveContainer();
115 }
116 }
117 else
118 {
119 reader.next();
120 }
121 }
122 else
123 {
124 reader.next();
125 }
126 }
127 reader.leaveContainer();
128 }
129 else if(txt_value == "precursorList")
130 {
131
132 reader.enterContainer();
133
134 while(reader.hasNext() && (!reader.isInvalid()))
135 {
136 if(reader.isString())
137 {
138 if(reader.decodeString(txt_value))
139 {
140 qDebug() << txt_value;
141
142 if(txt_value == "cvParam")
143 {
144 precursorListCvParamMap.fromCbor(reader);
145 }
146 else if(txt_value == "precursor")
147 {
148
149 reader
150 .enterContainer(); // array
151
152 while(reader.hasNext() && (!reader.isInvalid()))
153 {
154 // scan array
155 Precursor precursor;
156 precursor.fromCbor(reader);
157 precursorList.emplace_back(precursor);
158 }
159 reader
160 .leaveContainer(); // array
161
162 // reader.next();
163 }
164 else
165 {
166 reader.next();
167 }
168 }
169 else
170 {
171 reader.next();
172 }
173 }
174 else
175 {
176 reader.next();
177 }
178 }
179 reader.leaveContainer();
180 }
181 else if(txt_value == "binaryDataArray")
182 {
183 if(want_binary_data)
184 {
185
186 reader.enterContainer(); // start array
187
188 while(reader.hasNext())
189 {
190
191 BinaryDataArray data_array;
192 data_array.fromCbor(reader);
193 binaryDataArrayList.emplace_back(data_array);
194 }
195
196 reader.leaveContainer(); // end array
197 }
198 else
199 {
200 reader.next();
201 }
202 }
203 else
204 {
205 reader.next();
206 }
207 }
208 // reader.next();
209 }
210
211 reader.leaveContainer();
212 }
213 else
214 {
215 throw pappso::PappsoException(QObject::tr("ERROR in Spectrum::fromCbor : no container"));
216 }
217
218
219 if(reader.lastError() != QCborError::NoError)
220 {
221 throw pappso::PappsoException(
222 QObject::tr("ERROR in Spectrum::fromCbor :\n%1").arg(reader.lastError()));
223 }
224}
std::vector< Precursor > precursorList
Definition spectrum.h:81
std::vector< Scan > scanList
Definition spectrum.h:80

References binaryDataArrayList, cvParamMap, pappso::cbor::CborStreamReader::decodeString(), defaultArrayLength, pappso::cbor::mzcbor::BinaryDataArray::fromCbor(), pappso::cbor::mzcbor::Precursor::fromCbor(), pappso::cbor::mzcbor::Scan::fromCbor(), index, precursorList, precursorListCvParamMap, scanList, and scanListCvParamMap.

Referenced by pappso::MzcborMsRunReader::fillMzcborSpectrum(), and pappso::cbor::mzcbor::MzcborSpectrumCollectionReader::readSpectrum().

◆ getMsLevel()

uint pappso::cbor::mzcbor::Spectrum::getMsLevel ( ) const

Definition at line 325 of file spectrum.cpp.

326{
327 // <cvParam cvRef="MS" accession="MS:1000511" value="1" name="ms level" />
328
329 auto it = cvParamMap.find("MS:1000511");
330 if(it == cvParamMap.end())
331 {
332 throw pappso::ExceptionNotFound(QObject::tr("MS level not found in cvParam map"));
333 }
334 qDebug() << it->first << " " << it->second.valueInt;
335 return it->second.valueInt;
336}

References cvParamMap.

Referenced by pappso::MzcborMsRunReader::qualifiedMassSpectrum(), and pappso::cbor::mzcbor::MzcborSpectrumCollectionReader::readSpectrum().

◆ getRtInSeconds()

double pappso::cbor::mzcbor::Spectrum::getRtInSeconds ( ) const

Definition at line 339 of file spectrum.cpp.

340{
341 if(scanList.size() == 0)
342 {
343 throw pappso::ExceptionNotFound(QObject::tr("scan list is empty in spectrum"));
344 }
345 if(scanList.size() > 1)
346 {
347 throw pappso::ExceptionNotFound(QObject::tr("too many scans in spectrum"));
348 }
349 return scanList.front().getRtInSeconds();
350}

References scanList.

Referenced by pappso::MzcborMsRunReader::newXicCoordSPtrFromSpectrumIndex(), pappso::MzcborMsRunReader::qualifiedMassSpectrum(), and pappso::cbor::mzcbor::MzcborSpectrumCollectionReader::readSpectrum().

◆ getTotalIonCount()

qint64 pappso::cbor::mzcbor::Spectrum::getTotalIonCount ( ) const

Definition at line 310 of file spectrum.cpp.

311{
312 // <cvParam cvRef="MS" accession="MS:1000285" value="17377980" name="total ion current" />
313
314 auto it = cvParamMap.find("MS:1000285");
315 if(it == cvParamMap.end())
316 {
317 throw pappso::ExceptionNotFound(QObject::tr("total ion count not found in cvParam map"));
318 }
319 qDebug() << it->first << " " << it->second.valueInt;
320 return it->second.valueInt;
321}

References cvParamMap.

◆ readScanCvParams()

std::map< QString, pappso::cbor::mzcbor::CvParam > pappso::cbor::mzcbor::Spectrum::readScanCvParams ( CborStreamReader & reader)
static

Definition at line 275 of file spectrum.cpp.

276{
277 CvParamMap cv_params;
278 reader.enterContainer();
279 QString txt_value;
280
281 while(reader.hasNext() && (!reader.isInvalid()))
282 {
283 if(reader.isString())
284 {
285 if(reader.decodeString(txt_value))
286 {
287 qDebug() << txt_value;
288 if(txt_value == "cvParam")
289 {
290 cv_params.fromCbor(reader);
291 }
292 else
293 {
294 reader.next();
295 }
296 }
297 }
298 else
299 {
300 reader.next();
301 }
302 }
303
304 reader.leaveContainer();
305 return cv_params;
306}

References pappso::cbor::CborStreamReader::decodeString(), and pappso::cbor::mzcbor::CvParamMap::fromCbor().

◆ toJsonObject()

QJsonObject pappso::cbor::mzcbor::Spectrum::toJsonObject ( ) const

write the structure to a JSON object This is a simplified representation for easy JSON data handling binary arrays are decoded in simple traces

Returns
QJsonObject

Definition at line 228 of file spectrum.cpp.

229{
230 QJsonObject spectrum_json;
231 spectrum_json.insert("id", id);
232 spectrum_json.insert("index", (qint64)index);
233 spectrum_json.insert("defaultArrayLength", (qint64)defaultArrayLength);
234 spectrum_json.insert("cvParam", cvParamMap.toJsonArray());
235
236 QJsonObject scan_list;
237 // QJsonObject scan_list_cvparam;
238 scan_list.insert("cvParam", scanListCvParamMap.toJsonArray());
239 QJsonArray scan_array;
240 for(auto &scan : scanList)
241 {
242 scan_array.append(scan.toJsonObject());
243 }
244 scan_list.insert("scan", scan_array);
245 spectrum_json.insert("scanList", scan_list);
246
247 if(!precursorList.empty())
248 {
249 QJsonObject precursor_list;
250 // QJsonObject scan_list_cvparam;
251 precursor_list.insert("cvParam", precursorListCvParamMap.toJsonArray());
252 QJsonArray precursor_array;
253 for(auto &precursor : precursorList)
254 {
255 precursor_array.append(precursor.toJsonObject());
256 }
257 precursor_list.insert("precursor", precursor_array);
258 spectrum_json.insert("precursorList", precursor_list);
259 }
260
261 if(!binaryDataArrayList.empty())
262 {
263 Trace trace;
264
265 decodeTrace(trace);
266
267
268 spectrum_json.insert("spectrum", trace.toJsonObject());
269 }
270
271 return spectrum_json;
272}
void decodeTrace(pappso::Trace &trace) const
Definition spectrum.cpp:353

References binaryDataArrayList, cvParamMap, decodeTrace(), defaultArrayLength, index, precursorList, precursorListCvParamMap, scanList, scanListCvParamMap, and pappso::Trace::toJsonObject().

Member Data Documentation

◆ binaryDataArrayList

◆ cvParamMap

CvParamMap pappso::cbor::mzcbor::Spectrum::cvParamMap

Definition at line 76 of file spectrum.h.

Referenced by fromCbor(), getMsLevel(), getTotalIonCount(), and toJsonObject().

◆ defaultArrayLength

std::size_t pappso::cbor::mzcbor::Spectrum::defaultArrayLength

◆ id

◆ index

std::size_t pappso::cbor::mzcbor::Spectrum::index

◆ precursorList

◆ precursorListCvParamMap

CvParamMap pappso::cbor::mzcbor::Spectrum::precursorListCvParamMap

Definition at line 78 of file spectrum.h.

Referenced by fromCbor(), and toJsonObject().

◆ scanList

std::vector<Scan> pappso::cbor::mzcbor::Spectrum::scanList

Definition at line 80 of file spectrum.h.

Referenced by fromCbor(), getRtInSeconds(), and toJsonObject().

◆ scanListCvParamMap

CvParamMap pappso::cbor::mzcbor::Spectrum::scanListCvParamMap

Definition at line 77 of file spectrum.h.

Referenced by fromCbor(), and toJsonObject().


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