libpappsomspp
Library for mass spectrometry
Loading...
Searching...
No Matches
pappso::cbor::psm::PsmCborUtils Class Reference

utilities to help managing data in PSM CBOR data file More...

#include <psmcborutils.h>

Classes

struct  PsmProteinRef

Static Public Member Functions

static void prepareCborScanWithSpectrum (QCborMap &cbor_scan, const pappso::QualifiedMassSpectrum &ms2_qualified_mass_spectrum)
static void prepareCborScanWithSpectrumAndPeakList (QCborMap &cbor_scan, const pappso::QualifiedMassSpectrum &ms2_qualified_mass_spectrum)
static std::vector< PsmProteinRefgetPsmProteinRefList (const QCborMap &cbor_psm)
static void setPsmProteinRefList (QCborMap &cbor_psm, const std::vector< PsmProteinRef > &protein_ref_list)
static void mergePsmProteinRefList (QCborMap &cbor_psm_destination, const QCborMap &cbor_psm_source)

Detailed Description

utilities to help managing data in PSM CBOR data file

Definition at line 44 of file psmcborutils.h.

Member Function Documentation

◆ getPsmProteinRefList()

std::vector< PsmCborUtils::PsmProteinRef > pappso::cbor::psm::PsmCborUtils::getPsmProteinRefList ( const QCborMap & cbor_psm)
static

Definition at line 104 of file psmcborutils.cpp.

105{
106 std::vector<PsmCborUtils::PsmProteinRef> protein_ref_list;
107
108 if(cbor_psm.contains(QString("protein_list")))
109 {
110 for(auto it : cbor_psm.value("protein_list").toArray())
111 {
112 QCborMap cbor_protein_ref = it.toMap();
113 PsmCborUtils::PsmProteinRef protein_ref;
114 protein_ref.accession = cbor_protein_ref.value("accession").toString();
115
116 for(auto ref_position : cbor_protein_ref.value("positions").toArray())
117 {
118 protein_ref.positions.push_back(ref_position.toInteger());
119 }
120 protein_ref_list.push_back(protein_ref);
121 }
122 }
123
124 return protein_ref_list;
125}

References pappso::cbor::psm::PsmCborUtils::PsmProteinRef::accession, and pappso::cbor::psm::PsmCborUtils::PsmProteinRef::positions.

Referenced by mergePsmProteinRefList().

◆ mergePsmProteinRefList()

void pappso::cbor::psm::PsmCborUtils::mergePsmProteinRefList ( QCborMap & cbor_psm_destination,
const QCborMap & cbor_psm_source )
static

Definition at line 153 of file psmcborutils.cpp.

155{
156 std::vector<PsmCborUtils::PsmProteinRef> protein_ref_list =
157 getPsmProteinRefList(cbor_psm_destination);
158 std::vector<PsmCborUtils::PsmProteinRef> protein_ref_list_source =
159 getPsmProteinRefList(cbor_psm_source);
160
161 protein_ref_list.insert(
162 protein_ref_list.end(), protein_ref_list_source.begin(), protein_ref_list_source.end());
163
164
165 std::sort(protein_ref_list.begin(),
166 protein_ref_list.end(),
167 [](PsmCborUtils::PsmProteinRef &a, PsmCborUtils::PsmProteinRef &b) {
168 return a.accession > b.accession;
169 });
170
171 std::vector<PsmCborUtils::PsmProteinRef> unique_protein_ref_list;
172
173 for(auto it = protein_ref_list.begin(); it != protein_ref_list.end(); it++)
174 {
175 // qDebug() << it->proforma;
176 if(unique_protein_ref_list.size() > 0)
177 {
178 if(unique_protein_ref_list.back().accession == it->accession)
179 {
180 // merge positions
181 unique_protein_ref_list.back().positions.insert(
182 unique_protein_ref_list.back().positions.end(),
183 it->positions.begin(),
184 it->positions.end());
185
186 std::sort(unique_protein_ref_list.back().positions.begin(),
187 unique_protein_ref_list.back().positions.end());
188
189 auto last = std::unique(unique_protein_ref_list.back().positions.begin(),
190 unique_protein_ref_list.back().positions.end());
191 // v now holds {1 2 3 4 5 x x}, where 'x' is indeterminate
192 unique_protein_ref_list.back().positions.erase(
193 last, unique_protein_ref_list.back().positions.end());
194 }
195 else
196 {
197 unique_protein_ref_list.push_back(*it);
198 }
199 }
200 else
201 {
202 unique_protein_ref_list.push_back(*it);
203 }
204
205 qDebug();
206 }
207
208 setPsmProteinRefList(cbor_psm_destination, unique_protein_ref_list);
209}
static void setPsmProteinRefList(QCborMap &cbor_psm, const std::vector< PsmProteinRef > &protein_ref_list)
static std::vector< PsmProteinRef > getPsmProteinRefList(const QCborMap &cbor_psm)

References pappso::a, pappso::b, getPsmProteinRefList(), pappso::last, and setPsmProteinRefList().

Referenced by pappso::cbor::psm::CborScanMapBase::filterPsmListUniqueUniqueProforma().

◆ prepareCborScanWithSpectrum()

void pappso::cbor::psm::PsmCborUtils::prepareCborScanWithSpectrum ( QCborMap & cbor_scan,
const pappso::QualifiedMassSpectrum & ms2_qualified_mass_spectrum )
static

