libpappsomspp
Library for mass spectrometry
Toggle main menu visibility
Loading...
Searching...
No Matches
psmcbor2json.cpp
Go to the documentation of this file.
1
/**
2
* \file pappsomspp/processing/cbor/psm/psmcbor2json.cpp
3
* \date 19/07/2025
4
* \author Olivier Langella
5
* \brief convert CBOR PSM to JSON
6
*/
7
8
/*******************************************************************************
9
* Copyright (c) 2025 Olivier Langella <Olivier.Langella@universite-paris-saclay.fr>.
10
*
11
* This file is part of PAPPSOms-tools.
12
*
13
* PAPPSOms-tools is free software: you can redistribute it and/or modify
14
* it under the terms of the GNU General Public License as published by
15
* the Free Software Foundation, either version 3 of the License, or
16
* (at your option) any later version.
17
*
18
* PAPPSOms-tools is distributed in the hope that it will be useful,
19
* but WITHOUT ANY WARRANTY; without even the implied warranty of
20
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21
* GNU General Public License for more details.
22
*
23
* You should have received a copy of the GNU General Public License
24
* along with PAPPSOms-tools. If not, see <http://www.gnu.org/licenses/>.
25
*
26
******************************************************************************/
27
28
29
#include "
psmcbor2json.h
"
30
#include <QJsonDocument>
31
#include <QJsonObject>
32
#include <QJsonValue>
33
#include "
pappsomspp/core/pappsoexception.h
"
34
35
pappso::cbor::psm::PsmCbor2Json::PsmCbor2Json
(
pappso::cbor::JsonStreamWriter
*json_output_p)
36
{
37
mp_jsonOutput
= json_output_p;
38
39
*
mp_jsonOutput
<<
"{"
<< Qt::endl;
40
}
41
42
43
pappso::cbor::psm::PsmCbor2Json::~PsmCbor2Json
()
44
{
45
}
46
47
void
48
pappso::cbor::psm::PsmCbor2Json::close
()
49
{
50
51
mp_jsonOutput
->endMap();
52
}
53
54
void
55
pappso::cbor::psm::PsmCbor2Json::fastaFilesReady
(
pappso::UiMonitorInterface
&monitor
56
[[maybe_unused]])
57
{
58
if
(!
m_targetFastaFiles
.isEmpty())
59
{
60
mp_jsonOutput
->appendKey(
"target_fasta_files"
);
61
mp_jsonOutput
->writeArray(
m_targetFastaFiles
);
62
}
63
if
(!
m_decoyFastaFiles
.isEmpty())
64
{
65
mp_jsonOutput
->appendKey(
"decoy_fasta_files"
);
66
mp_jsonOutput
->writeArray(
m_decoyFastaFiles
);
67
}
68
}
69
70
void
71
pappso::cbor::psm::PsmCbor2Json::informationsReady
(
pappso::UiMonitorInterface
&monitor
72
[[maybe_unused]])
73
{
74
75
mp_jsonOutput
->appendKey(
"informations"
);
76
mp_jsonOutput
->writeCborMap(
m_cborInformations
);
77
}
78
79
void
80
pappso::cbor::psm::PsmCbor2Json::logReady
(
pappso::UiMonitorInterface
&monitor [[maybe_unused]])
81
{
82
mp_jsonOutput
->appendKey(
"log"
);
83
mp_jsonOutput
->writeCborArray(
m_cborLog
);
84
}
85
86
87
void
88
pappso::cbor::psm::PsmCbor2Json::parameterMapReady
(
pappso::UiMonitorInterface
&monitor
89
[[maybe_unused]])
90
{
91
mp_jsonOutput
->appendKey(
"parameter_map"
);
92
mp_jsonOutput
->writeCborMap(
m_cborParameterMap
);
93
}
94
95
void
96
pappso::cbor::psm::PsmCbor2Json::sampleListStarted
(
pappso::UiMonitorInterface
&monitor
97
[[maybe_unused]])
98
{
99
100
mp_jsonOutput
->appendKey(
"sample_list"
);
101
mp_jsonOutput
->startArray();
102
}
103
104
void
105
pappso::cbor::psm::PsmCbor2Json::sampleListFinished
(
pappso::UiMonitorInterface
&monitor
106
[[maybe_unused]])
107
{
108
109
mp_jsonOutput
->endArray();
110
}
111
112
void
113
pappso::cbor::psm::PsmCbor2Json::readProteinMap
(
pappso::UiMonitorInterface
&monitor
114
[[maybe_unused]])
115
{
116
mp_jsonOutput
->appendKey(
"protein_map"
);
117
mp_jsonOutput
->startMap();
118
if
(!
mpa_cborReader
->enterContainer())
119
{
120
throw
pappso::PappsoException
(QObject::tr(
"enterContainer in protein map failed"
));
121
}
122
QString accession;
123
while
(!
mpa_cborReader
->lastError() &&
mpa_cborReader
->hasNext())
124
{
125
mpa_cborReader
->decodeString(accession);
126
mp_jsonOutput
->appendKey(accession);
127
128
QCborMap cbor_protein;
129
mpa_cborReader
->readCborMap(cbor_protein);
130
mp_jsonOutput
->writeCborMap(cbor_protein);
131
}
132
133
mpa_cborReader
->leaveContainer();
134
mp_jsonOutput
->endMap();
135
}
136
137
void
138
pappso::cbor::psm::PsmCbor2Json::scanStarted
(
pappso::UiMonitorInterface
&monitor [[maybe_unused]])
139
{
140
141
mp_jsonOutput
->startMap();
142
mp_jsonOutput
->appendKey(
"id"
);
143
mp_jsonOutput
->writeCborMap(
m_cborScanId
);
144
mp_jsonOutput
->appendKey(
"precursor"
);
145
mp_jsonOutput
->writeCborMap(
m_cborScanPrecursor
);
146
mp_jsonOutput
->appendKey(
"ms2"
);
147
mp_jsonOutput
->writeCborMap(
m_cborScanMs2
);
148
if
(!
m_cborScanProps
.isEmpty())
149
{
150
mp_jsonOutput
->appendKey(
"props"
);
151
mp_jsonOutput
->writeCborMap(
m_cborScanProps
);
152
};
153
mp_jsonOutput
->appendKey(
"psm_list"
);
154
mp_jsonOutput
->startArray();
155
}
156
157
void
158
pappso::cbor::psm::PsmCbor2Json::scanFinished
(
pappso::UiMonitorInterface
&monitor [[maybe_unused]])
159
{
160
mp_jsonOutput
->endArray();
// psm_list
161
mp_jsonOutput
->endMap();
// scan
162
}
163
164
165
void
166
pappso::cbor::psm::PsmCbor2Json::sampleStarted
(
pappso::UiMonitorInterface
&monitor [[maybe_unused]])
167
{
168
//"name": "tandem2017_nopatch_20120906_balliau_extract_1_A01_urnb-1",
169
qDebug();
170
mp_jsonOutput
->startMap();
// sample
171
mp_jsonOutput
->appendKey(
"name"
);
172
mp_jsonOutput
->appendValue(
m_currentSampleName
);
173
174
175
mp_jsonOutput
->appendKey(
"identification_file_list"
);
176
mp_jsonOutput
->startArray();
177
for
(
auto
&identification_file :
m_currentIdentificationFileList
)
178
{
179
mp_jsonOutput
->startMap();
180
mp_jsonOutput
->appendKey(
"name"
);
181
mp_jsonOutput
->appendValue(identification_file.name);
182
mp_jsonOutput
->endMap();
183
}
184
mp_jsonOutput
->endArray();
185
186
187
mp_jsonOutput
->appendKey(
"peaklist_file"
);
188
mp_jsonOutput
->startMap();
189
mp_jsonOutput
->appendKey(
"name"
);
190
mp_jsonOutput
->appendValue(
m_currentPeaklistFile
.name);
191
mp_jsonOutput
->endMap();
192
193
mp_jsonOutput
->appendKey(
"scan_list"
);
194
mp_jsonOutput
->startArray();
195
}
196
197
void
198
pappso::cbor::psm::PsmCbor2Json::sampleFinished
(
pappso::UiMonitorInterface
&monitor
199
[[maybe_unused]])
200
{
201
mp_jsonOutput
->endArray();
// scan_list
202
mp_jsonOutput
->endMap();
// sample
203
}
204
205
void
206
pappso::cbor::psm::PsmCbor2Json::psmReady
(
pappso::UiMonitorInterface
&monitor [[maybe_unused]])
207
{
208
mp_jsonOutput
->startMap();
// psm
209
mp_jsonOutput
->appendKey(
"proforma"
);
210
mp_jsonOutput
->appendValue(
m_currentPsmProforma
);
211
mp_jsonOutput
->appendKey(
"protein_list"
);
212
mp_jsonOutput
->startArray();
213
for
(
auto
&protein_ref :
m_currentPsmProteinRefList
)
214
{
215
mp_jsonOutput
->startMap();
216
mp_jsonOutput
->appendKey(
"accession"
);
217
mp_jsonOutput
->appendValue(protein_ref.accession);
218
mp_jsonOutput
->appendKey(
"positions"
);
219
mp_jsonOutput
->startArray();
220
for
(
auto
position : protein_ref.positions)
221
{
222
mp_jsonOutput
->appendValue(position);
223
}
224
mp_jsonOutput
->endArray();
225
mp_jsonOutput
->endMap();
226
}
227
mp_jsonOutput
->endArray();
228
if
(!
m_cborScanPsmProps
.isEmpty())
229
{
230
mp_jsonOutput
->appendKey(
"props"
);
231
mp_jsonOutput
->writeCborMap(
m_cborScanPsmProps
);
232
}
233
mp_jsonOutput
->appendKey(
"eval"
);
234
mp_jsonOutput
->writeCborMap(
m_cborScanPsmEval
);
235
236
mp_jsonOutput
->endMap();
// psm
237
}
pappso::PappsoException
Definition
pappsoexception.h:41
pappso::UiMonitorInterface
Definition
uimonitorinterface.h:50
pappso::cbor::CborStreamReaderInterface::mpa_cborReader
CborStreamReader * mpa_cborReader
Definition
cborstreamreaderinterface.h:68
pappso::cbor::JsonStreamWriter
helper class to write json text using CBOR data structures
Definition
jsonstreamwriter.h:43
pappso::cbor::psm::PsmCbor2Json::informationsReady
void informationsReady(pappso::UiMonitorInterface &monitor) override
Definition
psmcbor2json.cpp:71
pappso::cbor::psm::PsmCbor2Json::scanFinished
void scanFinished(pappso::UiMonitorInterface &monitor) override
Definition
psmcbor2json.cpp:158
pappso::cbor::psm::PsmCbor2Json::sampleStarted
void sampleStarted(pappso::UiMonitorInterface &monitor) override
Definition
psmcbor2json.cpp:166
pappso::cbor::psm::PsmCbor2Json::sampleFinished
void sampleFinished(pappso::UiMonitorInterface &monitor) override
Definition
psmcbor2json.cpp:198
pappso::cbor::psm::PsmCbor2Json::psmReady
void psmReady(pappso::UiMonitorInterface &monitor) override
Definition
psmcbor2json.cpp:206
pappso::cbor::psm::PsmCbor2Json::mp_jsonOutput
pappso::cbor::JsonStreamWriter * mp_jsonOutput
Definition
psmcbor2json.h:78
pappso::cbor::psm::PsmCbor2Json::readProteinMap
void readProteinMap(pappso::UiMonitorInterface &monitor) override
Definition
psmcbor2json.cpp:113
pappso::cbor::psm::PsmCbor2Json::fastaFilesReady
void fastaFilesReady(pappso::UiMonitorInterface &monitor) override
Definition
psmcbor2json.cpp:55
pappso::cbor::psm::PsmCbor2Json::logReady
void logReady(pappso::UiMonitorInterface &monitor) override
Definition
psmcbor2json.cpp:80
pappso::cbor::psm::PsmCbor2Json::sampleListStarted
void sampleListStarted(pappso::UiMonitorInterface &monitor) override
Definition
psmcbor2json.cpp:96
pappso::cbor::psm::PsmCbor2Json::~PsmCbor2Json
virtual ~PsmCbor2Json()
Definition
psmcbor2json.cpp:43
pappso::cbor::psm::PsmCbor2Json::parameterMapReady
void parameterMapReady(pappso::UiMonitorInterface &monitor) override
Definition
psmcbor2json.cpp:88
pappso::cbor::psm::PsmCbor2Json::close
void close() override
convenient function to clean pointer before leaving
Definition
psmcbor2json.cpp:48
pappso::cbor::psm::PsmCbor2Json::sampleListFinished
void sampleListFinished(pappso::UiMonitorInterface &monitor) override
Definition
psmcbor2json.cpp:105
pappso::cbor::psm::PsmCbor2Json::scanStarted
void scanStarted(pappso::UiMonitorInterface &monitor) override
Definition
psmcbor2json.cpp:138
pappso::cbor::psm::PsmCbor2Json::PsmCbor2Json
PsmCbor2Json(pappso::cbor::JsonStreamWriter *json_output_p)
Definition
psmcbor2json.cpp:35
pappso::cbor::psm::PsmFileReaderBase::m_cborLog
QCborArray m_cborLog
Definition
psmfilereaderbase.h:134
pappso::cbor::psm::PsmFileReaderBase::m_currentPsmProteinRefList
std::vector< PsmProteinRef > m_currentPsmProteinRefList
Definition
psmfilereaderbase.h:143
pappso::cbor::psm::PsmFileReaderBase::m_currentPeaklistFile
PsmFile m_currentPeaklistFile
Definition
psmfilereaderbase.h:131
pappso::cbor::psm::PsmFileReaderBase::m_targetFastaFiles
QStringList m_targetFastaFiles
Definition
psmfilereaderbase.h:127
pappso::cbor::psm::PsmFileReaderBase::m_decoyFastaFiles
QStringList m_decoyFastaFiles
Definition
psmfilereaderbase.h:128
pappso::cbor::psm::PsmFileReaderBase::m_currentSampleName
QString m_currentSampleName
Definition
psmfilereaderbase.h:130
pappso::cbor::psm::PsmFileReaderBase::m_cborScanProps
QCborMap m_cborScanProps
Definition
psmfilereaderbase.h:139
pappso::cbor::psm::PsmFileReaderBase::m_cborScanPsmProps
QCborMap m_cborScanPsmProps
Definition
psmfilereaderbase.h:141
pappso::cbor::psm::PsmFileReaderBase::m_currentPsmProforma
QString m_currentPsmProforma
Definition
psmfilereaderbase.h:142
pappso::cbor::psm::PsmFileReaderBase::m_cborScanPrecursor
QCborMap m_cborScanPrecursor
Definition
psmfilereaderbase.h:137
pappso::cbor::psm::PsmFileReaderBase::m_cborParameterMap
QCborMap m_cborParameterMap
Definition
psmfilereaderbase.h:135
pappso::cbor::psm::PsmFileReaderBase::m_cborInformations
QCborMap m_cborInformations
Definition
psmfilereaderbase.h:133
pappso::cbor::psm::PsmFileReaderBase::m_currentIdentificationFileList
std::vector< PsmFile > m_currentIdentificationFileList
Definition
psmfilereaderbase.h:132
pappso::cbor::psm::PsmFileReaderBase::m_cborScanId
QCborMap m_cborScanId
Definition
psmfilereaderbase.h:136
pappso::cbor::psm::PsmFileReaderBase::m_cborScanMs2
QCborMap m_cborScanMs2
Definition
psmfilereaderbase.h:138
pappso::cbor::psm::PsmFileReaderBase::m_cborScanPsmEval
QCborMap m_cborScanPsmEval
Definition
psmfilereaderbase.h:140
pappsoexception.h
psmcbor2json.h
pappsomspp
core
processing
cbor
psm
psmcbor2json.cpp
Generated on
for libpappsomspp by
1.17.0