v2.0.0
Loading...
Searching...
No Matches
bids_electrode.cpp
Go to the documentation of this file.
1//=============================================================================================================
34
35//=============================================================================================================
36// INCLUDES
37//=============================================================================================================
38
39#include "bids_electrode.h"
40#include "bids_tsv.h"
41
42//=============================================================================================================
43// USED NAMESPACES
44//=============================================================================================================
45
46using namespace BIDSLIB;
47
48//=============================================================================================================
49// LOCAL HELPERS
50//=============================================================================================================
51
52namespace
53{
54static const QString NA = QStringLiteral("n/a");
55
56QString naToEmpty(const QString& s)
57{
58 return (s == NA) ? QString() : s;
59}
60} // anonymous namespace
61
62//=============================================================================================================
63// STATIC METHODS
64//=============================================================================================================
65
66QList<BidsElectrode> BidsElectrode::readTsv(const QString& sFilePath)
67{
68 QStringList headers;
69 QList<BidsTsvRow> rawRows = BidsTsv::readTsv(sFilePath, headers);
70
71 QList<BidsElectrode> electrodes;
72 electrodes.reserve(rawRows.size());
73
74 for(const auto& row : rawRows) {
75 BidsElectrode elec;
76 elec.name = row.value(QStringLiteral("name"));
77 elec.x = row.value(QStringLiteral("x"), NA);
78 elec.y = row.value(QStringLiteral("y"), NA);
79 elec.z = row.value(QStringLiteral("z"), NA);
80 elec.size = naToEmpty(row.value(QStringLiteral("size")));
81 elec.type = naToEmpty(row.value(QStringLiteral("type")));
82 elec.material = naToEmpty(row.value(QStringLiteral("material")));
83 elec.impedance = naToEmpty(row.value(QStringLiteral("impedance")));
84 electrodes.append(elec);
85 }
86
87 return electrodes;
88}
89
90//=============================================================================================================
91
92bool BidsElectrode::writeTsv(const QString& sFilePath,
93 const QList<BidsElectrode>& electrodes)
94{
95 QStringList headers = {
96 QStringLiteral("name"),
97 QStringLiteral("x"),
98 QStringLiteral("y"),
99 QStringLiteral("z"),
100 QStringLiteral("size"),
101 QStringLiteral("type"),
102 QStringLiteral("material"),
103 QStringLiteral("impedance"),
104 };
105
106 QList<BidsTsvRow> rows;
107 rows.reserve(electrodes.size());
108
109 for(const auto& elec : electrodes) {
110 BidsTsvRow row;
111 row[QStringLiteral("name")] = elec.name;
112 row[QStringLiteral("x")] = elec.x;
113 row[QStringLiteral("y")] = elec.y;
114 row[QStringLiteral("z")] = elec.z;
115 row[QStringLiteral("size")] = elec.size;
116 row[QStringLiteral("type")] = elec.type;
117 row[QStringLiteral("material")] = elec.material;
118 row[QStringLiteral("impedance")] = elec.impedance;
119 rows.append(row);
120 }
121
122 return BidsTsv::writeTsv(sFilePath, headers, rows);
123}
BidsTsv class declaration — generic BIDS TSV file reading and writing.
BidsElectrode struct — electrode position from *_electrodes.tsv.
BIDS dataset reading, writing, path construction, and sidecar metadata handling for iEEG/EEG/MEG.
QMap< QString, QString > BidsTsvRow
Definition bids_tsv.h:65
Electrode position record corresponding to one row in *_electrodes.tsv.
static bool writeTsv(const QString &sFilePath, const QList< BidsElectrode > &electrodes)
Write a BIDS *_electrodes.tsv file.
static QList< BidsElectrode > readTsv(const QString &sFilePath)
Read a BIDS *_electrodes.tsv file.
static QList< BidsTsvRow > readTsv(const QString &sFilePath, QStringList &headers)
Definition bids_tsv.cpp:82
static bool writeTsv(const QString &sFilePath, const QStringList &headers, const QList< BidsTsvRow > &rows)
Definition bids_tsv.cpp:123