libpappsomspp
Library for mass spectrometry
Toggle main menu visibility
Loading...
Searching...
No Matches
projectparameters.cpp
Go to the documentation of this file.
1
/**
2
* \file pappsomspp/processing/project/projectparameters.cpp
3
* \date 16/03/2024
4
* \author Olivier Langella
5
* \brief simple structure to store project parameters (identification,
6
* filtering, quantification)
7
*/
8
9
/*******************************************************************************
10
* Copyright (c) 2022 Olivier Langella
11
*<Olivier.Langella@universite-paris-saclay.fr>.
12
*
13
* This file is part of i2MassChroQ.
14
*
15
* i2MassChroQ is free software: you can redistribute it and/or modify
16
* it under the terms of the GNU General Public License as published by
17
* the Free Software Foundation, either version 3 of the License, or
18
* (at your option) any later version.
19
*
20
* i2MassChroQ is distributed in the hope that it will be useful,
21
* but WITHOUT ANY WARRANTY; without even the implied warranty of
22
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23
* GNU General Public License for more details.
24
*
25
* You should have received a copy of the GNU General Public License
26
* along with i2MassChroQ. If not, see <http://www.gnu.org/licenses/>.
27
*
28
******************************************************************************/
29
30
#include "
projectparameters.h
"
31
#include <QDateTime>
32
#include <QUrl>
33
#include "
pappsomspp/core/exception/exceptionnotfound.h
"
34
#include <QDebug>
35
#include <QJsonValue>
36
37
38
pappso::ProjectParameters::ProjectParameters
()
39
{
40
}
41
42
pappso::ProjectParameters::ProjectParameters
(
const
QJsonObject &json_parameters)
43
{
44
45
qDebug() << json_parameters.keys();
46
pappso::ProjectParam
project_parameter;
47
auto
itparam = json_parameters.begin();
48
while
(itparam != json_parameters.end())
49
{
50
qDebug() << itparam.key();
51
project_parameter.
name
= itparam.key();
52
project_parameter.
category
=
53
(
pappso::ProjectParamCategory
)itparam.value().toObject().value(
"category"
).toInt();
54
project_parameter.
value
= itparam.value().toObject().value(
"value"
).toVariant();
55
56
setProjectParam
(project_parameter);
57
itparam++;
58
}
59
}
60
61
62
pappso::ProjectParameters::ProjectParameters
(
const
ProjectParameters
&other)
63
{
64
m_mapGeneralParameters
= other.
m_mapGeneralParameters
;
65
m_mapFilterParameters
= other.
m_mapFilterParameters
;
66
m_mapIdentificationParameters
= other.
m_mapIdentificationParameters
;
67
m_mapQuantificationParameters
= other.
m_mapQuantificationParameters
;
68
m_mapInstrumentParameters
= other.
m_mapInstrumentParameters
;
69
}
70
71
pappso::ProjectParameters::~ProjectParameters
()
72
{
73
}
74
75
pappso::ProjectParameters
&
76
pappso::ProjectParameters::operator=
(
const
ProjectParameters
&other)
77
{
78
79
m_mapGeneralParameters
= other.
m_mapGeneralParameters
;
80
m_mapFilterParameters
= other.
m_mapFilterParameters
;
81
m_mapIdentificationParameters
= other.
m_mapIdentificationParameters
;
82
m_mapQuantificationParameters
= other.
m_mapQuantificationParameters
;
83
m_mapInstrumentParameters
= other.
m_mapInstrumentParameters
;
84
85
return
*
this
;
86
}
87
88
89
void
90
pappso::ProjectParameters::writeCellVariant
(CalcWriterInterface &writer,
const
QVariant &var)
const
91
{
92
int
type = var.metaType().id();
93
switch
(type)
94
{
95
case
QMetaType::Void:
96
writer.writeEmptyCell();
97
break
;
98
case
QMetaType::Bool:
99
writer.writeCell(var.toBool());
100
break
;
101
case
QMetaType::Double:
102
case
QMetaType::Float:
103
writer.writeCell(var.toDouble());
104
break
;
105
case
QMetaType::Int:
106
writer.writeCell(var.toInt());
107
break
;
108
case
QMetaType::QDate:
109
writer.writeCell(var.toDate());
110
break
;
111
case
QMetaType::QDateTime:
112
writer.writeCell(var.toDateTime());
113
break
;
114
case
QMetaType::QString:
115
writer.writeCell(var.toString());
116
break
;
117
case
QMetaType::QUrl:
118
writer.writeCell(var.toUrl(), var.toUrl().toString());
119
break
;
120
default
:
121
writer.writeCell(var.toString());
122
}
123
}
124
125
void
126
pappso::ProjectParameters::writeXmlParameter
(QXmlStreamWriter &writer,
127
const
ProjectParam
¶m)
const
128
{
129
130
writer.writeStartElement(
"project_param"
);
131
writer.writeAttribute(
"category"
, QString(
"%1"
).arg((std::uint8_t)param.
category
));
132
writer.writeAttribute(
"name"
, param.
name
);
133
writeXmlVariant
(writer, param.
value
);
134
writer.writeEndElement();
135
}
136
137
138
void
139
pappso::ProjectParameters::writeParameters
(QXmlStreamWriter &xml_writer)
const
140
{
141
142
for
(
auto
param_entry :
m_mapGeneralParameters
)
143
{
144
writeXmlParameter
(xml_writer, param_entry.second);
145
}
146
147
for
(
auto
param_entry :
m_mapInstrumentParameters
)
148
{
149
writeXmlParameter
(xml_writer, param_entry.second);
150
}
151
for
(
auto
param_entry :
m_mapIdentificationParameters
)
152
{
153
writeXmlParameter
(xml_writer, param_entry.second);
154
}
155
156
for
(
auto
param_entry :
m_mapFilterParameters
)
157
{
158
writeXmlParameter
(xml_writer, param_entry.second);
159
}
160
for
(
auto
param_entry :
m_mapQuantificationParameters
)
161
{
162
writeXmlParameter
(xml_writer, param_entry.second);
163
}
164
}
165
166
void
167
pappso::ProjectParameters::writeXmlVariant
(QXmlStreamWriter &writer,
const
QVariant &var)
const
168
{
169
int
type = var.metaType().id();
170
QString value;
171
switch
(type)
172
{
173
case
QMetaType::Void:
174
value =
""
;
175
break
;
176
case
QMetaType::Bool:
177
value =
"false"
;
178
if
(var.toBool())
179
value =
"true"
;
180
break
;
181
case
QMetaType::Double:
182
case
QMetaType::Float:
183
value = QString::number(var.toDouble(),
'g'
, 10);
184
break
;
185
case
QMetaType::Int:
186
value = QString::number(var.toInt());
187
break
;
188
case
QMetaType::QDate:
189
value = var.toDate().toString(Qt::ISODate);
190
break
;
191
case
QMetaType::QDateTime:
192
value = var.toDateTime().toString(Qt::ISODate);
193
break
;
194
case
QMetaType::QString:
195
value = var.toString();
196
break
;
197
case
QMetaType::QUrl:
198
value = var.toUrl().toString();
199
break
;
200
default
:
201
value = var.toString();
202
}
203
204
writer.writeAttribute(
"value"
, value);
205
}
206
207
void
208
pappso::ProjectParameters::writeParameters
(CalcWriterInterface &writer)
const
209
{
210
writer.writeSheet(
"Project parameters"
);
211
212
for
(
auto
param_entry :
m_mapGeneralParameters
)
213
{
214
writer.writeCell(param_entry.second.name);
215
writeCellVariant
(writer, param_entry.second.value);
216
writer.writeLine();
217
}
218
219
for
(
auto
param_entry :
m_mapInstrumentParameters
)
220
{
221
writer.writeCell(param_entry.second.name);
222
writeCellVariant
(writer, param_entry.second.value);
223
writer.writeLine();
224
}
225
for
(
auto
param_entry :
m_mapIdentificationParameters
)
226
{
227
writer.writeCell(param_entry.second.name);
228
writeCellVariant
(writer, param_entry.second.value);
229
writer.writeLine();
230
}
231
for
(
auto
param_entry :
m_mapFilterParameters
)
232
{
233
writer.writeCell(param_entry.second.name);
234
writeCellVariant
(writer, param_entry.second.value);
235
writer.writeLine();
236
}
237
for
(
auto
param_entry :
m_mapQuantificationParameters
)
238
{
239
writer.writeCell(param_entry.second.name);
240
writeCellVariant
(writer, param_entry.second.value);
241
writer.writeLine();
242
}
243
}
244
245
void
246
pappso::ProjectParameters::setProjectParam
(
const
ProjectParam
¶m)
247
{
248
switch
(param.
category
)
249
{
250
case
ProjectParamCategory::general
:
251
m_mapGeneralParameters
[param.
name
] = param;
252
break
;
253
case
ProjectParamCategory::instrument
:
254
m_mapInstrumentParameters
[param.
name
] = param;
255
break
;
256
case
ProjectParamCategory::filter
:
257
m_mapFilterParameters
[param.
name
] = param;
258
break
;
259
case
ProjectParamCategory::identification
:
260
m_mapIdentificationParameters
[param.
name
] = param;
261
break
;
262
case
ProjectParamCategory::quantification
:
263
m_mapQuantificationParameters
[param.
name
] = param;
264
break
;
265
default
:
266
break
;
267
}
268
}
269
270
void
271
pappso::ProjectParameters::merge
(
const
ProjectParameters
¶meters)
272
{
273
274
for
(
auto
key_value : parameters.
m_mapGeneralParameters
)
275
{
276
m_mapGeneralParameters
[key_value.first] = key_value.second;
277
}
278
for
(
auto
key_value : parameters.
m_mapInstrumentParameters
)
279
{
280
m_mapInstrumentParameters
[key_value.first] = key_value.second;
281
}
282
for
(
auto
key_value : parameters.
m_mapFilterParameters
)
283
{
284
m_mapFilterParameters
[key_value.first] = key_value.second;
285
}
286
287
for
(
auto
key_value : parameters.
m_mapIdentificationParameters
)
288
{
289
m_mapIdentificationParameters
[key_value.first] = key_value.second;
290
}
291
292
for
(
auto
key_value : parameters.
m_mapQuantificationParameters
)
293
{
294
m_mapQuantificationParameters
[key_value.first] = key_value.second;
295
}
296
}
297
298
std::size_t
299
pappso::ProjectParameters::size
()
const
300
{
301
return
(
m_mapGeneralParameters
.size() +
m_mapInstrumentParameters
.size() +
302
m_mapFilterParameters
.size() +
m_mapIdentificationParameters
.size() +
303
m_mapQuantificationParameters
.size());
304
}
305
306
const
QVariant
307
pappso::ProjectParameters::getValue
(
ProjectParamCategory
category,
const
QString &name)
const
308
{
309
const
std::map<QString, ProjectParam> *map_pointer =
nullptr
;
310
switch
(category)
311
{
312
case
ProjectParamCategory::general
:
313
map_pointer = &
m_mapGeneralParameters
;
314
break
;
315
case
ProjectParamCategory::instrument
:
316
map_pointer = &
m_mapInstrumentParameters
;
317
break
;
318
case
ProjectParamCategory::filter
:
319
map_pointer = &
m_mapFilterParameters
;
320
break
;
321
case
ProjectParamCategory::identification
:
322
map_pointer = &
m_mapIdentificationParameters
;
323
break
;
324
case
ProjectParamCategory::quantification
:
325
map_pointer = &
m_mapQuantificationParameters
;
326
break
;
327
default
:
328
map_pointer = &
m_mapGeneralParameters
;
329
break
;
330
}
331
332
auto
it = map_pointer->find(name);
333
if
(it != map_pointer->end())
334
{
335
return
(it->second.value);
336
}
337
else
338
{
339
qDebug() << QObject::tr(
"project parameter named %1 in category %2 not found"
)
340
.arg(name)
341
.arg((std::int8_t)category);
342
}
343
return
(QVariant());
344
}
345
346
std::vector<pappso::ProjectParam>
347
pappso::ProjectParameters::getProjectParamListByCategory
(
ProjectParamCategory
category)
const
348
{
349
std::vector<ProjectParam> param_list;
350
const
std::map<QString, ProjectParam> *map_pointer =
nullptr
;
351
switch
(category)
352
{
353
case
ProjectParamCategory::general
:
354
map_pointer = &
m_mapGeneralParameters
;
355
break
;
356
case
ProjectParamCategory::instrument
:
357
map_pointer = &
m_mapInstrumentParameters
;
358
break
;
359
case
ProjectParamCategory::filter
:
360
map_pointer = &
m_mapFilterParameters
;
361
break
;
362
case
ProjectParamCategory::identification
:
363
map_pointer = &
m_mapIdentificationParameters
;
364
break
;
365
case
ProjectParamCategory::quantification
:
366
map_pointer = &
m_mapQuantificationParameters
;
367
break
;
368
default
:
369
map_pointer = &
m_mapGeneralParameters
;
370
break
;
371
}
372
373
for
(
auto
pair_item : *map_pointer)
374
{
375
param_list.push_back(pair_item.second);
376
}
377
378
return
param_list;
379
}
380
381
QJsonObject
382
pappso::ProjectParameters::toJsonObject
()
const
383
{
384
QJsonObject parameters;
385
386
for
(
auto
param_entry :
m_mapGeneralParameters
)
387
{
388
parameters.insert(param_entry.first, param_entry.second.toJsonObject());
389
}
390
for
(
auto
param_entry :
m_mapInstrumentParameters
)
391
{
392
parameters.insert(param_entry.first, param_entry.second.toJsonObject());
393
}
394
for
(
auto
param_entry :
m_mapIdentificationParameters
)
395
{
396
parameters.insert(param_entry.first, param_entry.second.toJsonObject());
397
}
398
for
(
auto
param_entry :
m_mapFilterParameters
)
399
{
400
parameters.insert(param_entry.first, param_entry.second.toJsonObject());
401
}
402
for
(
auto
param_entry :
m_mapQuantificationParameters
)
403
{
404
parameters.insert(param_entry.first, param_entry.second.toJsonObject());
405
}
406
return
parameters;
407
}
408
409
410
QJsonObject
411
pappso::ProjectParam::toJsonObject
()
const
412
{
413
414
QJsonObject param;
415
param.insert(
"category"
, (
int
)
category
);
416
417
int
type =
value
.metaType().id();
418
switch
(type)
419
{
420
case
QMetaType::Void:
421
param.insert(
"value"
,
""
);
422
break
;
423
case
QMetaType::Bool:
424
param.insert(
"value"
,
value
.toBool());
425
break
;
426
case
QMetaType::Double:
427
case
QMetaType::Float:
428
param.insert(
"value"
,
value
.toDouble());
429
break
;
430
case
QMetaType::Int:
431
param.insert(
"value"
,
value
.toInt());
432
break
;
433
case
QMetaType::QDate:
434
435
param.insert(
"value"
,
value
.toDate().toString(Qt::ISODate));
436
break
;
437
case
QMetaType::QDateTime:
438
439
param.insert(
"value"
,
value
.toDateTime().toString(Qt::ISODate));
440
break
;
441
case
QMetaType::QString:
442
param.insert(
"value"
,
value
.toString());
443
break
;
444
case
QMetaType::QUrl:
445
446
param.insert(
"value"
,
value
.toString());
447
break
;
448
default
:
449
param.insert(
"value"
,
value
.toString());
450
}
451
return
param;
452
}
453
454
void
455
pappso::ProjectParameters::writeParameters
(QCborStreamWriter &cbor_writer)
const
456
{
457
cbor_writer.append(
"project_parameters"
);
458
459
QCborValue::fromJsonValue(
toJsonObject
()).toCbor(cbor_writer);
460
}
pappso::ProjectParameters
Definition
projectparameters.h:66
pappso::ProjectParameters::writeCellVariant
void writeCellVariant(CalcWriterInterface &writer, const QVariant &var) const
Definition
projectparameters.cpp:90
pappso::ProjectParameters::m_mapQuantificationParameters
std::map< QString, ProjectParam > m_mapQuantificationParameters
Definition
projectparameters.h:118
pappso::ProjectParameters::m_mapIdentificationParameters
std::map< QString, ProjectParam > m_mapIdentificationParameters
Definition
projectparameters.h:116
pappso::ProjectParameters::operator=
ProjectParameters & operator=(const ProjectParameters &other)
Definition
projectparameters.cpp:76
pappso::ProjectParameters::m_mapGeneralParameters
std::map< QString, ProjectParam > m_mapGeneralParameters
Definition
projectparameters.h:115
pappso::ProjectParameters::writeXmlVariant
void writeXmlVariant(QXmlStreamWriter &writer, const QVariant &var) const
Definition
projectparameters.cpp:167
pappso::ProjectParameters::~ProjectParameters
~ProjectParameters()
Definition
projectparameters.cpp:71
pappso::ProjectParameters::ProjectParameters
ProjectParameters()
Definition
projectparameters.cpp:38
pappso::ProjectParameters::writeXmlParameter
void writeXmlParameter(QXmlStreamWriter &writer, const ProjectParam ¶m) const
Definition
projectparameters.cpp:126
pappso::ProjectParameters::m_mapFilterParameters
std::map< QString, ProjectParam > m_mapFilterParameters
Definition
projectparameters.h:117
pappso::ProjectParameters::size
std::size_t size() const
Definition
projectparameters.cpp:299
pappso::ProjectParameters::setProjectParam
void setProjectParam(const ProjectParam ¶m)
Definition
projectparameters.cpp:246
pappso::ProjectParameters::m_mapInstrumentParameters
std::map< QString, ProjectParam > m_mapInstrumentParameters
Definition
projectparameters.h:119
pappso::ProjectParameters::toJsonObject
QJsonObject toJsonObject() const
Definition
projectparameters.cpp:382
pappso::ProjectParameters::getProjectParamListByCategory
std::vector< ProjectParam > getProjectParamListByCategory(ProjectParamCategory category) const
Definition
projectparameters.cpp:347
pappso::ProjectParameters::getValue
const QVariant getValue(ProjectParamCategory category, const QString &name) const
Definition
projectparameters.cpp:307
pappso::ProjectParameters::merge
void merge(const ProjectParameters ¶meters)
Definition
projectparameters.cpp:271
pappso::ProjectParameters::writeParameters
void writeParameters(CalcWriterInterface &writer) const
Definition
projectparameters.cpp:208
exceptionnotfound.h
pappso::ProjectParamCategory
ProjectParamCategory
Definition
projectparameters.h:44
pappso::ProjectParamCategory::identification
@ identification
concerning identification
Definition
projectparameters.h:47
pappso::ProjectParamCategory::instrument
@ instrument
information about instrument
Definition
projectparameters.h:50
pappso::ProjectParamCategory::general
@ general
concerning the whole process
Definition
projectparameters.h:46
pappso::ProjectParamCategory::quantification
@ quantification
quantification
Definition
projectparameters.h:49
pappso::ProjectParamCategory::filter
@ filter
concerning filters (psm, peptide, protein validation)
Definition
projectparameters.h:48
projectparameters.h
pappso::ProjectParam
Definition
projectparameters.h:54
pappso::ProjectParam::value
QVariant value
Definition
projectparameters.h:59
pappso::ProjectParam::category
ProjectParamCategory category
Definition
projectparameters.h:57
pappso::ProjectParam::name
QString name
Definition
projectparameters.h:58
pappso::ProjectParam::toJsonObject
QJsonObject toJsonObject() const
Definition
projectparameters.cpp:411
pappsomspp
core
processing
project
projectparameters.cpp
Generated on
for libpappsomspp by
1.17.0