45 QCborMap cbor_scan_id;
46 cbor_scan_id.insert(QString(
"index"),
48 cbor_scan_id.insert(QString(
"native_id"),
55 cbor_scan_id.insert(QString(
"scan"), (qint64)scan);
57 cbor_scan.insert(QString(
"id"), cbor_scan_id.toCborValue());
61 QCborMap cbor_scan_precursor;
62 cbor_scan_precursor.insert(QString(
"z"), ms2_qualified_mass_spectrum.
getPrecursorCharge());
63 cbor_scan_precursor.insert(QString(
"mz"), ms2_qualified_mass_spectrum.
getPrecursorMz());
64 cbor_scan_precursor.insert(QString(
"mh"),
66 cbor_scan_precursor.insert(QString(
"mass"), ms2_qualified_mass_spectrum.
getPrecursorMass());
67 cbor_scan_precursor.insert(QString(
"intensity"),
69 cbor_scan.insert(QString(
"precursor"), cbor_scan_precursor.toCborValue());
73 QCborMap cbor_scan_ms2;
74 cbor_scan_ms2.insert(QString(
"rt"), ms2_qualified_mass_spectrum.
getRtInSeconds());
75 cbor_scan.insert(QString(
"ms2"), cbor_scan_ms2.toCborValue());
83 QCborMap spectrum_cbor;
86 QCborArray intensity_cbor;
90 mz_cbor.append(data_point.x);
91 intensity_cbor.append(data_point.y);
93 spectrum_cbor.insert(QString(
"mz"), mz_cbor);
94 spectrum_cbor.insert(QString(
"intensity"), intensity_cbor);
96 QCborMap new_ms2_map = cbor_scan.value(
"ms2").toMap();
97 new_ms2_map.insert(QString(
"spectrum"), spectrum_cbor.toCborValue());
99 cbor_scan.insert(QString(
"ms2"), new_ms2_map);
106 std::vector<PsmCborUtils::PsmProteinRef> protein_ref_list;
108 if(cbor_psm.contains(QString(
"protein_list")))
110 for(
auto it : cbor_psm.value(
"protein_list").toArray())
112 QCborMap cbor_protein_ref = it.toMap();
114 protein_ref.
accession = cbor_protein_ref.value(
"accession").toString();
116 for(
auto ref_position : cbor_protein_ref.value(
"positions").toArray())
118 protein_ref.
positions.push_back(ref_position.toInteger());
120 protein_ref_list.push_back(protein_ref);
124 return protein_ref_list;
130 const std::vector<PsmCborUtils::PsmProteinRef> &protein_ref_list)
132 QCborArray protein_list;
134 for(
auto it : protein_ref_list)
136 QCborMap protein_ref;
137 protein_ref.insert(QString(
"accession"), it.accession);
138 QCborArray positions_arr;
139 for(
auto position : it.positions)
141 positions_arr.append((qint64)position);
143 protein_ref.insert(QString(
"positions"), positions_arr);
144 protein_list.append(protein_ref);
147 cbor_psm.remove(QString(
"protein_list"));
148 cbor_psm.insert(QString(
"protein_list"), protein_list);
154 const QCborMap &cbor_psm_source)
156 std::vector<PsmCborUtils::PsmProteinRef> protein_ref_list =
158 std::vector<PsmCborUtils::PsmProteinRef> protein_ref_list_source =
161 protein_ref_list.insert(
162 protein_ref_list.end(), protein_ref_list_source.begin(), protein_ref_list_source.end());
165 std::sort(protein_ref_list.begin(),
166 protein_ref_list.end(),
168 return a.accession > b.accession;
171 std::vector<PsmCborUtils::PsmProteinRef> unique_protein_ref_list;
173 for(
auto it = protein_ref_list.begin(); it != protein_ref_list.end(); it++)
176 if(unique_protein_ref_list.size() > 0)
178 if(unique_protein_ref_list.back().accession == it->accession)
181 unique_protein_ref_list.back().positions.insert(
182 unique_protein_ref_list.back().positions.end(),
183 it->positions.begin(),
184 it->positions.end());
186 std::sort(unique_protein_ref_list.back().positions.begin(),
187 unique_protein_ref_list.back().positions.end());
189 auto last = std::unique(unique_protein_ref_list.back().positions.begin(),
190 unique_protein_ref_list.back().positions.end());
192 unique_protein_ref_list.back().positions.erase(
193 last, unique_protein_ref_list.back().positions.end());
197 unique_protein_ref_list.push_back(*it);
202 unique_protein_ref_list.push_back(*it);