MNE-CPP 0.1.9
A Framework for Electrophysiology
Loading...
Searching...
No Matches
data3Dtreemodel.cpp
Go to the documentation of this file.
1//=============================================================================================================
38//=============================================================================================================
39// INCLUDES
40//=============================================================================================================
41
42#include "data3Dtreemodel.h"
53
55
56#include <fs/surfaceset.h>
57#include <fs/annotationset.h>
58
60
61//=============================================================================================================
62// QT INCLUDES
63//=============================================================================================================
64
65#include <QSharedPointer>
66#include <Qt3DCore/QEntity>
67#include <QSurfaceFormat>
68
69//=============================================================================================================
70// EIGEN INCLUDES
71//=============================================================================================================
72
73//=============================================================================================================
74// USED NAMESPACES
75//=============================================================================================================
76
77using namespace FSLIB;
78using namespace MNELIB;
79using namespace DISP3DLIB;
80using namespace INVERSELIB;
81using namespace CONNECTIVITYLIB;
82using namespace Eigen;
83using namespace FIFFLIB;
84
85//=============================================================================================================
86// DEFINE MEMBER METHODS
87//=============================================================================================================
88
90: QStandardItemModel(parent)
91, m_pModelEntity(new Qt3DCore::QEntity())
92{
93 m_pRootItem = this->invisibleRootItem();
94 m_pRootItem->setText("Loaded 3D Data");
95
97}
98
99//=============================================================================================================
100
101QVariant Data3DTreeModel::data(const QModelIndex& index,
102 int role) const
103{
104// qDebug() << "Data3DTreeModel::data - index.column(): " << index.column();
105
106// if(index.column() == 1) {
107// QVariant data;
108// data.setValue(QString("test"));
109// return data;
110// }
111
112 return QStandardItemModel::data(index, role);
113}
114
115//=============================================================================================================
116
117int Data3DTreeModel::columnCount(const QModelIndex &parent) const
118{
119 Q_UNUSED(parent);
120 // Return 2 to activate item description in tree view
121 return 1;
122}
123
124//=============================================================================================================
125
126QVariant Data3DTreeModel::headerData(int section, Qt::Orientation orientation,
127 int role) const
128{
129 if (orientation == Qt::Horizontal && role == Qt::DisplayRole) {
130 QVariant data;
131 if(section == 0) {
132 data.setValue(QString("Data"));
133 } else if(section == 1) {
134 data.setValue(QString("Description"));
135 }
136
137 return data;
138 }
139
140 return QVariant();
141}
142
143//=============================================================================================================
144
145Qt::ItemFlags Data3DTreeModel::flags(const QModelIndex &index) const
146{
147 //Do not allow items from column 1 (0 based counting) to be edited
148 if(index.column() == 1) {
149 return Qt::ItemIsEnabled;
150 }
151
152 return QStandardItemModel::flags(index);
153}
154
155//=============================================================================================================
156
157QList<FsSurfaceTreeItem*> Data3DTreeModel::addSurfaceSet(const QString& sSubject,
158 const QString& sMriSetName,
159 const SurfaceSet& surfaceSet,
160 const AnnotationSet& annotationSet)
161{
162 QList<FsSurfaceTreeItem*> returnItemList;
163
164 for(int i = 0; i < surfaceSet.size(); ++i) {
165 if(i < annotationSet.size()) {
166 returnItemList.append(addSurface(sSubject, sMriSetName, surfaceSet[i], annotationSet[i]));
167 } else {
168 returnItemList.append(addSurface(sSubject, sMriSetName,surfaceSet[i], Annotation()));
169 }
170 }
171
172 return returnItemList;
173}
174
175//=============================================================================================================
176
178 const QString& sMriSetName,
179 const Surface& surface,
180 const Annotation &annotation)
181{
182 FsSurfaceTreeItem* pReturnItem = Q_NULLPTR;
183
184 //Handle subject item
185 SubjectTreeItem* pSubjectItem = addSubject(subject);
186
187 //Find already existing MRI items and add the new data to the first search result
188 QList<QStandardItem*> itemList = pSubjectItem->findChildren(sMriSetName);
189
190 if(!itemList.isEmpty()) {
191 MriTreeItem* pMriItem = dynamic_cast<MriTreeItem*>(itemList.first());
192 pReturnItem = pMriItem->addData(surface, annotation, m_pModelEntity);
193 } else {
194 MriTreeItem* pMriItem = new MriTreeItem(Data3DTreeModelItemTypes::MriItem, sMriSetName);
195 AbstractTreeItem::addItemWithDescription(pSubjectItem, pMriItem);
196 pReturnItem = pMriItem->addData(surface, annotation, m_pModelEntity);
197 }
198
199 return pReturnItem;
200}
201
202//=============================================================================================================
203
204QList<SourceSpaceTreeItem*> Data3DTreeModel::addSourceSpace(const QString& sSubject,
205 const QString& sMeasurementSetName,
206 const MNESourceSpace& sourceSpace)
207{
208 QList<SourceSpaceTreeItem*> pReturnItem;
209
210 //Handle subject item
211 SubjectTreeItem* pSubjectItem = addSubject(sSubject);
212
213 //Find already existing surface items and add the new data to the first search result
214 QList<QStandardItem*> itemList = pSubjectItem->findChildren(sMeasurementSetName);
215
216 if(!itemList.isEmpty()) {
217 MeasurementTreeItem* pMeasurementItem = dynamic_cast<MeasurementTreeItem*>(itemList.first());
218 pReturnItem = pMeasurementItem->addData(sourceSpace, m_pModelEntity);
219 } else {
220 MeasurementTreeItem* pMeasurementItem = new MeasurementTreeItem(Data3DTreeModelItemTypes::MeasurementItem, sMeasurementSetName);
221 AbstractTreeItem::addItemWithDescription(pSubjectItem, pMeasurementItem);
222 pReturnItem = pMeasurementItem->addData(sourceSpace, m_pModelEntity);
223 }
224
225 return pReturnItem;
226}
227
228//=============================================================================================================
229
230QList<SourceSpaceTreeItem*> Data3DTreeModel::addForwardSolution(const QString& sSubject,
231 const QString& sMeasurementSetName,
232 const MNEForwardSolution& forwardSolution)
233{
234 return this->addSourceSpace(sSubject, sMeasurementSetName, forwardSolution.src);
235}
236
237//=============================================================================================================
238
240 const QString& sMeasurementSetName,
241 const MNESourceEstimate& tSourceEstimate,
242 const MNELIB::MNEForwardSolution& tForwardSolution,
243 const FSLIB::SurfaceSet& tSurfSet,
244 const FSLIB::AnnotationSet& tAnnotSet)
245{
246 bool bUseGPU = false;
247
248 // Only support CPU support until we figured out the QBuffer memory problem when dealing with large matrices
249// if(QGLFormat::openGLVersionFlags() >= QGLFormat::OpenGL_Version_4_3) {
250// bUseGPU = true;
251// qDebug("Using compute shader version for 3D visualization.");
252// }
253
254 MneDataTreeItem* pReturnItem = Q_NULLPTR;
255
256 //Handle subject item
257 SubjectTreeItem* pSubjectItem = addSubject(sSubject);
258
259 //Find already existing surface items and add the new data to the first search result
260 QList<QStandardItem*> itemList = pSubjectItem->findChildren(sMeasurementSetName);
261
262 //Find the "set" items and add the sensor data as items
263 if(!itemList.isEmpty() && (itemList.first()->type() == Data3DTreeModelItemTypes::MeasurementItem)) {
264 if(MeasurementTreeItem* pMeasurementItem = dynamic_cast<MeasurementTreeItem*>(itemList.first())) {
265 pReturnItem = pMeasurementItem->addData(tSourceEstimate,
266 tForwardSolution,
267 tSurfSet,
268 tAnnotSet,
270 bUseGPU);
271 }
272 } else {
273 MeasurementTreeItem* pMeasurementItem = new MeasurementTreeItem(Data3DTreeModelItemTypes::MeasurementItem, sMeasurementSetName);
274 AbstractTreeItem::addItemWithDescription(pSubjectItem, pMeasurementItem);
275 pReturnItem = pMeasurementItem->addData(tSourceEstimate,
276 tForwardSolution,
277 tSurfSet,
278 tAnnotSet,
280 bUseGPU);
281 }
282
283 return pReturnItem;
284}
285
286//=============================================================================================================
287
289 const QString& sSet,
290 const INVERSELIB::ECDSet& ecdSet)
291{
292 EcdDataTreeItem* pReturnItem = Q_NULLPTR;
293
294 //Handle subject item
295 SubjectTreeItem* pSubjectItem = addSubject(sSubject);
296
297 //Find already existing surface items and add the new data to the first search result
298 QList<QStandardItem*> itemList = pSubjectItem->findChildren(sSet);
299
300 //Find the "set" items and add the dipole fits as items
301 if(!itemList.isEmpty() && (itemList.first()->type() == Data3DTreeModelItemTypes::MeasurementItem)) {
302 if(MeasurementTreeItem* pMeasurementItem = dynamic_cast<MeasurementTreeItem*>(itemList.first())) {
303 pReturnItem = pMeasurementItem->addData(ecdSet, m_pModelEntity);
304 }
305 } else {
306 MeasurementTreeItem* pMeasurementItem = new MeasurementTreeItem(Data3DTreeModelItemTypes::MeasurementItem, sSet);
307 AbstractTreeItem::addItemWithDescription(pSubjectItem, pMeasurementItem);
308 pReturnItem = pMeasurementItem->addData(ecdSet, m_pModelEntity);
309 }
310
311 return pReturnItem;
312}
313
314//=============================================================================================================
315
316QList<NetworkTreeItem*> Data3DTreeModel::addConnectivityData(const QString& sSubject,
317 const QString& sMeasurementSetName,
318 const QList<Network>& networkData)
319{
320 QList<NetworkTreeItem*> returnList;
321
322 for(int i = 0; i < networkData.size(); ++i) {
323 returnList.append(addConnectivityData(sSubject,
324 sMeasurementSetName,
325 networkData.at(i)));
326 }
327
328 return returnList;
329}
330
331//=============================================================================================================
332
334 const QString& sMeasurementSetName,
335 const Network& networkData)
336{
337 NetworkTreeItem* pReturnItem = Q_NULLPTR;
338
339 //Handle subject item
340 SubjectTreeItem* pSubjectItem = addSubject(sSubject);
341
342 //Find already existing surface items and add the new data to the first search result
343 QList<QStandardItem*> itemList = pSubjectItem->findChildren(sMeasurementSetName);
344
345 if(!itemList.isEmpty() && (itemList.first()->type() == Data3DTreeModelItemTypes::MeasurementItem)) {
346 if(MeasurementTreeItem* pMeasurementItem = dynamic_cast<MeasurementTreeItem*>(itemList.first())) {
347 pReturnItem = pMeasurementItem->addData(networkData, m_pModelEntity);
348 }
349 } else {
350 MeasurementTreeItem* pMeasurementItem = new MeasurementTreeItem(Data3DTreeModelItemTypes::MeasurementItem, sMeasurementSetName);
351 AbstractTreeItem::addItemWithDescription(pSubjectItem, pMeasurementItem);
352 pReturnItem = pMeasurementItem->addData(networkData, m_pModelEntity);
353 }
354
355 return pReturnItem;
356}
357
358//=============================================================================================================
359
361 const QString& sBemSetName,
362 const MNELIB::MNEBem& bem)
363{
364 BemTreeItem* pReturnItem = Q_NULLPTR;
365
366 //Handle subject item
367 SubjectTreeItem* pSubjectItem = addSubject(sSubject);
368
369 //Find already existing surface items and add the new data to the first search result
370 QList<QStandardItem*> itemList = pSubjectItem->findChildren(sBemSetName);
371
372 if(!itemList.isEmpty() && (itemList.first()->type() == Data3DTreeModelItemTypes::BemItem)) {
373 pReturnItem = dynamic_cast<BemTreeItem*>(itemList.first());
374 pReturnItem->addData(bem, m_pModelEntity);
375 } else {
376 pReturnItem = new BemTreeItem(Data3DTreeModelItemTypes::BemItem, sBemSetName);
377 AbstractTreeItem::addItemWithDescription(pSubjectItem, pReturnItem);
378 pReturnItem->addData(bem, m_pModelEntity);
379 }
380
381 return pReturnItem;
382}
383
384//=============================================================================================================
385
387 const QString& sSensorSetName,
388 const QList<FIFFLIB::FiffChInfo>& lChInfo,
389 const MNELIB::MNEBem& sensor,
390 const QStringList& bads)
391{
392 SensorSetTreeItem* pReturnItem = Q_NULLPTR;
393
394 //Handle subject item
395 SubjectTreeItem* pSubjectItem = addSubject(sSubject);
396
397 //Find already existing surface items and add the new data to the first search result
398 QList<QStandardItem*> itemList = pSubjectItem->findChildren(sSensorSetName);
399
400 if(!itemList.isEmpty() && (itemList.first()->type() == Data3DTreeModelItemTypes::SensorSetItem)) {
401 pReturnItem = dynamic_cast<SensorSetTreeItem*>(itemList.first());
402 if(pReturnItem == Q_NULLPTR){
403 qDebug()<<"Dynamic cast failed, returning null pointer";
404 } else {
405 pReturnItem->addData(sensor, lChInfo, "MEG", bads, m_pModelEntity);
406 }
407 } else {
408 pReturnItem = new SensorSetTreeItem(Data3DTreeModelItemTypes::SensorSetItem, sSensorSetName);
409 AbstractTreeItem::addItemWithDescription(pSubjectItem, pReturnItem);
410 pReturnItem->addData(sensor, lChInfo, "MEG", bads, m_pModelEntity);
411 }
412
413 return pReturnItem;
414}
415
416//=============================================================================================================
417
419 const QString& sSensorSetName,
420 const QList<FIFFLIB::FiffChInfo>& lChInfo,
421 const QStringList& bads)
422{
423 SensorSetTreeItem* pReturnItem = Q_NULLPTR;
424
425 //Handle subject item
426 SubjectTreeItem* pSubjectItem = addSubject(sSubject);
427
428 //Find already existing surface items and add the new data to the first search result
429 QList<QStandardItem*> itemList = pSubjectItem->findChildren(sSensorSetName);
430
431 MNEBem tempBem = MNEBem();
432
433 if(!itemList.isEmpty() && (itemList.first()->type() == Data3DTreeModelItemTypes::SensorSetItem)) {
434 pReturnItem = dynamic_cast<SensorSetTreeItem*>(itemList.first());
435 if(pReturnItem == Q_NULLPTR){
436 qDebug() << "Dynamic cast failed, returning null pointer";
437 pReturnItem = Q_NULLPTR;
438 } else {
439 pReturnItem->addData(tempBem, lChInfo, "EEG", bads, m_pModelEntity);
440 }
441 } else {
442 pReturnItem = new SensorSetTreeItem(Data3DTreeModelItemTypes::SensorSetItem, sSensorSetName);
443 AbstractTreeItem::addItemWithDescription(pSubjectItem, pReturnItem);
444 pReturnItem->addData(tempBem, lChInfo, "EEG", bads, m_pModelEntity);
445 }
446
447 return pReturnItem;
448}
449
450//=============================================================================================================
451
453 const QString& sMeasurementSetName,
454 const FIFFLIB::FiffDigPointSet& digitizer)
455{
456 DigitizerSetTreeItem* pReturnItem = Q_NULLPTR;
457
458 //Handle subject item
459 SubjectTreeItem* pSubjectItem = addSubject(sSubject);
460
461 //Find already existing set items and add the new data to the first search result
462 QList<QStandardItem*> itemList = pSubjectItem->findChildren(sMeasurementSetName);
463
464 if(!itemList.isEmpty() && (itemList.first()->type() == Data3DTreeModelItemTypes::MeasurementItem)) {
465 MeasurementTreeItem* pMeasurementItem = dynamic_cast<MeasurementTreeItem*>(itemList.first());
466 pReturnItem = pMeasurementItem->addData(digitizer, m_pModelEntity);
467 } else {
468 MeasurementTreeItem* pMeasurementItem = new MeasurementTreeItem(Data3DTreeModelItemTypes::MeasurementItem, sMeasurementSetName);
469 AbstractTreeItem::addItemWithDescription(pSubjectItem, pMeasurementItem);
470 pReturnItem = pMeasurementItem->addData(digitizer, m_pModelEntity);
471 }
472
473 return pReturnItem;
474}
475
476//=============================================================================================================
477
479 const QString& sMeasurementSetName,
480 const MatrixXd& matSensorData,
481 const MNEBemSurface& tBemSurface,
482 const FiffInfo& fiffInfo,
483 const QString& sDataType)
484{
485 bool bUseGPU = false;
486
487 // Only support CPU support until we figured out the QBuffer memory problem when dealing with large matrices
488// if(QGLFormat::openGLVersionFlags() >= QGLFormat::OpenGL_Version_4_3) {
489// bUseGPU = true;
490// qDebug("Using compute shader version for 3D visualization.");
491// }
492
493 SensorDataTreeItem* pReturnItem = Q_NULLPTR;
494
495 //Handle subject item
496 SubjectTreeItem* pSubjectItem = addSubject(sSubject);
497
498 //Find already existing surface items and add the new data to the first search result
499 QList<QStandardItem*> itemList = pSubjectItem->findChildren(sMeasurementSetName);
500
501 //Find the "set" items and add the sensor data as items
502 if(!itemList.isEmpty() && (itemList.first()->type() == Data3DTreeModelItemTypes::MeasurementItem)) {
503 if(MeasurementTreeItem* pMeasurementItem = dynamic_cast<MeasurementTreeItem*>(itemList.first())) {
504 pReturnItem = pMeasurementItem->addData(matSensorData,
505 tBemSurface,
506 fiffInfo,
507 sDataType,
509 bUseGPU);
510 }
511 } else {
512 MeasurementTreeItem* pMeasurementItem = new MeasurementTreeItem(Data3DTreeModelItemTypes::MeasurementItem, sMeasurementSetName);
513 AbstractTreeItem::addItemWithDescription(pSubjectItem, pMeasurementItem);
514 pReturnItem = pMeasurementItem->addData(matSensorData,
515 tBemSurface,
516 fiffInfo,
517 sDataType,
519 bUseGPU);
520 }
521
522 return pReturnItem;
523}
524
525//=============================================================================================================
526
527QPointer<Qt3DCore::QEntity> Data3DTreeModel::getRootEntity()
528{
529 return m_pModelEntity;
530}
531
532//=============================================================================================================
533
535{
536 SubjectTreeItem* pReturnItem= Q_NULLPTR;
537
538 //Find the subject
539 QList<QStandardItem*> itemSubjectList = this->findItems(sSubject);
540
541 //If subject does not exist, create a new one
542 if(itemSubjectList.size() == 0) {
543 pReturnItem = new SubjectTreeItem(Data3DTreeModelItemTypes::SubjectItem, sSubject);
544 itemSubjectList << pReturnItem;
545 itemSubjectList << new QStandardItem(pReturnItem->toolTip());
546 m_pRootItem->appendRow(itemSubjectList);
547 } else {
548 pReturnItem = dynamic_cast<SubjectTreeItem*>(itemSubjectList.first());
549 }
550
551 return pReturnItem;
552}
553
554//=============================================================================================================
555
557{
558 //Init metatypes
559 qRegisterMetaType<QVector<QVector<int> > >();
560 qRegisterMetaType<QVector<int> >();
561
562 qRegisterMetaType<QVector<Vector3f> >();
563 qRegisterMetaType<QVector<Eigen::Vector3f> >();
564
565 qRegisterMetaType<QList<FSLIB::Label> >();
566 qRegisterMetaType<QList<Label> >();
567
568 qRegisterMetaType<FIFFLIB::FiffInfo>();
569 qRegisterMetaType<FiffInfo>();
570
571 qRegisterMetaType<Eigen::MatrixX3i>();
572 qRegisterMetaType<MatrixX3i>();
573
574 qRegisterMetaType<Eigen::MatrixXd>();
575 qRegisterMetaType<MatrixXd>();
576
577 qRegisterMetaType<Eigen::MatrixX3f>();
578 qRegisterMetaType<MatrixX3f>();
579
580 qRegisterMetaType<Eigen::MatrixX4f>();
581 qRegisterMetaType<MatrixX4f>();
582
583 qRegisterMetaType<Eigen::VectorXf>();
584 qRegisterMetaType<VectorXf>();
585
586 qRegisterMetaType<Eigen::VectorXi>();
587 qRegisterMetaType<VectorXi>();
588
589 qRegisterMetaType<Eigen::VectorXd>();
590 qRegisterMetaType<VectorXd>();
591
592 qRegisterMetaType<Eigen::RowVectorXf>();
593 qRegisterMetaType<RowVectorXf>();
594
595 qRegisterMetaType<Eigen::Vector3f>();
596 qRegisterMetaType<Vector3f>();
597
598 qRegisterMetaType<Eigen::SparseMatrix<float> >();
599 qRegisterMetaType<SparseMatrix<float> >();
600
601 qRegisterMetaType<QSharedPointer<Eigen::SparseMatrix<float> > >();
602 qRegisterMetaType<QSharedPointer<SparseMatrix<float> > >();
603}
FiffDigPointSet class declaration.
AnnotationSet class declaration.
SurfaceSet class declaration.
Renderable3DEntity class declaration.
Data3DTreeModel class declaration.
SensorSetTreeItem class declaration.
DigitizerTreeItem class declaration.
BemTreeItem class declaration.
MriTreeItem class declaration.
SubjectTreeItem class declaration.
SourceSpaceTreeItem class declaration.
FsSurfaceTreeItem class declaration.
MeasurementTreeItem class declaration.
FiffDigPointSet class declaration.
This class holds information about a network, can compute a distance table and provide network metric...
Definition network.h:89
EcdDataTreeItem * addDipoleFitData(const QString &sSubject, const QString &sSet, const INVERSELIB::ECDSet &ecdSet)
SensorSetTreeItem * addMegSensorInfo(const QString &sSubject, const QString &sSensorSetName, const QList< FIFFLIB::FiffChInfo > &lChInfo, const MNELIB::MNEBem &sensor=MNELIB::MNEBem(), const QStringList &bads=QStringList())
QList< SourceSpaceTreeItem * > addSourceSpace(const QString &sSubject, const QString &sMeasurementSetName, const MNELIB::MNESourceSpace &sourceSpace)
QPointer< Qt3DCore::QEntity > m_pModelEntity
QPointer< Qt3DCore::QEntity > getRootEntity()
SensorDataTreeItem * addSensorData(const QString &sSubject, const QString &sMeasurementSetName, const Eigen::MatrixXd &matSensorData, const MNELIB::MNEBemSurface &tBemSurface, const FIFFLIB::FiffInfo &fiffInfo, const QString &sDataType)
SubjectTreeItem * addSubject(const QString &sSubject)
QList< FsSurfaceTreeItem * > addSurfaceSet(const QString &sSubject, const QString &sMriSetName, const FSLIB::SurfaceSet &surfaceSet, const FSLIB::AnnotationSet &annotationSet=FSLIB::AnnotationSet())
MneDataTreeItem * addSourceData(const QString &sSubject, const QString &sMeasurementSetName, const MNELIB::MNESourceEstimate &tSourceEstimate, const MNELIB::MNEForwardSolution &tForwardSolution, const FSLIB::SurfaceSet &tSurfSet, const FSLIB::AnnotationSet &tAnnotSet)
Data3DTreeModel(QObject *parent=0)
SensorSetTreeItem * addEegSensorInfo(const QString &sSubject, const QString &sSensorSetName, const QList< FIFFLIB::FiffChInfo > &lChInfo, const QStringList &bads=QStringList())
FsSurfaceTreeItem * addSurface(const QString &sSubject, const QString &sSet, const FSLIB::Surface &surface, const FSLIB::Annotation &annotation=FSLIB::Annotation())
QList< SourceSpaceTreeItem * > addForwardSolution(const QString &sSubject, const QString &sMeasurementSetName, const MNELIB::MNEForwardSolution &forwardSolution)
QList< NetworkTreeItem * > addConnectivityData(const QString &sSubject, const QString &sMeasurementSetName, const QList< CONNECTIVITYLIB::Network > &networkData)
DigitizerSetTreeItem * addDigitizerData(const QString &sSubject, const QString &sMeasurementSetName, const FIFFLIB::FiffDigPointSet &digitizer)
BemTreeItem * addBemData(const QString &sSubject, const QString &sBemSetName, const MNELIB::MNEBem &bem)
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const
BemTreeItem provides a tree item to hold BEM models.
Definition bemtreeitem.h:89
void addData(const MNELIB::MNEBem &tBem, Qt3DCore::QEntity *p3DEntityParent=0)
static void addItemWithDescription(QStandardItem *pItemParent, QStandardItem *pItemAdd)
QList< QStandardItem * > findChildren(int type)
DigitizerSetTreeItem provides a tree item to hold the set of digitizer data.
Provides a generic brain tree item.
Provides a generic MeasurementTreeItem.
QList< SourceSpaceTreeItem * > addData(const MNELIB::MNESourceSpace &tSourceSpace, Qt3DCore::QEntity *p3DEntityParent=0)
Provides a generic MriTreeItem.
Definition mritreeitem.h:93
QList< FsSurfaceTreeItem * > addData(const FSLIB::SurfaceSet &tSurfaceSet, const FSLIB::AnnotationSet &tAnnotationSet, Qt3DCore::QEntity *p3DEntityParent=0)
Provides a generic brain tree item to hold real time data.
void addData(const CONNECTIVITYLIB::Network &tNetworkData)
This item integrates GeometryInfo and Interpolation into Disp3D structure.
virtual void addData(const Eigen::MatrixXd &tSensorData)
Provides a generic SensorSetTreeItem.
void addData(const MNELIB::MNEBem &tSensor, const QList< FIFFLIB::FiffChInfo > &lChInfo, const QString &sDataType, const QStringList &bads=QStringList(), Qt3DCore::QEntity *p3DEntityParent=0)
Provides a generic brain tree item to hold real time data.
void addData(const INVERSELIB::ECDSet &pECDSet)
Provides a generic brain tree item to hold real time data.
void addData(const MNELIB::MNESourceEstimate &tSourceEstimate)
Provides a generic SubjectTreeItem.
Holds a set of digitizer points.
FIFF measurement file information.
Definition fiff_info.h:85
Free surfer annotation.
Definition annotation.h:81
Annotation set.
qint32 size() const
FreeSurfer surface mesh.
Definition surface.h:76
A hemisphere set of surfaces.
Definition surfaceset.h:72
qint32 size() const
Definition surfaceset.h:264
Holds a set of Electric Current Dipoles.
Definition ecd_set.h:81
BEM descritpion.
Definition mne_bem.h:90
BEM surface provides geometry information.
Source Space descritpion.