46 #include <fiff/fiff_evoked.h>
62 #include <QGuiApplication>
72 using namespace FSLIB;
93 int main(
int argc,
char *argv[])
95 QGuiApplication a(argc, argv);
108 QFile t_fileFwd(
"E:/Data/sl_data/MEG/mind006/mind006_051209_auditory01_raw-oct-6p-fwd.fif");
109 QFile t_fileCov(
"E:/Data/sl_data/MEG/mind006/mind006_051209_auditory01_raw-cov.fif");
110 QFile t_fileEvoked(
"E:/Data/sl_data/MEG/mind006/mind006_051209_auditory01_raw-ave.fif");
114 QString method(
"dSPM");
116 QString t_sFileNameClusteredInv(
"");
117 QString t_sFileNameStc(
"");
120 for(qint32 i = 0; i < argc; ++i)
122 if(strcmp(argv[i],
"-snr") == 0 || strcmp(argv[i],
"--snr") == 0)
125 snr = atof(argv[i+1]);
127 else if(strcmp(argv[i],
"-method") == 0 || strcmp(argv[i],
"--method") == 0)
130 method = QString::fromUtf8(argv[i+1]);
132 else if(strcmp(argv[i],
"-inv") == 0 || strcmp(argv[i],
"--inv") == 0)
135 t_sFileNameClusteredInv = QString::fromUtf8(argv[i+1]);
137 else if(strcmp(argv[i],
"-stc") == 0 || strcmp(argv[i],
"--stc") == 0)
140 t_sFileNameStc = QString::fromUtf8(argv[i+1]);
144 double lambda2 = 1.0 / pow(snr, 2);
145 qDebug() <<
"Start calculation with: SNR" << snr <<
"; Lambda" << lambda2 <<
"; Method" << method <<
"; stc:" << t_sFileNameStc;
148 fiff_int_t setno = 0;
149 QPair<QVariant, QVariant> baseline(QVariant(), 0);
150 FiffEvoked evoked(t_fileEvoked, setno, baseline);
154 std::cout <<
"evoked first " << evoked.first <<
"; last " << evoked.last << std::endl;
162 AnnotationSet t_annotationSet(
"E:/Data/sl_data/subjects/mind006/label/lh.aparc.a2009s.annot",
"E:/Data/sl_data/subjects/mind006/label/rh.aparc.a2009s.annot");
168 noise_cov = noise_cov.regularize(evoked.info, 0.05, 0.05, 0.1,
true);
188 if(!t_sFileNameClusteredInv.isEmpty())
190 QFile t_fileClusteredInverse(t_sFileNameClusteredInv);
191 inverse_operator.write(t_fileClusteredInverse);
197 MinimumNorm minimumNorm(inverse_operator, lambda2, method);
204 std::cout <<
"\nsourceEstimate:\n" << sourceEstimate.
data.block(0,0,10,10) << std::endl;
205 std::cout <<
"time\n" << sourceEstimate.
times.block(0,0,1,10) << std::endl;
206 std::cout <<
"timeMin\n" << sourceEstimate.
times[0] << std::endl;
207 std::cout <<
"timeMax\n" << sourceEstimate.
times[sourceEstimate.
times.size()-1] << std::endl;
208 std::cout <<
"time step\n" << sourceEstimate.
tstep << std::endl;
251 std::cout <<
"Condition Number:\n" << t_dConditionNumber << std::endl;
252 std::cout <<
"Clustered Condition Number:\n" << t_dConditionNumberClustered << std::endl;
254 std::cout <<
"ForwardSolution" << t_Fwd.sol->data.block(0,0,10,10) << std::endl;
256 std::cout <<
"Clustered ForwardSolution" << t_clusteredFwd.
sol->data.block(0,0,10,10) << std::endl;
277 SurfaceSet t_surfSet(
"E:/Data/sl_data/subjects/mind006/surf/lh.white",
"E:/Data/sl_data/subjects/mind006/surf/rh.white");
292 QList<Label> t_qListLabels;
293 QList<RowVector4i> t_qListRGBAs;
296 t_annotationSet.toLabels(t_surfSet, t_qListLabels, t_qListRGBAs);
331 if(!t_sFileNameStc.isEmpty())
333 QFile t_fileClusteredStc(t_sFileNameStc);
334 sourceEstimate.
write(t_fileClusteredStc);
FIFF measurement file information.
MNEForwardSolution cluster_forward_solution(const AnnotationSet &p_AnnotationSet, qint32 p_iClusterSize, MatrixXd &p_D=defaultD, const FiffCov &p_pNoise_cov=defaultCov, const FiffInfo &p_pInfo=defaultInfo, QString p_sMethod="cityblock") const
static double getConditionNumber(const MatrixXd &A, VectorXd &s)
Minimum norm class declaration.
bool write(QIODevice &p_IODevice)
FiffNamedMatrix::SDPtr sol
Surface class declaration.
MNESourceEstimate class declaration.
AnnotationSet class declaration.
InverseView class declaration.
MNEMath class declaration.
A hemisphere set of surfaces.