v2.0.0
Loading...
Searching...
No Matches
mna_subject.cpp
Go to the documentation of this file.
1//=============================================================================================================
19
20//=============================================================================================================
21// INCLUDES
22//=============================================================================================================
23
24#include "mna_subject.h"
25
26#include <QJsonArray>
27#include <QCborArray>
28
29//=============================================================================================================
30// USED NAMESPACES
31//=============================================================================================================
32
33using namespace MNALIB;
34
35//=============================================================================================================
36// DEFINE METHODS
37//=============================================================================================================
38
39QJsonObject MnaSubject::toJson() const
40{
41 QJsonObject json = extras;
42 json[QLatin1String("id")] = id;
43 json[QLatin1String("freesurfer_dir")] = freeSurferDir;
44
45 QJsonArray sessArr;
46 for (const MnaSession& s : sessions) {
47 sessArr.append(s.toJson());
48 }
49 json[QLatin1String("sessions")] = sessArr;
50
51 return json;
52}
53
54//=============================================================================================================
55
56MnaSubject MnaSubject::fromJson(const QJsonObject& json)
57{
58 MnaSubject subj;
59 subj.id = json[QLatin1String("id")].toString();
60 subj.freeSurferDir = json[QLatin1String("freesurfer_dir")].toString();
61
62 const QJsonArray sessArr = json[QLatin1String("sessions")].toArray();
63 for (const QJsonValue& v : sessArr) {
64 subj.sessions.append(MnaSession::fromJson(v.toObject()));
65 }
66
67 static const QSet<QString> knownKeys = {
68 QStringLiteral("id"), QStringLiteral("freesurfer_dir"),
69 QStringLiteral("sessions")};
70 for (auto it = json.constBegin(); it != json.constEnd(); ++it) {
71 if (!knownKeys.contains(it.key()))
72 subj.extras.insert(it.key(), it.value());
73 }
74
75 return subj;
76}
77
78//=============================================================================================================
79
80QCborMap MnaSubject::toCbor() const
81{
82 QCborMap cbor = QCborMap::fromJsonObject(extras);
83 cbor[QLatin1String("id")] = id;
84 cbor[QLatin1String("freesurfer_dir")] = freeSurferDir;
85
86 QCborArray sessArr;
87 for (const MnaSession& s : sessions) {
88 sessArr.append(s.toCbor());
89 }
90 cbor[QLatin1String("sessions")] = sessArr;
91
92 return cbor;
93}
94
95//=============================================================================================================
96
97MnaSubject MnaSubject::fromCbor(const QCborMap& cbor)
98{
99 MnaSubject subj;
100 subj.id = cbor[QLatin1String("id")].toString();
101 subj.freeSurferDir = cbor[QLatin1String("freesurfer_dir")].toString();
102
103 const QCborArray sessArr = cbor[QLatin1String("sessions")].toArray();
104 for (const QCborValue& v : sessArr) {
105 subj.sessions.append(MnaSession::fromCbor(v.toMap()));
106 }
107
108 static const QSet<QString> knownKeys = {
109 QStringLiteral("id"), QStringLiteral("freesurfer_dir"),
110 QStringLiteral("sessions")};
111 QJsonObject cborJson = cbor.toJsonObject();
112 for (auto it = cborJson.constBegin(); it != cborJson.constEnd(); ++it) {
113 if (!knownKeys.contains(it.key()))
114 subj.extras.insert(it.key(), it.value());
115 }
116
117 return subj;
118}
One participant in an MNA project — owner of measurement sessions and link to the FreeSurfer anatomy.
MNE Analysis Container Format (mna/mnx).
static MnaSession fromCbor(const QCborMap &cbor)
static MnaSession fromJson(const QJsonObject &json)
QJsonObject extras
Definition mna_subject.h:68
static MnaSubject fromJson(const QJsonObject &json)
QJsonObject toJson() const
QList< MnaSession > sessions
Definition mna_subject.h:67
static MnaSubject fromCbor(const QCborMap &cbor)
QCborMap toCbor() const