41 QCborMap cbor_scan_id;
42 cbor_scan_id.insert(QString(
"index"),
44 cbor_scan_id.insert(QString(
"native_id"),
46 cbor_scan.insert(QString(
"id"), cbor_scan_id.toCborValue());
50 QCborMap cbor_scan_precursor;
51 cbor_scan_precursor.insert(QString(
"z"), ms2_qualified_mass_spectrum.
getPrecursorCharge());
52 cbor_scan_precursor.insert(QString(
"mz"), ms2_qualified_mass_spectrum.
getPrecursorMz());
53 cbor_scan_precursor.insert(QString(
"mh"), ms2_qualified_mass_spectrum.
getPrecursorMass());
54 cbor_scan_precursor.insert(QString(
"intensity"),
56 cbor_scan.insert(QString(
"precursor"), cbor_scan_precursor.toCborValue());
60 QCborMap cbor_scan_ms2;
61 cbor_scan_ms2.insert(QString(
"rt"), ms2_qualified_mass_spectrum.
getRtInSeconds());
62 cbor_scan.insert(QString(
"ms2"), cbor_scan_ms2.toCborValue());
70 QCborMap spectrum_cbor;
73 QCborArray intensity_cbor;
77 mz_cbor.append(data_point.x);
78 intensity_cbor.append(data_point.y);
80 spectrum_cbor.insert(QString(
"mz"), mz_cbor);
81 spectrum_cbor.insert(QString(
"intensity"), intensity_cbor);
83 QCborMap new_ms2_map = cbor_scan.value(
"ms2").toMap();
84 new_ms2_map.insert(QString(
"spectrum"), spectrum_cbor.toCborValue());
86 cbor_scan.insert(QString(
"ms2"), new_ms2_map);
93 std::vector<PsmCborUtils::PsmProteinRef> protein_ref_list;
95 if(cbor_psm.contains(QString(
"protein_list")))
97 for(
auto it : cbor_psm.value(
"protein_list").toArray())
99 QCborMap cbor_protein_ref = it.toMap();
101 protein_ref.
accession = cbor_protein_ref.value(
"accession").toString();
103 for(
auto ref_position : cbor_protein_ref.value(
"positions").toArray())
105 protein_ref.
positions.push_back(ref_position.toInteger());
107 protein_ref_list.push_back(protein_ref);
111 return protein_ref_list;
117 const std::vector<PsmCborUtils::PsmProteinRef> &protein_ref_list)
119 QCborArray protein_list;
121 for(
auto it : protein_ref_list)
123 QCborMap protein_ref;
124 protein_ref.insert(QString(
"accession"), it.accession);
125 QCborArray positions_arr;
126 for(
auto position : it.positions)
128 positions_arr.append((qint64)position);
130 protein_ref.insert(QString(
"positions"), positions_arr);
131 protein_list.append(protein_ref);
134 cbor_psm.remove(QString(
"protein_list"));
135 cbor_psm.insert(QString(
"protein_list"), protein_list);
141 const QCborMap &cbor_psm_source)
143 std::vector<PsmCborUtils::PsmProteinRef> protein_ref_list =
145 std::vector<PsmCborUtils::PsmProteinRef> protein_ref_list_source =
148 protein_ref_list.insert(
149 protein_ref_list.end(), protein_ref_list_source.begin(), protein_ref_list_source.end());
152 std::sort(protein_ref_list.begin(),
153 protein_ref_list.end(),
155 return a.accession > b.accession;
158 std::vector<PsmCborUtils::PsmProteinRef> unique_protein_ref_list;
160 for(
auto it = protein_ref_list.begin(); it != protein_ref_list.end(); it++)
163 if(unique_protein_ref_list.size() > 0)
165 if(unique_protein_ref_list.back().accession == it->accession)
168 unique_protein_ref_list.back().positions.insert(
169 unique_protein_ref_list.back().positions.end(),
170 it->positions.begin(),
171 it->positions.end());
173 std::sort(unique_protein_ref_list.back().positions.begin(),
174 unique_protein_ref_list.back().positions.end());
176 auto last = std::unique(unique_protein_ref_list.back().positions.begin(),
177 unique_protein_ref_list.back().positions.end());
179 unique_protein_ref_list.back().positions.erase(
180 last, unique_protein_ref_list.back().positions.end());
184 unique_protein_ref_list.push_back(*it);
189 unique_protein_ref_list.push_back(*it);