45 const std::vector<pappso::PrecursorIonData> &alternative_precursors)
48 QCborMap cbor_scan_id;
49 cbor_scan_id.insert(QString(
"index"),
51 cbor_scan_id.insert(QString(
"native_id"),
58 cbor_scan_id.insert(QString(
"scan"), (qint64)scan);
60 cbor_scan.insert(QString(
"id"), cbor_scan_id.toCborValue());
64 QCborMap cbor_scan_precursor;
65 cbor_scan_precursor.insert(QString(
"z"), ms2_qualified_mass_spectrum.
getPrecursorCharge());
66 cbor_scan_precursor.insert(QString(
"mz"), ms2_qualified_mass_spectrum.
getPrecursorMz());
67 cbor_scan_precursor.insert(QString(
"mh"),
69 cbor_scan_precursor.insert(QString(
"mass"), ms2_qualified_mass_spectrum.
getPrecursorMass());
70 cbor_scan_precursor.insert(QString(
"intensity"),
72 if(alternative_precursors.size() > 0)
74 QCborArray alternatives_cbor;
77 QCborMap cbor_alt_item;
78 cbor_alt_item.insert(QString(
"z"), precursor.charge);
79 cbor_alt_item.insert(QString(
"mz"), precursor.mz);
80 cbor_alt_item.insert(QString(
"intensity"), precursor.intensity);
81 alternatives_cbor.append(cbor_alt_item);
84 cbor_scan_precursor.insert(QString(
"alternatives"), alternatives_cbor);
87 cbor_scan.insert(QString(
"precursor"), cbor_scan_precursor.toCborValue());
91 QCborMap cbor_scan_ms2;
92 cbor_scan_ms2.insert(QString(
"rt"), ms2_qualified_mass_spectrum.
getRtInSeconds());
93 cbor_scan.insert(QString(
"ms2"), cbor_scan_ms2.toCborValue());
100 const std::vector<pappso::PrecursorIonData> &alternative_precursors)
103 QCborMap spectrum_cbor;
106 QCborArray intensity_cbor;
110 mz_cbor.append(data_point.x);
111 intensity_cbor.append(data_point.y);
113 spectrum_cbor.insert(QString(
"mz"), mz_cbor);
114 spectrum_cbor.insert(QString(
"intensity"), intensity_cbor);
116 QCborMap new_ms2_map = cbor_scan.value(
"ms2").toMap();
117 new_ms2_map.insert(QString(
"spectrum"), spectrum_cbor.toCborValue());
119 cbor_scan.insert(QString(
"ms2"), new_ms2_map);
126 std::vector<PsmCborUtils::PsmProteinRef> protein_ref_list;
128 if(cbor_psm.contains(QString(
"protein_list")))
130 for(
auto it : cbor_psm.value(
"protein_list").toArray())
132 QCborMap cbor_protein_ref = it.toMap();
134 protein_ref.
accession = cbor_protein_ref.value(
"accession").toString();
136 for(
auto ref_position : cbor_protein_ref.value(
"positions").toArray())
138 protein_ref.
positions.push_back(ref_position.toInteger());
140 protein_ref_list.push_back(protein_ref);
144 return protein_ref_list;
150 const std::vector<PsmCborUtils::PsmProteinRef> &protein_ref_list)
152 QCborArray protein_list;
154 for(
auto it : protein_ref_list)
156 QCborMap protein_ref;
157 protein_ref.insert(QString(
"accession"), it.accession);
158 QCborArray positions_arr;
159 for(
auto position : it.positions)
161 positions_arr.append((qint64)position);
163 protein_ref.insert(QString(
"positions"), positions_arr);
164 protein_list.append(protein_ref);
167 cbor_psm.remove(QString(
"protein_list"));
168 cbor_psm.insert(QString(
"protein_list"), protein_list);
174 const QCborMap &cbor_psm_source)
176 std::vector<PsmCborUtils::PsmProteinRef> protein_ref_list =
178 std::vector<PsmCborUtils::PsmProteinRef> protein_ref_list_source =
181 protein_ref_list.insert(
182 protein_ref_list.end(), protein_ref_list_source.begin(), protein_ref_list_source.end());
185 std::sort(protein_ref_list.begin(),
186 protein_ref_list.end(),
188 return a.accession > b.accession;
191 std::vector<PsmCborUtils::PsmProteinRef> unique_protein_ref_list;
193 for(
auto it = protein_ref_list.begin(); it != protein_ref_list.end(); it++)
196 if(unique_protein_ref_list.size() > 0)
198 if(unique_protein_ref_list.back().accession == it->accession)
201 unique_protein_ref_list.back().positions.insert(
202 unique_protein_ref_list.back().positions.end(),
203 it->positions.begin(),
204 it->positions.end());
206 std::sort(unique_protein_ref_list.back().positions.begin(),
207 unique_protein_ref_list.back().positions.end());
209 auto last = std::unique(unique_protein_ref_list.back().positions.begin(),
210 unique_protein_ref_list.back().positions.end());
212 unique_protein_ref_list.back().positions.erase(
213 last, unique_protein_ref_list.back().positions.end());
217 unique_protein_ref_list.push_back(*it);
222 unique_protein_ref_list.push_back(*it);