35#include <qjsonarray.h>
36#include <qjsonobject.h>
56 if(reader.isInvalid())
59 QObject::tr(
"ERROR in Spectrum::fromCbor :\ncbor is not valid"));
61 if(reader.enterContainer())
63 while(reader.hasNext() && (!reader.isInvalid()))
68 qDebug() << txt_value;
72 qDebug() << txt_value;
75 else if(txt_value ==
"index")
77 index = reader.toUnsignedInteger();
80 else if(txt_value ==
"defaultArrayLength")
85 else if(txt_value ==
"cvParam")
89 else if(txt_value ==
"scanList")
92 reader.enterContainer();
94 while(reader.hasNext() && (!reader.isInvalid()))
100 qDebug() << txt_value;
101 if(txt_value ==
"cvParam")
105 else if(txt_value ==
"scan")
108 reader.enterContainer();
110 while(reader.hasNext() && (!reader.isInvalid()))
117 reader.leaveContainer();
130 reader.leaveContainer();
132 else if(txt_value ==
"precursorList")
135 reader.enterContainer();
137 while(reader.hasNext() && (!reader.isInvalid()))
139 if(reader.isString())
143 qDebug() << txt_value;
145 if(txt_value ==
"cvParam")
149 else if(txt_value ==
"precursor")
155 while(reader.hasNext() && (!reader.isInvalid()))
182 reader.leaveContainer();
184 else if(txt_value ==
"binaryDataArray")
189 reader.enterContainer();
191 while(reader.hasNext())
199 reader.leaveContainer();
214 reader.leaveContainer();
222 if(reader.lastError() != QCborError::NoError)
225 QObject::tr(
"ERROR in Spectrum::fromCbor :\n%1").arg(reader.lastError().toString()));
233 QJsonObject spectrum_json;
234 spectrum_json.insert(
"id",
id);
235 spectrum_json.insert(
"index", (qint64)
index);
237 spectrum_json.insert(
"cvParam",
cvParamMap.toJsonArray());
239 QJsonObject scan_list;
242 QJsonArray scan_array;
245 scan_array.append(scan.toJsonObject());
247 scan_list.insert(
"scan", scan_array);
248 spectrum_json.insert(
"scanList", scan_list);
252 QJsonObject precursor_list;
255 QJsonArray precursor_array;
258 precursor_array.append(precursor.toJsonObject());
260 precursor_list.insert(
"precursor", precursor_array);
261 spectrum_json.insert(
"precursorList", precursor_list);
274 return spectrum_json;
277std::map<QString, pappso::cbor::mzcbor::CvParam>
281 reader.enterContainer();
284 while(reader.hasNext() && (!reader.isInvalid()))
286 if(reader.isString())
290 qDebug() << txt_value;
291 if(txt_value ==
"cvParam")
307 reader.leaveContainer();
322 qDebug() << it->first <<
" " << it->second.valueInt;
323 return it->second.valueInt;
337 qDebug() << it->first <<
" " << it->second.valueInt;
338 return it->second.valueInt;
352 return scanList.front().getRtInSeconds();
359 std::vector<pappso_double> xVector;
360 std::vector<pappso_double> yVector;
364 if(binary_array.isIntensity())
369 else if(binary_array.isMz())
378 "error in pappso::cbor::mzcbor::Spectrum::decodeTrace: binary vector type not found"));
400 output <<
"BEGIN IONS" << Qt::endl;
402 if(msrun_id_csptr.get() !=
nullptr)
404 title = msrun_id_csptr.get()->getSampleName();
407 output <<
"TITLE=" << title <<
"." <<
index << Qt::endl;
408 output <<
"RTINSECONDS=" << QString::number(
scanList.front().getRtInSeconds(),
'f', 4)
411 double intensity =
precursorList.front().selectedIonList.front().getIntensity(&is_ok);
415 << QString::number(
precursorList.front().selectedIonList.front().getMz(),
'f', 8)
416 <<
" " << QString::number(intensity,
'g', 10) << Qt::endl;
421 << QString::number(
precursorList.front().selectedIonList.front().getMz(),
'f', 8)
424 output <<
"CHARGE=" <<
precursorList.front().selectedIonList.front().getChargeState() <<
"+"
432 output << QString::number(one_point.x,
'f', 8) <<
" " << QString::number(one_point.y,
'f', 8)
435 output <<
"END IONS" << Qt::endl;
A simple container of DataPoint instances.
QJsonObject toJsonObject(const QString &x_label="x", const QString &y_label="y") const
serialize a PAPPSO trace object to JSON
size_t initialize(const std::vector< pappso_double > &xVector, const std::vector< pappso_double > &yVector)
simple override of the raw QCborStreamReader This adds convenient functions to put CBOR data into C++...
bool decodeString(QString &the_str)
decode the current cbor value as a string the point to the next value the current value is decoded as...
std::shared_ptr< const MsRunId > MsRunIdCstSPtr
PSI scan object for mzML/mzCBOR.
PSI spectrum object for mzML/mzCBOR.
void fromCbor(CborStreamReader &reader)
void fromCbor(CborStreamReader &reader)
fill the structure reading data from a CBOR stream
void fromCbor(CborStreamReader &reader)
void fromCbor(CborStreamReader &reader)
static std::map< QString, pappso::cbor::mzcbor::CvParam > readScanCvParams(CborStreamReader &reader)
void toMgf(QTextStream &output, MsRunIdCstSPtr msrun_id_csptr) const
write spectrum in MGF text format
std::vector< Precursor > precursorList
std::vector< Scan > scanList
CvParamMap precursorListCvParamMap
QJsonObject toJsonObject() const
write the structure to a JSON object This is a simplified representation for easy JSON data handling ...
void fromCbor(CborStreamReader &reader, bool want_binary_data)
fill the structure reading data from a CBOR stream
double getRtInSeconds() const
CvParamMap scanListCvParamMap
void decodeTrace(pappso::Trace &trace) const
qint64 getTotalIonCount() const
std::vector< BinaryDataArray > binaryDataArrayList
std::size_t defaultArrayLength