v2.0.0
Loading...
Searching...
No Matches
fwdsettingsview.cpp
Go to the documentation of this file.
1//=============================================================================================================
16
17//=============================================================================================================
18// INCLUDES
19//=============================================================================================================
20
21#include "fwdsettingsview.h"
22#include "QtWidgets/qspinbox.h"
23#include "ui_fwdsettingsview.h"
24
25#include <fs/fs_annotationset.h>
26
27//=============================================================================================================
28// QT INCLUDES
29//=============================================================================================================
30
31#include <QFileInfo>
32#include <QFileDialog>
33#include <QMessageBox>
34#include <QSettings>
35
36//=============================================================================================================
37// EIGEN INCLUDES
38//=============================================================================================================
39
40//=============================================================================================================
41// USED NAMESPACES
42//=============================================================================================================
43
44using namespace DISPLIB;
45using namespace FSLIB;
46
47//=============================================================================================================
48// DEFINE GLOBAL METHODS
49//=============================================================================================================
50
51//=============================================================================================================
52// DEFINE MEMBER METHODS
53//=============================================================================================================
54
55FwdSettingsView::FwdSettingsView(const QString& sSettingsPath,
56 QWidget *parent,
57 Qt::WindowFlags f)
58: AbstractView(parent, f)
60, m_pUi(new Ui::FwdSettingsViewWidget)
61{
62 m_sSettingsPath = sSettingsPath;
63 m_pUi->setupUi(this);
64
65 // init
66 m_pUi->m_checkBox_bDoRecomputation->setChecked(false);
67 m_pUi->m_checkBox_bDoClustering->setChecked(true);
68 m_pUi->m_lineEdit_iNChan->setText(QString::number(0));
69 m_pUi->m_lineEdit_iNSourceSpace->setText(QString::number(0));
70 m_pUi->m_lineEdit_iNDipole->setText(QString::number(0));
71 m_pUi->m_lineEdit_sSourceOri->setText("fixed");
72 m_pUi->m_lineEdit_sCoordFrame->setText("Head Space");
73 m_pUi->m_lineEdit_iNDipoleClustered->setText("Not Clustered");
74 m_pUi->m_spinBox_iNDipoleClustered->setValue(200);
75 m_pUi->m_spinBox_iNDipoleClustered->setKeyboardTracking(false);
76
77 // load init annotation set
78 QString t_sAtlasDir = QCoreApplication::applicationDirPath() + "/../resources/data/MNE-sample-data/subjects/sample/label";
79 m_pUi->m_qLineEdit_AtlasDirName->setText(t_sAtlasDir);
80
81 FsAnnotationSet::SPtr t_pAnnotationSet = FsAnnotationSet::SPtr(new FsAnnotationSet(t_sAtlasDir+"/lh.aparc.a2009s.annot", t_sAtlasDir+"/rh.aparc.a2009s.annot"));
82
83 if(!t_pAnnotationSet->isEmpty() && t_pAnnotationSet->size() == 2)
84 {
85 emit atlasDirChanged(t_sAtlasDir,t_pAnnotationSet);
86 m_pUi->m_qLabel_atlasStat->setText("loaded");
88 }
89 else
90 {
91 m_pUi->m_qLabel_atlasStat->setText("not loaded");
92 }
93
94 // connect
95 connect(m_pUi->m_checkBox_bDoRecomputation, &QCheckBox::clicked,
97 connect(m_pUi->m_qPushButton_AtlasDirDialog, &QPushButton::released,
99 connect(m_pUi->m_checkBox_bDoClustering, &QCheckBox::clicked,
101 connect(m_pUi->m_qPushButton_ComputeForward, &QPushButton::clicked,
103 connect(m_pUi->m_spinBox_iNDipoleClustered, QOverload<int>::of(&QSpinBox::valueChanged),
105
106 // load settings
107 loadSettings();
108}
109
110//=============================================================================================================
111
113{
114 saveSettings();
115
116 delete m_pUi;
117}
118
119//=============================================================================================================
120
122{
123 if(m_sSettingsPath.isEmpty()) {
124 return;
125 }
126
127 QSettings settings("MNECPP");
128 QVariant data;
129}
130
131//=============================================================================================================
132
134{
135 if(m_sSettingsPath.isEmpty()) {
136 return;
137 }
138
139 QSettings settings("MNECPP");
140 QVariant defaultData;
141}
142
143//=============================================================================================================
144
146{
147 switch(mode) {
149 break;
150 default: // default is research mode
151 break;
152 }
153}
154
155//=============================================================================================================
156
158{
159 switch(mode) {
161 break;
162 default: // default is realtime mode
163 break;
164 }
165}
166
167//=============================================================================================================
168
170{
171 return m_pUi->m_checkBox_bDoRecomputation->isChecked();
172}
173
174//=============================================================================================================
175
177{
178 if(iStatus == 0) {
179 m_pUi->m_label_recomputationFeedback->setText("Initializing");
180 m_pUi->m_label_recomputationFeedback->setStyleSheet("QLabel { background-color : red;}");
181 } else if(iStatus == 1) {
182 m_pUi->m_label_recomputationFeedback->setText("Computing");
183 m_pUi->m_label_recomputationFeedback->setStyleSheet("QLabel { background-color : red;}");
184 } else if (iStatus == 2) {
185 m_pUi->m_label_recomputationFeedback->setText("Recomputing");
186 m_pUi->m_label_recomputationFeedback->setStyleSheet("QLabel { background-color : red;}");
187 } else if (iStatus == 3) {
188 m_pUi->m_label_recomputationFeedback->setText("Clustering");
189 m_pUi->m_label_recomputationFeedback->setStyleSheet("QLabel { background-color : red;}");
190 } else if (iStatus == 4) {
191 m_pUi->m_label_recomputationFeedback->setText("Not Computed");
192 m_pUi->m_label_recomputationFeedback->setStyleSheet("QLabel { background-color : red;}");
193 } else if (iStatus == 5) {
194 m_pUi->m_label_recomputationFeedback->setText("Not Clustered");
195 m_pUi->m_label_recomputationFeedback->setStyleSheet("QLabel { background-color : yellow;}");
196 } else {
197 m_pUi->m_label_recomputationFeedback->setText("Finished");
198 m_pUi->m_label_recomputationFeedback->setStyleSheet("QLabel { background-color : green;}");
199 }
200}
201
202//=============================================================================================================
203
204void FwdSettingsView::setSolutionInformation(FIFFLIB::fiff_int_t iSourceOri,
205 FIFFLIB::fiff_int_t iCoordFrame,
206 int iNSource,
207 int iNChan,
208 int iNSpaces)
209{
210 // set source orientation
211 if(iSourceOri == 0) {
212 m_pUi->m_lineEdit_sSourceOri->setText("fixed");
213 } else {
214 m_pUi->m_lineEdit_sSourceOri->setText("free");
215 }
216
217 // set coordinate frame
218 if(iCoordFrame == FIFFV_COORD_HEAD) {
219 m_pUi->m_lineEdit_sCoordFrame->setText("Head Space");
220 } else if (iCoordFrame == FIFFV_COORD_MRI){
221 m_pUi->m_lineEdit_sCoordFrame->setText("MRI Space");
222 } else {
223 m_pUi->m_lineEdit_sCoordFrame->setText("Unknown");
224 }
225
226 // set number of sources
227 m_pUi->m_lineEdit_iNDipole->setText(QString::number(iNSource));
228
229 // set number of clustered sources
230 m_pUi->m_lineEdit_iNDipoleClustered->setText("Not clustered");
231
232 // set number of channels
233 m_pUi->m_lineEdit_iNChan->setText(QString::number(iNChan));
234
235 // set number of source spaces
236 m_pUi->m_lineEdit_iNSourceSpace->setText(QString::number(iNSpaces));
237}
238
239//=============================================================================================================
240
242{
243 return m_pUi->m_checkBox_bDoClustering->isChecked();
244}
245
246//=============================================================================================================
247
249{
250 return m_pUi->m_spinBox_iNDipoleClustered->value();
251}
252
253//=============================================================================================================
254
256{
258 QMessageBox msgBox;
259 msgBox.setText("Please load an annotation set before clustering.");
260 msgBox.exec();
261 m_pUi->m_checkBox_bDoClustering->setChecked(false);
262 return;
263 } else {
264 emit clusteringStatusChanged(bChecked);
265 }
266}
267
268//=============================================================================================================
269
271{
272 // set number of clustered sources
273 m_pUi->m_lineEdit_iNDipoleClustered->setText(QString::number(iNSources));
274}
275
276//=============================================================================================================
277
279{
280 QString t_sAtlasDir = QFileDialog::getExistingDirectory(this, tr("Open Atlas Directory"),
281 QCoreApplication::applicationDirPath(),
282 QFileDialog::ShowDirsOnly
283 | QFileDialog::DontResolveSymlinks);
284
285 m_pUi->m_qLineEdit_AtlasDirName->setText(t_sAtlasDir);
286
287 FsAnnotationSet::SPtr t_pAnnotationSet = FsAnnotationSet::SPtr(new FsAnnotationSet(t_sAtlasDir+"/lh.aparc.a2009s.annot", t_sAtlasDir+"/rh.aparc.a2009s.annot"));
288
289 if(!t_pAnnotationSet->isEmpty() && t_pAnnotationSet->size() == 2)
290 {
291 emit atlasDirChanged(t_sAtlasDir,t_pAnnotationSet);
292 m_pUi->m_qLabel_atlasStat->setText("loaded");
293 m_bAnnotaionsLoaded = true;
294 }
295 else
296 {
297 m_pUi->m_qLabel_atlasStat->setText("not loaded");
298 }
299}
300
301//=============================================================================================================
302
304{
305
306}
Bi-hemispheric pair of FreeSurfer annotations (lh + rh) for one parcellation atlas.
Forward-solution computation controls (BEM / source space / EEG sphere model selectors).
#define FIFFV_COORD_HEAD
#define FIFFV_COORD_MRI
FreeSurfer surface, annotation and parcellation I/O for mne-cpp.
2-D display widgets and visualisation helpers (charts, topography, colour maps).
AbstractView(QWidget *parent=0, Qt::WindowFlags f=Qt::Widget)
void setSolutionInformation(FIFFLIB::fiff_int_t iSourceOri, FIFFLIB::fiff_int_t iCoordFrame, int iNSource, int iNChan, int iNSpaces)
void setClusteredInformation(int iNSource)
Ui::FwdSettingsViewWidget * m_pUi
void clusterNumberChanged(int iNCluster)
void setRecomputationStatus(int iStatus)
void atlasDirChanged(const QString &sDirPath, const FSLIB::FsAnnotationSet::SPtr pAnnotationSet)
void updateProcessingMode(ProcessingMode mode)
void clusteringStatusChanged(bool bChecked)
void recompStatusChanged(bool bChecked)
void onClusteringStatusChanged(bool bChecked)
void updateGuiMode(GuiMode mode)
FwdSettingsView(const QString &sSettingsPath="", QWidget *parent=0, Qt::WindowFlags f=Qt::Widget)
Container holding the lh and/or rh FsAnnotation for one parcellation atlas.
QSharedPointer< FsAnnotationSet > SPtr