44 QCborMap cbor_scan_id;
45 cbor_scan_id.insert(QString(
"index"),
47 cbor_scan_id.insert(QString(
"native_id"),
54 cbor_scan_id.insert(QString(
"scan"), (qint64)scan);
56 cbor_scan.insert(QString(
"id"), cbor_scan_id.toCborValue());
60 QCborMap cbor_scan_precursor;
61 cbor_scan_precursor.insert(QString(
"z"), ms2_qualified_mass_spectrum.
getPrecursorCharge());
62 cbor_scan_precursor.insert(QString(
"mz"), ms2_qualified_mass_spectrum.
getPrecursorMz());
63 cbor_scan_precursor.insert(QString(
"mh"), ms2_qualified_mass_spectrum.
getPrecursorMass());
64 cbor_scan_precursor.insert(QString(
"intensity"),
66 cbor_scan.insert(QString(
"precursor"), cbor_scan_precursor.toCborValue());
70 QCborMap cbor_scan_ms2;
71 cbor_scan_ms2.insert(QString(
"rt"), ms2_qualified_mass_spectrum.
getRtInSeconds());
72 cbor_scan.insert(QString(
"ms2"), cbor_scan_ms2.toCborValue());
80 QCborMap spectrum_cbor;
83 QCborArray intensity_cbor;
87 mz_cbor.append(data_point.x);
88 intensity_cbor.append(data_point.y);
90 spectrum_cbor.insert(QString(
"mz"), mz_cbor);
91 spectrum_cbor.insert(QString(
"intensity"), intensity_cbor);
93 QCborMap new_ms2_map = cbor_scan.value(
"ms2").toMap();
94 new_ms2_map.insert(QString(
"spectrum"), spectrum_cbor.toCborValue());
96 cbor_scan.insert(QString(
"ms2"), new_ms2_map);
103 std::vector<PsmCborUtils::PsmProteinRef> protein_ref_list;
105 if(cbor_psm.contains(QString(
"protein_list")))
107 for(
auto it : cbor_psm.value(
"protein_list").toArray())
109 QCborMap cbor_protein_ref = it.toMap();
111 protein_ref.
accession = cbor_protein_ref.value(
"accession").toString();
113 for(
auto ref_position : cbor_protein_ref.value(
"positions").toArray())
115 protein_ref.
positions.push_back(ref_position.toInteger());
117 protein_ref_list.push_back(protein_ref);
121 return protein_ref_list;
127 const std::vector<PsmCborUtils::PsmProteinRef> &protein_ref_list)
129 QCborArray protein_list;
131 for(
auto it : protein_ref_list)
133 QCborMap protein_ref;
134 protein_ref.insert(QString(
"accession"), it.accession);
135 QCborArray positions_arr;
136 for(
auto position : it.positions)
138 positions_arr.append((qint64)position);
140 protein_ref.insert(QString(
"positions"), positions_arr);
141 protein_list.append(protein_ref);
144 cbor_psm.remove(QString(
"protein_list"));
145 cbor_psm.insert(QString(
"protein_list"), protein_list);
151 const QCborMap &cbor_psm_source)
153 std::vector<PsmCborUtils::PsmProteinRef> protein_ref_list =
155 std::vector<PsmCborUtils::PsmProteinRef> protein_ref_list_source =
158 protein_ref_list.insert(
159 protein_ref_list.end(), protein_ref_list_source.begin(), protein_ref_list_source.end());
162 std::sort(protein_ref_list.begin(),
163 protein_ref_list.end(),
165 return a.accession > b.accession;
168 std::vector<PsmCborUtils::PsmProteinRef> unique_protein_ref_list;
170 for(
auto it = protein_ref_list.begin(); it != protein_ref_list.end(); it++)
173 if(unique_protein_ref_list.size() > 0)
175 if(unique_protein_ref_list.back().accession == it->accession)
178 unique_protein_ref_list.back().positions.insert(
179 unique_protein_ref_list.back().positions.end(),
180 it->positions.begin(),
181 it->positions.end());
183 std::sort(unique_protein_ref_list.back().positions.begin(),
184 unique_protein_ref_list.back().positions.end());
186 auto last = std::unique(unique_protein_ref_list.back().positions.begin(),
187 unique_protein_ref_list.back().positions.end());
189 unique_protein_ref_list.back().positions.erase(
190 last, unique_protein_ref_list.back().positions.end());
194 unique_protein_ref_list.push_back(*it);
199 unique_protein_ref_list.push_back(*it);