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 };
71 for (auto it = json.constBegin(); it != json.constEnd(); ++it) {
72 if (!knownKeys.contains(it.key()))
73 subj.extras.insert(it.key(), it.value());
74 }
75
76 return subj;
77}
78
79//=============================================================================================================
80
81QCborMap MnaSubject::toCbor() const
82{
83 QCborMap cbor = QCborMap::fromJsonObject(extras);
84 cbor[QLatin1String("id")] = id;
85 cbor[QLatin1String("freesurfer_dir")] = freeSurferDir;
86
87 QCborArray sessArr;
88 for(const MnaSession& s : sessions) {
89 sessArr.append(s.toCbor());
90 }
91 cbor[QLatin1String("sessions")] = sessArr;
92
93 return cbor;
94}
95
96//=============================================================================================================
97
98MnaSubject MnaSubject::fromCbor(const QCborMap& cbor)
99{
100 MnaSubject subj;
101 subj.id = cbor[QLatin1String("id")].toString();
102 subj.freeSurferDir = cbor[QLatin1String("freesurfer_dir")].toString();
103
104 const QCborArray sessArr = cbor[QLatin1String("sessions")].toArray();
105 for(const QCborValue& v : sessArr) {
106 subj.sessions.append(MnaSession::fromCbor(v.toMap()));
107 }
108
109 static const QSet<QString> knownKeys = {
110 QStringLiteral("id"), QStringLiteral("freesurfer_dir"),
111 QStringLiteral("sessions")
112 };
113 QJsonObject cborJson = cbor.toJsonObject();
114 for (auto it = cborJson.constBegin(); it != cborJson.constEnd(); ++it) {
115 if (!knownKeys.contains(it.key()))
116 subj.extras.insert(it.key(), it.value());
117 }
118
119 return subj;
120}
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:65
static MnaSubject fromJson(const QJsonObject &json)
QJsonObject toJson() const
QList< MnaSession > sessions
Definition mna_subject.h:64
static MnaSubject fromCbor(const QCborMap &cbor)
QCborMap toCbor() const