Christoph Budziszewski commited on 2009-08-07 17:23:37
Zeige 10 geänderte Dateien mit 111 Einfügungen und 75 Löschungen.
git-svn-id: https://svn.discofish.de/MATLAB/spmtoolbox/SVMCrossVal@206 83ab2cfd-5345-466c-8aeb-2b2739fb922d
... | ... |
@@ -1,7 +1,6 @@ |
1 |
-%% subject loop |
|
2 | 1 |
function decode = som_subject_batch(header,subjectdata,somOpts) |
3 |
- |
|
4 |
-addpath(fullfile(getTbxPath,'somtoolbox2')); |
|
2 |
+global NODALYZE_SOMTOOLBOX; |
|
3 |
+addpath(fullfile(getTbxPath,NODALYZE_SOMTOOLBOX)); |
|
5 | 4 |
|
6 | 5 |
RANDOMIZE_DATAPOINTS = somOpts.rnd; |
7 | 6 |
NAN_AS_ZERO = somOpts.nantozero; |
... | ... |
@@ -1,9 +1,10 @@ |
1 | 1 |
function [sD sM] = som_train(svmlabel, svmdata, somOptions) |
2 |
+global NODALYZE_SOMTOOLBOX; |
|
3 |
+addpath(fullfile(getTbxPath,NODALYZE_SOMTOOLBOX)); |
|
2 | 4 |
|
3 | 5 |
som_size = somOptions.size; |
4 | 6 |
som_lattice = somOptions.lattice; |
5 | 7 |
|
6 |
-addpath(fullfile(getTbxPath,'somtoolbox2')); |
|
7 | 8 |
sD = som_data_struct(svmdata,'labels',num2str(svmlabel)); |
8 | 9 |
|
9 | 10 |
sM = som_make(sD,'msize', som_size,'lattice', som_lattice, 'tracking', 1, 'init', 'lininit'); |
... | ... |
@@ -1,7 +1,6 @@ |
1 |
-%% subject loop |
|
2 | 1 |
function decode = som_xsubject_performance(header,subjectdata,somOpts) |
3 |
- |
|
4 |
-addpath(fullfile(getTbxPath,'somtoolbox2')); |
|
2 |
+global NODALYZE_SOMTOOLBOX; |
|
3 |
+addpath(fullfile(getTbxPath,NODALYZE_SOMTOOLBOX)); |
|
5 | 4 |
|
6 | 5 |
nSubjects = numel(subjectdata); |
7 | 6 |
if(nSubjects < 2) |
... | ... |
@@ -1,5 +1,6 @@ |
1 | 1 |
function decodePerformance = svm_class_performance(svmlabel,svmdata,svmopts) |
2 |
-addpath(fullfile(getTbxPath,'libsvm-mat-2.88-1')); |
|
2 |
+global NODALYZE_LIBSVM; |
|
3 |
+addpath(fullfile(getTbxPath,NODALYZE_LIBSVM)); |
|
3 | 4 |
|
4 | 5 |
svmmodel = svmtrain(svmlabel,svmdata,svmopts); |
5 | 6 |
classperformance = []; |
... | ... |
@@ -1,4 +1,5 @@ |
1 | 1 |
function performance = svm_single_crossval(svmlabel,svmdata,svmopts) |
2 |
-addpath(fullfile(getTbxPath,'libsvm-mat-2.88-1')); |
|
2 |
+global NODALYZE_LIBSVM; |
|
3 |
+addpath(fullfile(getTbxPath,NODALYZE_LIBSVM)); |
|
3 | 4 |
performance = svmtrain(svmlabel, svmdata, svmopts); |
4 | 5 |
end |
5 | 6 |
\ No newline at end of file |
... | ... |
@@ -6,7 +6,7 @@ function ui_main(varargin) |
6 | 6 |
|
7 | 7 |
frame = figure('Visible','off','Position',[0,0,frameWidth,frameHeight]); |
8 | 8 |
movegui(frame,'center'); % get this thing visible on smaller displays. |
9 |
- set(frame,'Name','SVMCrossVal Decode Performance 4 SPM'); |
|
9 |
+ set(frame,'Name','NODalyze'); |
|
10 | 10 |
set(frame,'NumberTitle','off'); |
11 | 11 |
set(frame,'MenuBar','none'); |
12 | 12 |
set(frame,'Resize','on'); |
... | ... |
@@ -81,7 +81,7 @@ function ui_main(varargin) |
81 | 81 |
uimenu(studySelectMenu,'Label','*new Study*','Callback',{@mcb_new_study,studySelectMenu,model}); |
82 | 82 |
fillStudyMenu(studySelectMenu,model); |
83 | 83 |
|
84 |
- updateMenu = uimenu(frame,'Label','update ...','Enable','on'); |
|
84 |
+ updateMenu = uimenu(frame,'Label','Update ...','Enable','on'); |
|
85 | 85 |
uimenu(updateMenu,'Label','rescan subject dir','Callback',{@mcb_update_subjects,model}); |
86 | 86 |
uimenu(updateMenu,'Label','rescan images','Callback',{@mcb_update_imagebase,model}); |
87 | 87 |
|
... | ... |
@@ -147,7 +147,7 @@ function model = createFirstStepPanel(model,parent) |
147 | 147 |
|
148 | 148 |
|
149 | 149 |
%Timeline |
150 |
- pPSTH = uipanel(parent,'Title','PSTH Options','Position',cell2mat(main_grid(2,1))); |
|
150 |
+ pPSTH = uipanel(parent,'Title','PST Options','Position',cell2mat(main_grid(2,1))); |
|
151 | 151 |
set(pPSTH,'BackgroundColor','w'); |
152 | 152 |
|
153 | 153 |
grid_h = 0.16; |
... | ... |
@@ -180,9 +180,10 @@ function model = createFirstStepPanel(model,parent) |
180 | 180 |
|
181 | 181 |
lStart = createLabel(pPSTH, cell2mat(tl_grid(2,1)) ,'Start [sec]'); |
182 | 182 |
lEnd = createLabel(pPSTH, cell2mat(tl_grid(3,1)) ,'End [sec]'); |
183 |
- lPSTH = createLabel(pPSTH, cell2mat(tl_grid(1,2)) ,'PSTH Range'); |
|
183 |
+ lPSTH = createLabel(pPSTH, cell2mat(tl_grid(1,2)) ,'PST Range'); |
|
184 | 184 |
lBaseline = createLabel(pPSTH, cell2mat(tl_grid(1,3)) ,'Baseline'); |
185 | 185 |
lTRF = createLabel(pPSTH, cell2mat(tl_grid(1,5)) ,'TR Factor'); |
186 |
+ lTRSec = createLabel(pPSTH, cell2mat(tl_grid(3,4)) ,'TR [sec]'); |
|
186 | 187 |
|
187 | 188 |
model.txtPSTHStart = createTextField(pPSTH,cell2mat(tl_grid(2,2)),''); |
188 | 189 |
model.txtPSTHEnd = createTextField(pPSTH,cell2mat(tl_grid(3,2)),''); |
... | ... |
@@ -203,14 +204,14 @@ function model = createFirstStepPanel(model,parent) |
203 | 204 |
optGrid{1,2} = [0.0 0.66 grid_wl grid_h]; |
204 | 205 |
optGrid{2,2} = [0.4 0.66 grid_wo grid_h]; |
205 | 206 |
|
206 |
- optGrid{1,3} = [0.0 0.5 grid_wl grid_h]; |
|
207 |
- optGrid{2,3} = [0.4 0.5 grid_wo grid_h]; |
|
207 |
+ optGrid{1,3} = [0.0 0.5 1.0 grid_h]; |
|
208 |
+% optGrid{2,3} = [0.4 0.5 grid_wo grid_h]; |
|
208 | 209 |
|
209 | 210 |
optGrid{1,4} = [0.0 0.33 grid_wl grid_h]; |
210 | 211 |
optGrid{2,4} = [0.4 0.33 grid_wo grid_h]; |
211 | 212 |
|
212 |
- optGrid{1,5} = [0.0 0.16 grid_wl grid_h]; |
|
213 |
- optGrid{2,5} = [0.4 0.16 grid_wo grid_h]; |
|
213 |
+ optGrid{1,5} = [0.0 0.16 1.0 grid_h]; |
|
214 |
+% optGrid{2,5} = [0.4 0.16 grid_wo grid_h]; |
|
214 | 215 |
|
215 | 216 |
optGrid{1,6} = [0.0 0.0 grid_wl grid_h]; |
216 | 217 |
optGrid{2,6} = [0.4 0.0 grid_wo grid_h]; |
... | ... |
@@ -227,7 +228,7 @@ function model = createFirstStepPanel(model,parent) |
227 | 228 |
|
228 | 229 |
%Options:normalizations |
229 | 230 |
|
230 |
- createLabel(pOptions,cell2mat(optGrid(1,2)),'psth norm4SVM'); |
|
231 |
+ createLabel(pOptions,cell2mat(optGrid(1,2)),'PST normalization'); |
|
231 | 232 |
model.selNormPST = uicontrol(pOptions,'Style','popupmenu',... |
232 | 233 |
'Units','normalized',... |
233 | 234 |
'Position',cell2mat(optGrid(2,2)),... |
... | ... |
@@ -237,14 +238,14 @@ function model = createFirstStepPanel(model,parent) |
237 | 238 |
|
238 | 239 |
model.chkColBias = uicontrol(pOptions,'Style','checkbox',... |
239 | 240 |
'Units','normalized',... |
240 |
- 'Position',cell2mat(optGrid(2,3)),... |
|
241 |
- 'String','column Bias removal',... |
|
241 |
+ 'Position',cell2mat(optGrid(1,3)),... |
|
242 |
+ 'String','Remove Column Bias within class',... |
|
242 | 243 |
'Enable','on'); |
243 | 244 |
set(model.chkColBias,'BackgroundColor','w'); |
244 | 245 |
|
245 | 246 |
%Options:spatialGrouping |
246 | 247 |
|
247 |
- createLabel(pOptions,cell2mat(optGrid(1,4)),'ROI Grouping'); |
|
248 |
+ createLabel(pOptions,cell2mat(optGrid(1,4)),'Spatial Grouping'); |
|
248 | 249 |
model.selRoiGrouping = uicontrol(pOptions,'Style','popupmenu',... |
249 | 250 |
'Units','normalized',... |
250 | 251 |
'Position',cell2mat(optGrid(2,4)),... |
... | ... |
@@ -252,34 +253,44 @@ function model = createFirstStepPanel(model,parent) |
252 | 253 |
'UserData',roiGroupMethodFunctions); |
253 | 254 |
set(model.selRoiGrouping,'BackgroundColor','w'); |
254 | 255 |
|
256 |
+ %Options:VOI selection for FBS |
|
257 |
+ btnRunButton2 = uicontrol(pOptions,'String',sprintf('load VOI for Searchlight'),... |
|
258 |
+ 'Units','normalized','Position',cell2mat(optGrid(1,5))); |
|
259 |
+ set(btnRunButton2,'Enable','on'); |
|
260 |
+ |
|
261 |
+ |
|
255 | 262 |
% COORD TABLE |
256 |
- pVoxel = uipanel(parent,'Title','ROI','Position',cell2mat(main_grid(1,3))); |
|
263 |
+ pVoxel = uipanel(parent,'Title','Select ROIs','Position',cell2mat(main_grid(1,3))); |
|
257 | 264 |
set(pVoxel,'BackgroundColor','w'); |
258 | 265 |
lVoxelDef = createLabel(pVoxel, [0 0.9 1 0.1],'<ROI Name> [+ radius (mm)];'); |
259 |
- model.txtVoxelDef = createTextField(pVoxel,[0 0 1 0.9],''); |
|
266 |
+ model.txtVoxelDef = createTextField(pVoxel,[0 0.15 1 0.75],''); |
|
260 | 267 |
set(model.txtVoxelDef,'HorizontalAlignment','left'); |
261 | 268 |
set(model.txtVoxelDef,'Max',20); |
262 | 269 |
set(model.txtVoxelDef,'Min',0); |
263 | 270 |
set(model.txtVoxelDef, 'FontName', 'FixedWidth'); |
264 | 271 |
|
272 |
+ btnROIlist = uicontrol(pVoxel,'String','show available ROIs','Units','normalized',... |
|
273 |
+ 'Position',[0 0 1 0.15]); |
|
274 |
+ set(btnROIlist,'Enable','off'); |
|
275 |
+ |
|
265 | 276 |
%buttons |
266 | 277 |
pButtons = uipanel(parent,'Position',cell2mat(main_grid(1,4))); |
267 | 278 |
set(pButtons,'BackgroundColor','w'); |
268 | 279 |
|
269 |
- btnRunButton1 = uicontrol(pButtons,'String','run coord-Table',... |
|
280 |
+ btnRunButton1 = uicontrol(pButtons,'String','start ROI-List processing',... |
|
270 | 281 |
'Units','normalized','Position',[0 0 0.33 1]); |
271 |
- set(btnRunButton1,'Callback',{@cbRunPreprocessing,model,'COORD'}); % set here, because of model. |
|
272 | 282 |
set(btnRunButton1,'Enable','on'); |
273 | 283 |
|
274 |
- btnRunButton2 = uicontrol(pButtons,'String',sprintf('load ROI for FBS'),... |
|
275 |
- 'Units','normalized','Position',[0.33 0 0.33 1]); |
|
276 |
- set(btnRunButton2,'Callback',{@cbRunPreprocessing,model,'FBS'}); % set here, because of model. |
|
277 |
- set(btnRunButton2,'Enable','on'); |
|
278 |
- |
|
279 |
- btnRunButton3 = uicontrol(pButtons,'String','run ROI-Image processing',... |
|
284 |
+ btnRunButton3 = uicontrol(pButtons,'String','start ROI-Image processing',... |
|
280 | 285 |
'Units','normalized','Position',[0.66 0 0.33 1]); |
281 |
- set(btnRunButton3,'Callback',{@cbRunPreprocessing,model,'ROI'}); % set here, because of model. |
|
282 | 286 |
set(btnRunButton3,'Enable','on'); |
287 |
+ |
|
288 |
+ |
|
289 |
+ set(btnRunButton1,'Callback',{@cbRunPreprocessing,model,'COORD'}); % set here, because of model. |
|
290 |
+ set(btnRunButton2,'Callback',{@cbRunPreprocessing,model,'FBS'}); % set here, because of model. |
|
291 |
+ set(btnRunButton3,'Callback',{@cbRunPreprocessing,model,'ROI'}); % set here, because of model. |
|
292 |
+% set(btnROIlist,'Callback',); % set here, because of model. |
|
293 |
+ |
|
283 | 294 |
end |
284 | 295 |
|
285 | 296 |
function model = createSecondStepPanel(model,parent) |
... | ... |
@@ -289,7 +300,7 @@ TimeframeGroupingStrings = {'none','mean'};%,'sum,'max','median'}; |
289 | 300 |
TimeframeGroupingFunctions = {@(in)in,@(in)nanmean(in,2)};%,'sum',','max','median'}; |
290 | 301 |
|
291 | 302 |
pTime = uipanel(parent,'Units','normalized','Position',[0.0 0.7 1 0.3]); |
292 |
- set(pTime,'Title','Decode Timeframe Options'); |
|
303 |
+ set(pTime,'Title','Decode Timerange Options'); |
|
293 | 304 |
set(pTime,'BackgroundColor',basecolor); |
294 | 305 |
grid_h = 0.25; |
295 | 306 |
grid_w = 0.3; |
... | ... |
@@ -309,9 +320,9 @@ pTime = uipanel(parent,'Units','normalized','Position',[0.0 0.7 1 0.3]); |
309 | 320 |
|
310 | 321 |
lStart = createLabel(pTime, cell2mat(time_grid(2,1)) ,'Start [sec]'); |
311 | 322 |
lEnd = createLabel(pTime, cell2mat(time_grid(3,1)) ,'End [sec]'); |
312 |
- lFrameShift = createLabel(pTime, cell2mat(time_grid(1,2)),'Frame Shift'); |
|
313 |
- lFramsSize = createLabel(pTime, cell2mat(time_grid(1,3)),'Frame Size'); |
|
314 |
- lFramegroup = createLabel(pTime, cell2mat(time_grid(1,4)),'Timeframe Grouping'); |
|
323 |
+ lFrameShift = createLabel(pTime, cell2mat(time_grid(1,2)),'Time Range'); |
|
324 |
+ lFramsSize = createLabel(pTime, cell2mat(time_grid(1,3)),'Shifting Time Frame [sec]'); |
|
325 |
+ lFramegroup = createLabel(pTime, cell2mat(time_grid(1,4)),'Time Frame Grouping'); |
|
315 | 326 |
|
316 | 327 |
model.txtFrameShiftStart = createTextField(pTime,cell2mat(time_grid(2,2)),''); |
317 | 328 |
model.txtFrameShiftEnd = createTextField(pTime,cell2mat(time_grid(3,2)),''); |
... | ... |
@@ -326,33 +337,57 @@ pTime = uipanel(parent,'Units','normalized','Position',[0.0 0.7 1 0.3]); |
326 | 337 |
'UserData',TimeframeGroupingFunctions); |
327 | 338 |
set(model.selTimeframeGrouping,'Enable','on'); |
328 | 339 |
|
329 |
-pSVM = uipanel(parent,'Units','normalized','Position',[0 0.3 0.5 0.4]); |
|
330 |
- set(pSVM,'Title','SVM Classification'); |
|
340 |
+pSVM = uipanel(parent,'Units','normalized','Position',[0 0.0 0.499 0.7]); |
|
341 |
+ set(pSVM,'Title','SVM Classification (libSVM)'); |
|
331 | 342 |
set(pSVM,'BackgroundColor',basecolor); |
332 | 343 |
|
333 |
- model.txtSVMopts = createTextField(pSVM,[0 0.83 1 0.16],''); |
|
334 |
- set(model.txtSVMopts,'HorizontalAlignment','left'); |
|
344 |
+ grid_h = 0.125; |
|
335 | 345 |
|
336 |
- model.txtSVMnfold = createTextField(pSVM,[0.0 0.66 0.5 0.16],''); |
|
337 |
- createLabel(pSVM,[0.5 0.50 0.5 0.25 ],'-Fold CrossVal'); |
|
346 |
+ svmgrid = cell([2 8]); |
|
347 |
+ svmgrid{1,1} = [0.0 0.875 1.0 grid_h]; |
|
348 |
+ svmgrid{1,2} = [0.0 0.750 0.5 grid_h]; |
|
349 |
+ svmgrid{2,2} = [0.5 0.750 0.5 grid_h]; |
|
350 |
+ svmgrid{1,3} = [0.0 0.625 1 grid_h]; |
|
351 |
+ svmgrid{1,4} = [0.0 0.5 1 grid_h]; |
|
352 |
+ svmgrid{1,5} = [0.0 0.375 1 grid_h]; |
|
353 |
+ svmgrid{1,6} = [0.0 0.250 0.5 grid_h]; |
|
354 |
+ svmgrid{2,6} = [0.5 0.250 0.5 grid_h]; |
|
355 |
+ svmgrid{1,7} = [0.0 0.125 0.5 grid_h]; |
|
356 |
+ svmgrid{2,7} = [0.5 0.125 0.5 grid_h]; |
|
357 |
+ svmgrid{1,8} = [0.0 0.0 1 grid_h]; |
|
338 | 358 |
|
339 |
- model.chkSVMrnd = uicontrol(pSVM,'Style','checkbox','Units','normalized','Position',[0.1 0.50 0.9 0.16]); |
|
340 |
- set(model.chkSVMrnd,'String','Randomize Datapoints'); |
|
341 |
- set(model.chkSVMrnd,'BackgroundColor','w'); |
|
342 |
-% set(model.chkSVMrnd,'Value',StudyArgs.svmrnd); |
|
343 | 359 |
|
344 |
- btnRunSVM = uicontrol(pSVM,'String','run batchmode SVM Crossvalidation',... |
|
360 |
+ model.txtSVMopts = createTextField(pSVM,cell2mat(svmgrid(1,1)),''); |
|
361 |
+ set(model.txtSVMopts,'HorizontalAlignment','left'); |
|
362 |
+ |
|
363 |
+ model.txtSVMnfold = createTextField(pSVM,cell2mat(svmgrid(1,2)),''); |
|
364 |
+ createLabel(pSVM,cell2mat(svmgrid(2,2)),'-Fold CrossVal'); |
|
365 |
+ |
|
366 |
+ btnRunSVM = uicontrol(pSVM,'String','run SVM within-Subject crossvalidation',... |
|
345 | 367 |
'Units','normalized',... |
346 |
- 'Position',[0 0.25 1 0.25]); |
|
368 |
+ 'Position',cell2mat(svmgrid(1,3))); |
|
347 | 369 |
set(btnRunSVM,'Enable','on'); |
348 | 370 |
|
349 |
- btnRunXSVM = uicontrol(pSVM,'String','run SVM X-Subject validation',... |
|
371 |
+ btnRunXSVM = uicontrol(pSVM,'String','run SVM across-Subject crossvalidation',... |
|
350 | 372 |
'Units','normalized',... |
351 |
- 'Position',[0 0.0 1 0.25]); |
|
373 |
+ 'Position',cell2mat(svmgrid(1,4))); |
|
352 | 374 |
set(btnRunXSVM,'Enable','on'); |
353 | 375 |
|
354 |
-pSOM = uipanel(parent,'Units','normalized','Position',[0.5 0.3 0.5 0.4]); |
|
355 |
- set(pSOM,'Title','SOM Classification'); |
|
376 |
+ lSearchligh = createLabel(pSVM, cell2mat(svmgrid(1,6)),'Searchlight Radius (mm)'); |
|
377 |
+ model.txtSearchlightRadius = createTextField(pSVM,cell2mat(svmgrid(2,6)),''); |
|
378 |
+ |
|
379 |
+ lFBSTiming = createLabel(pSVM, cell2mat(svmgrid(1,7)),'Timepoints [sec] (opt.)'); |
|
380 |
+ set(lFBSTiming,'TooltipString','e.g. ''-5 0 5 10 15'''); |
|
381 |
+ model.txtSearchlightTimeline = createTextField(pSVM,cell2mat(svmgrid(2,7)),''); |
|
382 |
+ |
|
383 |
+ btnRunFBS = uicontrol(pSVM,'String','run Searchlight',... |
|
384 |
+ 'Units','normalized',... |
|
385 |
+ 'Position',cell2mat(svmgrid(1,8))); |
|
386 |
+ set(btnRunFBS,'Enable','on'); |
|
387 |
+ |
|
388 |
+ |
|
389 |
+pSOM = uipanel(parent,'Units','normalized','Position',[0.5 0.3 0.499 0.4]); |
|
390 |
+ set(pSOM,'Title','SOM Classification (somtoolbox2)'); |
|
356 | 391 |
set(pSOM,'BackgroundColor',basecolor); |
357 | 392 |
|
358 | 393 |
createLabel(pSOM,[0 0.75 0.3 0.20],'Size:'); |
... | ... |
@@ -369,34 +404,26 @@ pSOM = uipanel(parent,'Units','normalized','Position',[0.5 0.3 0.5 0.4]); |
369 | 404 |
set(model.selSomLattice,'BackgroundColor','w'); |
370 | 405 |
|
371 | 406 |
model.txtSOMnfold = createTextField(pSOM,[0.5 0.50 0.25 0.16],''); |
372 |
-% set(model.txtSOMnfold,'Enable','off'); |
|
373 | 407 |
createLabel(pSOM,[0.75 0.5 0.25 0.16 ],'-Fold CrossVal'); |
374 | 408 |
|
375 |
- |
|
376 |
- btnRunSOM = uicontrol(pSOM,'String','run SOM Crossvalidation',... |
|
409 |
+ btnRunSOM = uicontrol(pSOM,'String','run SOM within-Subject crossvalidation',... |
|
377 | 410 |
'Units','normalized',... |
378 | 411 |
'Position',[0.0 0.25 1 0.25]); |
379 | 412 |
set(btnRunSOM,'Enable','on'); |
380 | 413 |
|
381 |
- btnRunXSOM = uicontrol(pSOM,'String','run SOM X-Subject validation',... |
|
414 |
+ btnRunXSOM = uicontrol(pSOM,'String','run SOM across-Subject crossvalidation',... |
|
382 | 415 |
'Units','normalized',... |
383 | 416 |
'Position',[0.0 0.0 1 0.25]); |
384 | 417 |
set(btnRunXSOM,'Enable','on'); |
385 | 418 |
|
386 |
-pSearchlight = uipanel(parent,'Units','normalized','Position',[0.0 0.0 0.5 0.3]); |
|
387 |
- set(pSearchlight,'Title','Spatiotemporal FB classification'); |
|
388 |
- set(pSearchlight,'BackgroundColor',basecolor); |
|
389 |
- |
|
390 |
- lSearchligh = createLabel(pSearchlight, [0 0.6 0.5 0.3],'Searchlight Radius (mm)'); |
|
391 |
- model.txtSearchlightRadius = createTextField(pSearchlight,[0.5 0.6 0.5 0.3],''); |
|
392 |
- |
|
393 |
- lFBSTiming = createLabel(pSearchlight, [0 0.3 0.5 0.3],'Optional Timeline ( e.g. ''-5 0 5 10 15'')'); |
|
394 |
- model.txtSearchlightTimeline = createTextField(pSearchlight,[0.5 0.3 0.5 0.3],''); |
|
419 |
+% OPTIONS |
|
420 |
+pOptions = uipanel(parent,'Units','normalized','Position',[0.5 0 0.5 0.3]); |
|
421 |
+ set(pOptions,'Title','Other Options'); |
|
422 |
+ set(pOptions,'BackgroundColor',basecolor); |
|
395 | 423 |
|
396 |
- btnRunFBS = uicontrol(pSearchlight,'String','run Spatiotemporal FB classification',... |
|
397 |
- 'Units','normalized',... |
|
398 |
- 'Position',[0.0 0.0 1 0.3]); |
|
399 |
- set(btnRunFBS,'Enable','on'); |
|
424 |
+ model.chkSVMrnd = uicontrol(pOptions,'Style','checkbox','Units','normalized','Position',[0 0.66 1 0.33]); |
|
425 |
+ set(model.chkSVMrnd,'String','Randomize Trial Order'); |
|
426 |
+ set(model.chkSVMrnd,'BackgroundColor','w'); |
|
400 | 427 |
|
401 | 428 |
|
402 | 429 |
% button callbacks set here, because of model. |
... | ... |
@@ -423,19 +450,19 @@ function model = createVisualStepPanel(model,parent) |
423 | 450 |
% set(pButtonPane,'Title','Plot'); |
424 | 451 |
set(pButtonPane,'BackgroundColor','w'); |
425 | 452 |
|
426 |
- btnPlot03 = uicontrol(pButtonPane,'String','plot PSTH',... |
|
453 |
+ btnPlot03 = uicontrol(pButtonPane,'String','Plot PSTH',... |
|
427 | 454 |
'Units','normalized',... |
428 | 455 |
'Position',cell2mat(plot_grid(2,1))); |
429 | 456 |
set(btnPlot03,'Callback',{@cbPlot,model,'psth'}); |
430 | 457 |
set(btnPlot03,'Enable','on'); |
431 | 458 |
|
432 |
- btnPlot01 = uicontrol(pButtonPane,'String','plot performance and SE',... |
|
459 |
+ btnPlot01 = uicontrol(pButtonPane,'String','Plot Decode Performance +/- SE',... |
|
433 | 460 |
'Units','normalized',... |
434 | 461 |
'Position',cell2mat(plot_grid(2,2))); |
435 | 462 |
set(btnPlot01,'Callback',{@cbPlot,model,'simple'}); |
436 | 463 |
set(btnPlot01,'Enable','on'); |
437 | 464 |
|
438 |
- btnPlot02 = uicontrol(pButtonPane,'String','plot subject performance and mean with SE',... |
|
465 |
+ btnPlot02 = uicontrol(pButtonPane,'String','Plot Individual Performance and Mean +/- SE',... |
|
439 | 466 |
'Units','normalized',... |
440 | 467 |
'Position',cell2mat(plot_grid(2,3))); |
441 | 468 |
set(btnPlot02,'Callback',{@cbPlot,model,'x-subject-val'}); |
... | ... |
@@ -1,7 +1,7 @@ |
1 | 1 |
%% subject loop |
2 | 2 |
function decode = xsvm_subject_loop(header,subjectdata,svmopts) |
3 |
- |
|
4 |
-addpath(fullfile(getTbxPath,'libsvm-mat-2.88-1')); |
|
3 |
+global NODALYZE_LIBSVM; |
|
4 |
+addpath(fullfile(getTbxPath,NODALYZE_LIBSVM)); |
|
5 | 5 |
|
6 | 6 |
nSubjects = numel(subjectdata); |
7 | 7 |
if(nSubjects < 2) |
... | ... |
@@ -7,6 +7,15 @@ SVMCROSSVAL_SPMDIR = 'D:\SPM\spm2'; |
7 | 7 |
global SVMCROSSVAL_SPMVERSION; |
8 | 8 |
SVMCROSSVAL_SPMVERSION = 'SPM2'; |
9 | 9 |
|
10 |
+%external tools |
|
11 |
+global NODALYZE_LIBSVM; |
|
12 |
+NODALYZE_LIBSVM = 'libsvm-mat-2.88-1'; |
|
13 |
+global NODALYZE_SOMTOOLBOX; |
|
14 |
+NODALYZE_SOMTOOLBOX = 'somtoolbox2'; |
|
15 |
+global NODALYZE_NIFTI; |
|
16 |
+NODALYZE_NIFTI = 'NIFTI_20090325'; |
|
17 |
+ |
|
18 |
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
10 | 19 |
% No Config from here |
11 | 20 |
if strcmp(SVMCROSSVAL_SPMDIR,'') || strcmp(SVMCROSSVAL_SPMVERSION,'') |
12 | 21 |
error('spm_SVMCrossVal:main:noinstall','installation not complete!'); |
... | ... |
@@ -15,7 +24,6 @@ end |
15 | 24 |
global SVMCROSSVAL_DEBUG; |
16 | 25 |
|
17 | 26 |
defineGlobals(); |
18 |
-%reset defaults to _my_ liking ;) |
|
19 | 27 |
bootstrap('default'); |
20 | 28 |
|
21 | 29 |
switch nargin |