v2.0.0
Loading...
Searching...
No Matches
bids_dataset_description.cpp
Go to the documentation of this file.
1//=============================================================================================================
12
13//=============================================================================================================
14// INCLUDES
15//=============================================================================================================
16
18
19//=============================================================================================================
20// QT INCLUDES
21//=============================================================================================================
22
23#include <QFile>
24#include <QJsonDocument>
25#include <QJsonObject>
26#include <QDebug>
27
28//=============================================================================================================
29// USED NAMESPACES
30//=============================================================================================================
31
32using namespace BIDSLIB;
33
34//=============================================================================================================
35// STATIC METHODS
36//=============================================================================================================
37
39{
41
42 QFile file(sFilePath);
43 if(!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
44 qWarning() << "[BidsDatasetDescription::read] Cannot open" << sFilePath;
45 return desc;
46 }
47
48 QJsonParseError error;
49 QJsonDocument doc = QJsonDocument::fromJson(file.readAll(), &error);
50 file.close();
51
52 if(error.error != QJsonParseError::NoError) {
53 qWarning() << "[BidsDatasetDescription::read] Parse error in" << sFilePath
54 << ":" << error.errorString();
55 return desc;
56 }
57
58 QJsonObject json = doc.object();
59 desc.name = json.value(QStringLiteral("Name")).toString();
60 desc.bidsVersion = json.value(QStringLiteral("BIDSVersion")).toString();
61 desc.datasetType = json.value(QStringLiteral("DatasetType")).toString();
62 desc.license = json.value(QStringLiteral("License")).toString();
63
64 return desc;
65}
66
67//=============================================================================================================
68
69bool BidsDatasetDescription::write(const QString& sFilePath,
70 const BidsDatasetDescription& desc)
71{
72 QJsonObject json;
73
74 json[QStringLiteral("Name")] = desc.name;
75 json[QStringLiteral("BIDSVersion")] = desc.bidsVersion;
76
77 if(!desc.datasetType.isEmpty())
78 json[QStringLiteral("DatasetType")] = desc.datasetType;
79 if(!desc.license.isEmpty())
80 json[QStringLiteral("License")] = desc.license;
81
82 QFile file(sFilePath);
83 if(!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
84 qWarning() << "[BidsDatasetDescription::write] Cannot open" << sFilePath << "for writing";
85 return false;
86 }
87
88 file.write(QJsonDocument(json).toJson(QJsonDocument::Indented));
89 file.close();
90 return true;
91}
Reader/writer for dataset_description.json — the REQUIRED root sidecar of every BIDS dataset.
BIDS dataset reading, writing, path construction, and sidecar metadata handling for iEEG/EEG/MEG.
Dataset-level metadata from dataset_description.json.
static BidsDatasetDescription read(const QString &sFilePath)
Read a dataset_description.json file.
static bool write(const QString &sFilePath, const BidsDatasetDescription &desc)
Write a dataset_description.json file.