Definition at line 41 of file psmcborutils.cpp.

43{
44 // id
45 QCborMap cbor_scan_id;
46 cbor_scan_id.insert(QString("index"),
47 (qint64)ms2_qualified_mass_spectrum.getMassSpectrumId().getSpectrumIndex());
48 cbor_scan_id.insert(QString("native_id"),
49 ms2_qualified_mass_spectrum.getMassSpectrumId().getNativeId());
50 bool is_ok;
51 std::size_t scan =
52 ms2_qualified_mass_spectrum.getMassSpectrumId().extractScanNumberFromNativeId(&is_ok);
53 if(is_ok)
54 {
55 cbor_scan_id.insert(QString("scan"), (qint64)scan);
56 }
57 cbor_scan.insert(QString("id"), cbor_scan_id.toCborValue());
58
59
60 // precursor
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"),
65 ms2_qualified_mass_spectrum.getPrecursorMass() + MHPLUS);
66 cbor_scan_precursor.insert(QString("mass"), ms2_qualified_mass_spectrum.getPrecursorMass());
67 cbor_scan_precursor.insert(QString("intensity"),
68 ms2_qualified_mass_spectrum.getPrecursorIntensity());
69 cbor_scan.insert(QString("precursor"), cbor_scan_precursor.toCborValue());
70
71
72 // ms2
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());
76}
std::size_t getSpectrumIndex() const
const QString & getNativeId() const
std::size_t extractScanNumberFromNativeId(bool *is_ok) const
try to find scan id in the native id string
uint getPrecursorCharge(bool *ok=nullptr) const
get precursor charge
pappso_double getPrecursorIntensity(bool *ok=nullptr) const
get precursor intensity
double getPrecursorMass(bool *ok_p=nullptr) const
get precursor mass given the charge stats and precursor mz
const MassSpectrumId & getMassSpectrumId() const
Get the MassSpectrumId.
pappso_double getPrecursorMz(bool *ok=nullptr) const
get precursor mz
pappso_double getRtInSeconds() const
Get the retention time in seconds.
const pappso_double MHPLUS(1.007276466879)

References pappso::MassSpectrumId::extractScanNumberFromNativeId(), pappso::QualifiedMassSpectrum::getMassSpectrumId(), pappso::MassSpectrumId::getNativeId(), pappso::QualifiedMassSpectrum::getPrecursorCharge(), pappso::QualifiedMassSpectrum::getPrecursorIntensity(), pappso::QualifiedMassSpectrum::getPrecursorMass(), pappso::QualifiedMassSpectrum::getPrecursorMz(), pappso::QualifiedMassSpectrum::getRtInSeconds(), pappso::MassSpectrumId::getSpectrumIndex(), and pappso::MHPLUS().

Referenced by prepareCborScanWithSpectrumAndPeakList().

◆ prepareCborScanWithSpectrumAndPeakList()

void pappso::cbor::psm::PsmCborUtils::prepareCborScanWithSpectrumAndPeakList ( QCborMap & cbor_scan,
const pappso::QualifiedMassSpectrum & ms2_qualified_mass_spectrum )
static

Definition at line 79 of file psmcborutils.cpp.

81{
82 prepareCborScanWithSpectrum(cbor_scan, ms2_qualified_mass_spectrum);
83 QCborMap spectrum_cbor;
84
85 QCborArray mz_cbor;
86 QCborArray intensity_cbor;
87 for(const pappso::DataPoint &data_point :
88 *(ms2_qualified_mass_spectrum.getMassSpectrumCstSPtr().get()))
89 {
90 mz_cbor.append(data_point.x);
91 intensity_cbor.append(data_point.y);
92 }
93 spectrum_cbor.insert(QString("mz"), mz_cbor);
94 spectrum_cbor.insert(QString("intensity"), intensity_cbor);
95
96 QCborMap new_ms2_map = cbor_scan.value("ms2").toMap();
97 new_ms2_map.insert(QString("spectrum"), spectrum_cbor.toCborValue());
98
99 cbor_scan.insert(QString("ms2"), new_ms2_map);
100}
MassSpectrumCstSPtr getMassSpectrumCstSPtr() const
Get the MassSpectrumCstSPtr.
static void prepareCborScanWithSpectrum(QCborMap &cbor_scan, const pappso::QualifiedMassSpectrum &ms2_qualified_mass_spectrum)

References pappso::QualifiedMassSpectrum::getMassSpectrumCstSPtr(), and prepareCborScanWithSpectrum().

◆ setPsmProteinRefList()

void pappso::cbor::psm::PsmCborUtils::setPsmProteinRefList ( QCborMap & cbor_psm,
const std::vector< PsmProteinRef > & protein_ref_list )
static

Definition at line 129 of file psmcborutils.cpp.

131{
132 QCborArray protein_list;
133
134 for(auto it : protein_ref_list)
135 {
136 QCborMap protein_ref;
137 protein_ref.insert(QString("accession"), it.accession);
138 QCborArray positions_arr;
139 for(auto position : it.positions)
140 {
141 positions_arr.append((qint64)position);
142 }
143 protein_ref.insert(QString("positions"), positions_arr);
144 protein_list.append(protein_ref);
145 }
146
147 cbor_psm.remove(QString("protein_list"));
148 cbor_psm.insert(QString("protein_list"), protein_list);
149}

Referenced by mergePsmProteinRefList().


The documentation for this class was generated from the following files: