71 writer->append(
"from");
72 writer->append(m_uuid);
74 writer->append(
"runIdList");
78 std::vector<std::size_t> msrun_size;
81 writer->append(
"runSpectrumIndexList");
82 writer->startArray(m_runAndSpectrumOffsetList.size());
83 for(
auto &spectrum_offset_list : m_runAndSpectrumOffsetList)
85 msrun_size.push_back(spectrum_offset_list.size());
91 writer->append(
"runSpectrumNativeIdList");
92 writer->startArray(m_runAndSpectrumIdList.size());
93 for(
auto &spectrum_id_list : m_runAndSpectrumIdList)
101 for(std::size_t i = 0; i < msrun_size.size(); i++)
103 if(m_runAndSpectrumTotalIonCountList.at(i).size() != msrun_size.at(i))
110 writer->append(
"runSpectrumTotalIonCountList");
111 writer->startArray(m_runAndSpectrumIdList.size());
112 for(
auto &spectrum_tic_list : m_runAndSpectrumTotalIonCountList)
121 for(std::size_t i = 0; i < msrun_size.size(); i++)
123 if(m_runAndSpectrumRtList.at(i).size() != msrun_size.at(i))
131 writer->append(
"runSpectrumRtList");
132 writer->startArray(m_runAndSpectrumRtList.size());
133 for(
auto &spectrum_rt_list : m_runAndSpectrumRtList)
146 for(std::size_t i = 0; i < msrun_size.size(); i++)
148 if(m_runAndSpectrumMsLevelList.at(i).size() != msrun_size.at(i))
155 writer->append(
"runSpectrumMsLevelList");
156 writer->startArray(m_runAndSpectrumMsLevelList.size());
157 for(
auto &spectrum_mslevel_list : m_runAndSpectrumMsLevelList)
171 mp_cborWriter->startMap();
172 if(m_qxmlStreamReader.readNextStartElement())
174 qDebug() << m_qxmlStreamReader.name().toString();
175 if(m_qxmlStreamReader.name().toString() ==
"indexedmzML")
177 m_qxmlStreamReader.readNextStartElement();
179 if(m_qxmlStreamReader.name().toString() ==
"mzML")
182 mp_cborWriter->append(
"mzCBOR");
183 mp_cborWriter->startMap();
185 mp_cborWriter->append(
"mode");
186 mp_cborWriter->append(0);
191 m_uuid = mp_cborWriter->getUuid();
192 mp_cborWriter->endMap();
194 mp_cborWriter->append(m_qxmlStreamReader.name().toString());
196 mp_cborWriter->startMap();
197 mp_cborWriter->append(
"xmlns");
198 mp_cborWriter->append(m_qxmlStreamReader.namespaceUri());
199 attributeListToCbor(m_qxmlStreamReader.attributes());
200 mp_cborWriter->endMap();
203 bool array_started =
false;
204 QString last_element;
205 while(m_qxmlStreamReader.readNextStartElement())
208 insideElement(last_element, array_started);
209 last_element = m_qxmlStreamReader.name().toString();
215 m_qxmlStreamReader.raiseError(QObject::tr(
"Not an mzML input file"));
216 m_qxmlStreamReader.skipCurrentElement();
219 mp_cborWriter->endMap();
236 qDebug() << m_qxmlStreamReader.name();
245 std::size_t count = m_qxmlStreamReader.attributes().value(
"count").toULongLong();
247 mp_cborWriter->append(
"binaryDataArray");
248 mp_cborWriter->startArray(count);
249 while(m_qxmlStreamReader.readNext() && !m_qxmlStreamReader.isEndElement())
251 if(m_qxmlStreamReader.isStartElement())
254 binary_data_array.
fromMzml(m_qxmlStreamReader);
255 binary_data_array.
toCbor(*mp_cborWriter);
259 mp_cborWriter->endArray();
260 qDebug() << m_qxmlStreamReader.name();
267 m_elementStash.push_back(m_qxmlStreamReader.name().toString());
270 qDebug() << m_qxmlStreamReader.name();
272 if(m_elementStash.back() ==
"spectrum")
275 m_runAndSpectrumIdList.back().push_back(
276 m_qxmlStreamReader.attributes().value(
"id").toString());
277 getCurrentSpectrumSize();
283 qDebug() <<
"current element=" << m_elementStash.back();
284 qDebug() <<
"last_element=" << last_element_in;
285 if(array_started_in && (last_element_in != m_qxmlStreamReader.name().toString()))
287 mp_cborWriter->endArray();
288 qDebug() <<
"mp_cborWriter->endArray()";
289 array_started_in =
false;
291 if(m_elementStash.back() ==
"binaryDataArrayList")
293 qDebug() <<
"readBinaryDataArrayList()";
294 readBinaryDataArrayList();
302 if(m_elementToStoreInArray.contains(m_elementStash.back()))
305 if((!array_started_in) && (last_element_in != m_elementStash.back()))
307 mp_cborWriter->append(m_elementStash.back());
308 mp_cborWriter->startArray();
310 qDebug() <<
"mp_cborWriter->startArray()";
311 array_started_in =
true;
315 if(m_elementStash.back() ==
"spectrum")
317 if(mp_cborWriter->device() !=
nullptr)
318 m_runAndSpectrumOffsetList.back().push_back(mp_cborWriter->device()->pos());
322 if(!array_started_in)
323 mp_cborWriter->append(m_elementStash.back());
325 bool array_started =
false;
328 if(m_elementStash.back() ==
"cvParam")
332 if(!array_started_in)
335 QObject::tr(
"unable to write cvParam outside CBOR array"));
338 qDebug() << m_qxmlStreamReader.name() <<
" "
339 << m_elementStash.at(m_elementStash.size() - 2);
341 cv_param.
fromMzml(m_qxmlStreamReader);
342 cv_param.
toCbor(*mp_cborWriter);
343 qDebug() << cv_param.
name;
345 if(m_elementStash.at(m_elementStash.size() - 2) ==
"spectrum")
347 qDebug() <<
"cvparam in spectrum";
351 qDebug() << m_runAndSpectrumMsLevelList.back().back();
353 else if(cv_param.
accession ==
"MS:1000285")
355 m_runAndSpectrumTotalIonCountList.back().push_back(cv_param.
getExpectedDouble());
358 else if(m_elementStash.at(m_elementStash.size() - 2) ==
"scan")
369 m_runAndSpectrumRtList.back().push_back(rt);
375 qDebug() <<
"finish cvParam " << cv_param.
accession;
380 mp_cborWriter->startMap();
381 attributeListToCbor(m_qxmlStreamReader.attributes());
383 QString last_element;
385 while(m_qxmlStreamReader.readNext() && !m_qxmlStreamReader.isEndElement())
387 qDebug() << m_qxmlStreamReader.name();
388 if(m_qxmlStreamReader.isCharacters())
391 QStringView content = m_qxmlStreamReader.text().trimmed();
392 if((m_qxmlStreamReader.text().toString() ==
"\n") ||
393 (m_qxmlStreamReader.text().toString() ==
"\n\t"))
399 if(!content.isEmpty())
401 qDebug() <<
"text isCharacters" << content.mid(0, 10);
402 mp_cborWriter->append(
"@text@");
403 mp_cborWriter->append(content);
407 else if(m_qxmlStreamReader.isStartElement())
409 QString tmp_element = m_qxmlStreamReader.name().toString();
410 qDebug() << tmp_element;
411 insideElement(last_element, array_started);
412 last_element = tmp_element;
418 mp_cborWriter->endArray();
421 mp_cborWriter->endMap();
423 qDebug() << m_qxmlStreamReader.name();
427 qDebug() << m_elementStash.back();
428 m_elementStash.pop_back();
462 for(
auto &xml_attribute : xml_attributes)
464 qDebug() << xml_attribute.name() <<
" " << xml_attribute.value();
465 mp_cborWriter->append(xml_attribute.name());
466 attributeValueToCbor(xml_attribute.value());
468 if((m_elementStash.size() > 0) && (m_elementStash.back() ==
"run") &&
469 (xml_attribute.name() ==
"id"))
471 m_runAndSpectrumOffsetList.push_back(std::vector<qint64>());
472 m_runAndSpectrumIdList.push_back(std::vector<QString>());
473 m_runAndSpectrumMsLevelList.push_back(std::vector<std::uint8_t>());
474 m_runAndSpectrumRtList.push_back(std::vector<double>());
475 m_runAndSpectrumTotalIonCountList.push_back(std::vector<qint64>());
476 m_runIdList.push_back(xml_attribute.value().toString());