42 QCborMap cbor_scan_id;
43 cbor_scan_id.insert(QString(
"index"),
45 cbor_scan_id.insert(QString(
"native_id"),
47 cbor_scan.insert(QString(
"id"), cbor_scan_id.toCborValue());
51 QCborMap cbor_scan_precursor;
52 cbor_scan_precursor.insert(QString(
"z"), ms2_qualified_mass_spectrum.
getPrecursorCharge());
53 cbor_scan_precursor.insert(QString(
"mz"), ms2_qualified_mass_spectrum.
getPrecursorMz());
54 cbor_scan_precursor.insert(QString(
"mh"), ms2_qualified_mass_spectrum.
getPrecursorMass());
55 cbor_scan_precursor.insert(QString(
"intensity"),
57 cbor_scan.insert(QString(
"precursor"), cbor_scan_precursor.toCborValue());
61 QCborMap cbor_scan_ms2;
62 cbor_scan_ms2.insert(QString(
"rt"), ms2_qualified_mass_spectrum.
getRtInSeconds());
63 cbor_scan.insert(QString(
"ms2"), cbor_scan_ms2.toCborValue());
71 QCborMap spectrum_cbor;
74 QCborArray intensity_cbor;
78 mz_cbor.append(data_point.x);
79 intensity_cbor.append(data_point.y);
81 spectrum_cbor.insert(QString(
"mz"), mz_cbor);
82 spectrum_cbor.insert(QString(
"intensity"), intensity_cbor);
84 QCborMap new_ms2_map = cbor_scan.value(
"ms2").toMap();
85 new_ms2_map.insert(QString(
"spectrum"), spectrum_cbor.toCborValue());
87 cbor_scan.insert(QString(
"ms2"), new_ms2_map);
94 std::vector<PsmCborUtils::PsmProteinRef> protein_ref_list;
96 if(cbor_psm.contains(QString(
"protein_list")))
98 for(
auto it : cbor_psm.value(
"protein_list").toArray())
100 QCborMap cbor_protein_ref = it.toMap();
102 protein_ref.
accession = cbor_protein_ref.value(
"accession").toString();
104 for(
auto ref_position : cbor_protein_ref.value(
"positions").toArray())
106 protein_ref.
positions.push_back(ref_position.toInteger());
108 protein_ref_list.push_back(protein_ref);
112 return protein_ref_list;
118 const std::vector<PsmCborUtils::PsmProteinRef> &protein_ref_list)
120 QCborArray protein_list;
122 for(
auto it : protein_ref_list)
124 QCborMap protein_ref;
125 protein_ref.insert(QString(
"accession"), it.accession);
126 QCborArray positions_arr;
127 for(
auto position : it.positions)
129 positions_arr.append((qint64)position);
131 protein_ref.insert(QString(
"positions"), positions_arr);
132 protein_list.append(protein_ref);
135 cbor_psm.remove(QString(
"protein_list"));
136 cbor_psm.insert(QString(
"protein_list"), protein_list);
142 const QCborMap &cbor_psm_source)
144 std::vector<PsmCborUtils::PsmProteinRef> protein_ref_list =
146 std::vector<PsmCborUtils::PsmProteinRef> protein_ref_list_source =
149 protein_ref_list.insert(
150 protein_ref_list.end(), protein_ref_list_source.begin(), protein_ref_list_source.end());
153 std::sort(protein_ref_list.begin(),
154 protein_ref_list.end(),
156 return a.accession > b.accession;
159 std::vector<PsmCborUtils::PsmProteinRef> unique_protein_ref_list;
161 for(
auto it = protein_ref_list.begin(); it != protein_ref_list.end(); it++)
164 if(unique_protein_ref_list.size() > 0)
166 if(unique_protein_ref_list.back().accession == it->accession)
169 unique_protein_ref_list.back().positions.insert(
170 unique_protein_ref_list.back().positions.end(),
171 it->positions.begin(),
172 it->positions.end());
174 std::sort(unique_protein_ref_list.back().positions.begin(),
175 unique_protein_ref_list.back().positions.end());
177 auto last = std::unique(unique_protein_ref_list.back().positions.begin(),
178 unique_protein_ref_list.back().positions.end());
180 unique_protein_ref_list.back().positions.erase(
181 last, unique_protein_ref_list.back().positions.end());
185 unique_protein_ref_list.push_back(*it);
190 unique_protein_ref_list.push_back(*it);