MNE-CPP  0.1.9
A Framework for Electrophysiology
data3Dtreemodel.cpp
Go to the documentation of this file.
1 //=============================================================================================================
38 //=============================================================================================================
39 // INCLUDES
40 //=============================================================================================================
41 
42 #include "data3Dtreemodel.h"
43 #include "items/bem/bemtreeitem.h"
49 #include "items/mri/mritreeitem.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 
77 using namespace FSLIB;
78 using namespace MNELIB;
79 using namespace DISP3DLIB;
80 using namespace INVERSELIB;
81 using namespace CONNECTIVITYLIB;
82 using namespace Eigen;
83 using namespace FIFFLIB;
84 
85 //=============================================================================================================
86 // DEFINE MEMBER METHODS
87 //=============================================================================================================
88 
89 Data3DTreeModel::Data3DTreeModel(QObject* parent)
90 : QStandardItemModel(parent)
91 , m_pModelEntity(new Qt3DCore::QEntity())
92 {
93  m_pRootItem = this->invisibleRootItem();
94  m_pRootItem->setText("Loaded 3D Data");
95 
96  initMetatypes();
97 }
98 
99 //=============================================================================================================
100 
101 QVariant 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 
117 int 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 
126 QVariant 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 
145 Qt::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 
157 QList<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 
204 QList<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 
230 QList<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 
316 QList<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 
360 BemTreeItem* Data3DTreeModel::addBemData(const QString& sSubject,
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 
527 QPointer<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 }
sensordatatreeitem.h
subjecttreeitem.h
SubjectTreeItem class declaration.
DISP3DLIB::Data3DTreeModel::m_pRootItem
QStandardItem * m_pRootItem
Definition: data3Dtreemodel.h:430
MNELIB::MNEBem
BEM descritpion.
Definition: mne_bem.h:89
CONNECTIVITYLIB::Network
This class holds information about a network, can compute a distance table and provide network metric...
Definition: network.h:88
DISP3DLIB::DigitizerSetTreeItem
DigitizerSetTreeItem provides a tree item to hold the set of digitizer data.
Definition: digitizersettreeitem.h:92
DISP3DLIB::Data3DTreeModel::addSourceSpace
QList< SourceSpaceTreeItem * > addSourceSpace(const QString &sSubject, const QString &sMeasurementSetName, const MNELIB::MNESourceSpace &sourceSpace)
Definition: data3Dtreemodel.cpp:204
FIFFLIB::FiffInfo
FIFF measurement file information.
Definition: fiff_info.h:84
DISP3DLIB::MriTreeItem
Provides a generic MriTreeItem.
Definition: mritreeitem.h:92
DISP3DLIB::Data3DTreeModel::addEegSensorInfo
SensorSetTreeItem * addEegSensorInfo(const QString &sSubject, const QString &sSensorSetName, const QList< FIFFLIB::FiffChInfo > &lChInfo, const QStringList &bads=QStringList())
Definition: data3Dtreemodel.cpp:418
ecd_set.h
FiffDigPointSet class declaration.
DISP3DLIB::MneDataTreeItem
Provides a generic brain tree item to hold real time data.
Definition: mnedatatreeitem.h:99
DISP3DLIB::Data3DTreeModel::addForwardSolution
QList< SourceSpaceTreeItem * > addForwardSolution(const QString &sSubject, const QString &sMeasurementSetName, const MNELIB::MNEForwardSolution &forwardSolution)
Definition: data3Dtreemodel.cpp:230
sourcespacetreeitem.h
SourceSpaceTreeItem class declaration.
FSLIB::AnnotationSet
Annotation set.
Definition: annotationset.h:80
annotationset.h
AnnotationSet class declaration.
digitizertreeitem.h
DigitizerTreeItem class declaration.
MNELIB::MNEForwardSolution
Forward operator.
Definition: mne_forwardsolution.h:170
data3Dtreemodel.h
Data3DTreeModel class declaration.
DISP3DLIB::Data3DTreeModel::addConnectivityData
QList< NetworkTreeItem * > addConnectivityData(const QString &sSubject, const QString &sMeasurementSetName, const QList< CONNECTIVITYLIB::Network > &networkData)
Definition: data3Dtreemodel.cpp:316
MNELIB::MNESourceSpace
Source Space descritpion.
Definition: mne_sourcespace.h:92
DISP3DLIB::MeasurementTreeItem::addData
QList< SourceSpaceTreeItem * > addData(const MNELIB::MNESourceSpace &tSourceSpace, Qt3DCore::QEntity *p3DEntityParent=0)
Definition: measurementtreeitem.cpp:116
DISP3DLIB::SensorDataTreeItem
This item integrates GeometryInfo and Interpolation into Disp3D structure.
Definition: sensordatatreeitem.h:92
FSLIB::SurfaceSet::size
qint32 size() const
Definition: surfaceset.h:264
DISP3DLIB::SubjectTreeItem
Provides a generic SubjectTreeItem.
Definition: subjecttreeitem.h:77
DISP3DLIB::Data3DTreeModel::addSurface
FsSurfaceTreeItem * addSurface(const QString &sSubject, const QString &sSet, const FSLIB::Surface &surface, const FSLIB::Annotation &annotation=FSLIB::Annotation())
Definition: data3Dtreemodel.cpp:177
DISP3DLIB::Data3DTreeModel::initMetatypes
void initMetatypes()
Definition: data3Dtreemodel.cpp:556
INVERSELIB::ECDSet
Holds a set of Electric Current Dipoles.
Definition: ecd_set.h:80
DISP3DLIB::FsSurfaceTreeItem
Provides a generic brain tree item.
Definition: fssurfacetreeitem.h:83
DISP3DLIB::SensorDataTreeItem::addData
virtual void addData(const Eigen::MatrixXd &tSensorData)
Definition: sensordatatreeitem.cpp:210
DISP3DLIB::Data3DTreeModel::addDipoleFitData
EcdDataTreeItem * addDipoleFitData(const QString &sSubject, const QString &sSet, const INVERSELIB::ECDSet &ecdSet)
Definition: data3Dtreemodel.cpp:288
DISP3DLIB::SensorSetTreeItem::addData
void addData(const MNELIB::MNEBem &tSensor, const QList< FIFFLIB::FiffChInfo > &lChInfo, const QString &sDataType, const QStringList &bads=QStringList(), Qt3DCore::QEntity *p3DEntityParent=0)
Definition: sensorsettreeitem.cpp:89
DISP3DLIB::Data3DTreeModel::getRootEntity
QPointer< Qt3DCore::QEntity > getRootEntity()
Definition: data3Dtreemodel.cpp:527
surfaceset.h
SurfaceSet class declaration.
mritreeitem.h
MriTreeItem class declaration.
DISP3DLIB::Data3DTreeModel::m_pModelEntity
QPointer< Qt3DCore::QEntity > m_pModelEntity
Definition: data3Dtreemodel.h:431
DISP3DLIB::AbstractTreeItem::findChildren
QList< QStandardItem * > findChildren(int type)
Definition: abstracttreeitem.cpp:112
measurementtreeitem.h
MeasurementTreeItem class declaration.
DISP3DLIB::Data3DTreeModel::addSubject
SubjectTreeItem * addSubject(const QString &sSubject)
Definition: data3Dtreemodel.cpp:534
MNELIB::MNESourceEstimate
Source estimation.
Definition: mne_sourceestimate.h:84
renderable3Dentity.h
Renderable3DEntity class declaration.
fssurfacetreeitem.h
FsSurfaceTreeItem class declaration.
DISP3DLIB::BemTreeItem::addData
void addData(const MNELIB::MNEBem &tBem, Qt3DCore::QEntity *p3DEntityParent=0)
Definition: bemtreeitem.cpp:125
sensorsettreeitem.h
SensorSetTreeItem class declaration.
MNELIB::MNEForwardSolution::src
MNESourceSpace src
Definition: mne_forwardsolution.h:529
FSLIB::AnnotationSet::size
qint32 size() const
Definition: annotationset.h:267
DISP3DLIB::Data3DTreeModel::addSurfaceSet
QList< FsSurfaceTreeItem * > addSurfaceSet(const QString &sSubject, const QString &sMriSetName, const FSLIB::SurfaceSet &surfaceSet, const FSLIB::AnnotationSet &annotationSet=FSLIB::AnnotationSet())
Definition: data3Dtreemodel.cpp:157
FSLIB::SurfaceSet
A hemisphere set of surfaces.
Definition: surfaceset.h:71
DISP3DLIB::SensorSetTreeItem
Provides a generic SensorSetTreeItem.
Definition: sensorsettreeitem.h:92
DISP3DLIB::Data3DTreeModel::addMegSensorInfo
SensorSetTreeItem * addMegSensorInfo(const QString &sSubject, const QString &sSensorSetName, const QList< FIFFLIB::FiffChInfo > &lChInfo, const MNELIB::MNEBem &sensor=MNELIB::MNEBem(), const QStringList &bads=QStringList())
Definition: data3Dtreemodel.cpp:386
DISP3DLIB::Data3DTreeModel::addBemData
BemTreeItem * addBemData(const QString &sSubject, const QString &sBemSetName, const MNELIB::MNEBem &bem)
Definition: data3Dtreemodel.cpp:360
DISP3DLIB::NetworkTreeItem::addData
void addData(const CONNECTIVITYLIB::Network &tNetworkData)
Definition: networktreeitem.cpp:142
DISP3DLIB::BemTreeItem
BemTreeItem provides a tree item to hold BEM models.
Definition: bemtreeitem.h:88
FSLIB::Annotation
Free surfer annotation.
Definition: annotation.h:80
fiff_dig_point_set.h
FiffDigPointSet class declaration.
DISP3DLIB::MeasurementTreeItem
Provides a generic MeasurementTreeItem.
Definition: measurementtreeitem.h:114
DISP3DLIB::Data3DTreeModel::addDigitizerData
DigitizerSetTreeItem * addDigitizerData(const QString &sSubject, const QString &sMeasurementSetName, const FIFFLIB::FiffDigPointSet &digitizer)
Definition: data3Dtreemodel.cpp:452
FSLIB::Surface
FreeSurfer surface mesh.
Definition: surface.h:75
DISP3DLIB::EcdDataTreeItem
Provides a generic brain tree item to hold real time data.
Definition: ecddatatreeitem.h:86
DISP3DLIB::EcdDataTreeItem::addData
void addData(const INVERSELIB::ECDSet &pECDSet)
Definition: ecddatatreeitem.cpp:101
DISP3DLIB::MriTreeItem::addData
QList< FsSurfaceTreeItem * > addData(const FSLIB::SurfaceSet &tSurfaceSet, const FSLIB::AnnotationSet &tAnnotationSet, Qt3DCore::QEntity *p3DEntityParent=0)
Definition: mritreeitem.cpp:85
MNELIB::MNEBemSurface
BEM surface provides geometry information.
Definition: mne_bem_surface.h:79
bemtreeitem.h
BemTreeItem class declaration.
DISP3DLIB::AbstractTreeItem::addItemWithDescription
static void addItemWithDescription(QStandardItem *pItemParent, QStandardItem *pItemAdd)
Definition: abstracttreeitem.cpp:99
DISP3DLIB::NetworkTreeItem
Provides a generic brain tree item to hold real time data.
Definition: networktreeitem.h:101
DISP3DLIB::Data3DTreeModel::addSourceData
MneDataTreeItem * addSourceData(const QString &sSubject, const QString &sMeasurementSetName, const MNELIB::MNESourceEstimate &tSourceEstimate, const MNELIB::MNEForwardSolution &tForwardSolution, const FSLIB::SurfaceSet &tSurfSet, const FSLIB::AnnotationSet &tAnnotSet)
Definition: data3Dtreemodel.cpp:239
FIFFLIB::FiffDigPointSet
Holds a set of digitizer points.
Definition: fiff_dig_point_set.h:83
DISP3DLIB::MneDataTreeItem::addData
void addData(const MNELIB::MNESourceEstimate &tSourceEstimate)
Definition: mnedatatreeitem.cpp:411
DISP3DLIB::Data3DTreeModel::addSensorData
SensorDataTreeItem * addSensorData(const QString &sSubject, const QString &sMeasurementSetName, const Eigen::MatrixXd &matSensorData, const MNELIB::MNEBemSurface &tBemSurface, const FIFFLIB::FiffInfo &fiffInfo, const QString &sDataType)
Definition: data3Dtreemodel.cpp:478
DISP3DLIB::Data3DTreeModel::data
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const
Definition: data3Dtreemodel.cpp:101