Christoph Budziszewski commited on 2009-03-16 17:07:44
Zeige 8 geänderte Dateien mit 94 Einfügungen und 28 Löschungen.
git-svn-id: https://svn.discofish.de/MATLAB/spmtoolbox/SVMCrossVal@153 83ab2cfd-5345-466c-8aeb-2b2739fb922d
| ... | ... |
@@ -3,6 +3,9 @@ outputStruct = struct; |
| 3 | 3 |
RANDOMIZE_DATAPOINTS = 1; |
| 4 | 4 |
|
| 5 | 5 |
timeline = header.timeline; |
| 6 |
+timeline.frameShiftStart = header.frameShift.frameShiftStart; |
|
| 7 |
+timeline.frameShiftEnd = header.frameShift.frameShiftEnd; |
|
| 8 |
+timeline.decodeDuration = header.frameShift.decodeDuration; |
|
| 6 | 9 |
|
| 7 | 10 |
timeLineStart = timeline.frameShiftStart; |
| 8 | 11 |
timeLineEnd = timeline.frameShiftEnd; |
| ... | ... |
@@ -7,26 +5,27 @@ decode = struct; |
| 7 | 5 |
decode.decodePerformance = []; |
| 8 | 6 |
decode.rawTimeCourse = []; |
| 9 | 7 |
|
| 8 |
+nSubjects = numel(subjectdata); |
|
| 9 |
+% disp(sprintf('we have %g subjects. Press ANY-Key to continue.\n Use Retrun if your Keyboard lacks the ANY-Key.',numel(subjectdata)));
|
|
| 10 |
+% pause |
|
| 11 |
+disp(sprintf('batch processing %g subjects',nSubjects));
|
|
| 10 | 12 |
|
| 11 |
-disp(sprintf('we have %g subjects. Press ANY-Key to continue.\n Use Retrun if your Keyboard lacks the ANY-Key.',numel(subjectdata)));
|
|
| 12 |
-pause |
|
| 13 |
- |
|
| 14 |
-for subjectDataID = 1:numel(subjectdata) |
|
| 13 |
+for subjectDataID = 1:nSubjects |
|
| 15 | 14 |
% SubjectID = cell2mat(subjectCell); |
| 16 | 15 |
currentSubject = subjectdata{subjectDataID};
|
| 17 | 16 |
|
| 18 | 17 |
namehelper = strcat('s',currentSubject.name); %Vars can not start with numbers.
|
| 19 | 18 |
|
| 20 | 19 |
display(sprintf('calculating cross-validation performance time-shift for Subject %s. Please Wait. ...',currentSubject.name));
|
| 21 |
- display('switching off all warnings');
|
|
| 22 |
- warning_state = warning('off','all');
|
|
| 20 |
+% display('switching off all warnings');
|
|
| 21 |
+% warning_state = warning('off','all');
|
|
| 23 | 22 |
display('calculating ...');
|
| 24 | 23 |
|
| 25 | 24 |
decode.(namehelper) = calculateDecodePerformance(header,currentSubject,svmopts); |
| 26 | 25 |
|
| 27 | 26 |
display('... done');
|
| 28 |
- display('restoring warnings');
|
|
| 29 |
- warning(warning_state); |
|
| 27 |
+% display('restoring warnings');
|
|
| 28 |
+% warning(warning_state); |
|
| 30 | 29 |
|
| 31 | 30 |
decode.decodePerformance = [decode.decodePerformance decode.(namehelper).decodePerformance]; |
| 32 | 31 |
decode.rawTimeCourse = [decode.rawTimeCourse decode.(namehelper).rawTimeCourse]; |
| ... | ... |
@@ -0,0 +1,7 @@ |
| 1 |
+% generate parameter structs for subroutines |
|
| 2 |
+function frameshiftStruct = getFrameShiftParams(paramModel) |
|
| 3 |
+frameshiftStruct = struct; |
|
| 4 |
+frameshiftStruct.frameShiftStart = getDouble(paramModel.txtFrameShiftStart); % -20; |
|
| 5 |
+frameshiftStruct.frameShiftEnd = getDouble(paramModel.txtFrameShiftEnd); %15; |
|
| 6 |
+frameshiftStruct.decodeDuration = getDouble(paramModel.txtFrameShiftDur); |
|
| 7 |
+end |
| ... | ... |
@@ -1,9 +1,9 @@ |
| 1 | 1 |
% generate parameter structs for subroutines |
| 2 | 2 |
function timelineParams = getTimeLineParams(paramModel) |
| 3 | 3 |
timelineParams = struct; |
| 4 |
-timelineParams.frameShiftStart = getDouble(paramModel.txtFrameShiftStart); % -20; |
|
| 5 |
-timelineParams.frameShiftEnd = getDouble(paramModel.txtFrameShiftEnd); %15; |
|
| 6 |
-timelineParams.decodeDuration = getDouble(paramModel.txtFrameShiftDur); |
|
| 4 |
+% timelineParams.frameShiftStart = getDouble(paramModel.txtFrameShiftStart); % -20; |
|
| 5 |
+% timelineParams.frameShiftEnd = getDouble(paramModel.txtFrameShiftEnd); %15; |
|
| 6 |
+% timelineParams.decodeDuration = getDouble(paramModel.txtFrameShiftDur); |
|
| 7 | 7 |
timelineParams.psthStart = getDouble(paramModel.txtPSTHStart); % -25; |
| 8 | 8 |
timelineParams.psthEnd = getDouble(paramModel.txtPSTHEnd); % 20; |
| 9 | 9 |
timelineParams.baselineStart = getDouble(paramModel.txtBaselineStart); % -22; |
| ... | ... |
@@ -73,16 +73,21 @@ end |
| 73 | 73 |
|
| 74 | 74 |
function decode(model,task) |
| 75 | 75 |
preprocessedData = evalin('base','preprocessedData');
|
| 76 |
+ |
|
| 77 |
+header = preprocessedData.header; |
|
| 78 |
+header.frameShift = getFrameShiftParams(model); |
|
| 79 |
+data = preprocessedData.subjectdata; |
|
| 80 |
+ |
|
| 76 | 81 |
switch task |
| 77 | 82 |
case 'SVM' |
| 78 | 83 |
disp('SVM');
|
| 79 | 84 |
svmopts = getSvmArgs(model,1); |
| 80 |
- decode = calculateMultiSubjectDecodePerformance(preprocessedData.header,preprocessedData.subjectdata,svmopts); |
|
| 85 |
+ decode = calculateMultiSubjectDecodePerformance(header,data,svmopts); |
|
| 81 | 86 |
assignin('base','decode',decode);
|
| 82 | 87 |
case 'XSVM' |
| 83 | 88 |
disp('XSVM')
|
| 84 | 89 |
svmopts = getSvmArgs(model,0); |
| 85 |
- decode = xsvm_subject_loop(preprocessedData.header,preprocessedData.subjectdata,svmopts); |
|
| 90 |
+ decode = xsvm_subject_loop(header,data,svmopts); |
|
| 86 | 91 |
assignin('base','decode',decode);
|
| 87 | 92 |
case 'SOM' |
| 88 | 93 |
disp('not implemented')
|
| ... | ... |
@@ -96,6 +101,9 @@ end |
| 96 | 101 |
% warning('on',warn);
|
| 97 | 102 |
end |
| 98 | 103 |
|
| 104 |
+function decode_plot() |
|
| 105 |
+end |
|
| 106 |
+ |
|
| 99 | 107 |
|
| 100 | 108 |
|
| 101 | 109 |
|
| ... | ... |
@@ -7,8 +7,7 @@ subjects = args.subjects; |
| 7 | 7 |
nSubjects = numel(subjects); |
| 8 | 8 |
sessionlist = args.sessionList; |
| 9 | 9 |
|
| 10 |
-disp(sprintf('we have %g subjects. Press ANY-Key to continue.\n Use Retrun if your Keyboard lacks the ANY-Key.',nSubjects));
|
|
| 11 |
-pause |
|
| 10 |
+disp(sprintf('batch processing %g subjects.',nSubjects));
|
|
| 12 | 11 |
|
| 13 | 12 |
for s = 1:nSubjects |
| 14 | 13 |
subjectStruct{s}.dir = fullfile(args.basedir,cell2mat(subjects(s)));
|
| ... | ... |
@@ -56,6 +56,11 @@ DEFAULT.wd = fullfile('d:','Analyze','Choice','24pilot');
|
| 56 | 56 |
set(task.classification,'BackgroundColor','w'); |
| 57 | 57 |
model = createSecondStepPanel(model,task.classification,DEFAULT); |
| 58 | 58 |
|
| 59 |
+ % PLOT |
|
| 60 |
+ task.plot = uipanel(frame,'Title','Plot','Position',[0 0.0 1 TASK_HEIGHT]); |
|
| 61 |
+ set(task.plot,'BackgroundColor','w'); |
|
| 62 |
+ model = createVisualStepPanel(model,task.plot,DEFAULT); |
|
| 63 |
+ |
|
| 59 | 64 |
% TASK |
| 60 | 65 |
task.taskSwitch = uipanel(frame,'Position',[0 1-0.13 1 0.10]); |
| 61 | 66 |
% set(task.taskSwitch,'Title','TASK'); |
| ... | ... |
@@ -91,7 +96,7 @@ DEFAULT.wd = fullfile('d:','Analyze','Choice','24pilot');
|
| 91 | 96 |
model = scanDirs(model); |
| 92 | 97 |
set(frame,'Visible','on'); |
| 93 | 98 |
|
| 94 |
- assignin('base','model',model);
|
|
| 99 |
+% assignin('base','model',model);
|
|
| 95 | 100 |
end |
| 96 | 101 |
|
| 97 | 102 |
function model = createFirstStepPanel(model,parent,DEFAULT) |
| ... | ... |
@@ -118,6 +123,7 @@ function model = createFirstStepPanel(model,parent,DEFAULT) |
| 118 | 123 |
'UserData',subjectList,... |
| 119 | 124 |
'Units','normalized',... |
| 120 | 125 |
'Position',[0 0 1 1]); |
| 126 |
+ set(model.subjectSelector, 'FontName', 'FixedWidth'); |
|
| 121 | 127 |
set(model.subjectSelector,'BackgroundColor','w'); |
| 122 | 128 |
|
| 123 | 129 |
%Classes |
| ... | ... |
@@ -179,19 +185,15 @@ function model = createFirstStepPanel(model,parent,DEFAULT) |
| 179 | 185 |
lEnd = createLabel(pPSTH, cell2mat(tl_grid(3,1)) ,'End [sec]'); |
| 180 | 186 |
lPSTH = createLabel(pPSTH, cell2mat(tl_grid(1,2)),'PSTH Range'); |
| 181 | 187 |
lBaseline = createLabel(pPSTH, cell2mat(tl_grid(1,3)),'Baseline'); |
| 182 |
- lFrameShift = createLabel(pPSTH, cell2mat(tl_grid(1,4)),'Frame Shift'); |
|
| 183 |
- lFramsSize = createLabel(pPSTH, cell2mat(tl_grid(1,5)),'Frame Size'); |
|
| 184 |
- lSearchligh = createLabel(pPSTH, cell2mat(tl_grid(1,6)),'Searchlight Radius'); |
|
| 188 |
+ |
|
| 189 |
+ lSearchligh = createLabel(pPSTH, cell2mat(tl_grid(1,5)),'Searchlight Radius'); |
|
| 185 | 190 |
|
| 186 | 191 |
|
| 187 | 192 |
model.txtPSTHStart = createTextField(pPSTH,cell2mat(tl_grid(2,2)),DEFAULT.pststart); |
| 188 | 193 |
model.txtPSTHEnd = createTextField(pPSTH,cell2mat(tl_grid(3,2)),DEFAULT.pstend); |
| 189 | 194 |
model.txtBaselineStart = createTextField(pPSTH,cell2mat(tl_grid(2,3)),DEFAULT.baselinestart); |
| 190 | 195 |
model.txtBaselineEnd = createTextField(pPSTH,cell2mat(tl_grid(3,3)),DEFAULT.baselineend); |
| 191 |
- model.txtFrameShiftStart = createTextField(pPSTH,cell2mat(tl_grid(2,4)),DEFAULT.frameshiftstart); |
|
| 192 |
- model.txtFrameShiftEnd = createTextField(pPSTH,cell2mat(tl_grid(3,4)),DEFAULT.frameshiftend); |
|
| 193 |
- model.txtFrameShiftDur = createTextField(pPSTH,cell2mat(tl_grid(2,5)),DEFAULT.frameshiftdur); |
|
| 194 |
- model.txtSearchlightRadius = createTextField(pPSTH,cell2mat(tl_grid(2,6)),DEFAULT.searchlightradius); |
|
| 196 |
+ model.txtSearchlightRadius = createTextField(pPSTH,cell2mat(tl_grid(2,5)),DEFAULT.searchlightradius); |
|
| 195 | 197 |
|
| 196 | 198 |
% images |
| 197 | 199 |
pImage = uipanel(parent,'Title','Image Options','Position',cell2mat(main_grid(2,2))); |
| ... | ... |
@@ -267,11 +269,33 @@ end |
| 267 | 269 |
function model = createSecondStepPanel(model,parent,DEFAULT) |
| 268 | 270 |
basecolor = 'w'; |
| 269 | 271 |
|
| 270 |
-pTime = uipanel(parent,'Units','normalized','Position',[0.0 0.8 1 0.3]); |
|
| 271 |
-% set(pTime,'Title','Frameshift Opts'); |
|
| 272 |
+pTime = uipanel(parent,'Units','normalized','Position',[0.0 0.8 1 0.2]); |
|
| 273 |
+ set(pTime,'Title','Decode Timeframe Options'); |
|
| 272 | 274 |
set(pTime,'BackgroundColor',basecolor); |
| 273 |
- |
|
| 274 |
-pSVM = uipanel(parent,'Units','normalized','Position',[0 0.0 0.5 0.7]); |
|
| 275 |
+ grid_h = 0.3; |
|
| 276 |
+ grid_w = 0.3; |
|
| 277 |
+ time_grid = cell([3 3]); |
|
| 278 |
+ time_grid{1,1} = [0.0 0.63 grid_w grid_h];
|
|
| 279 |
+ time_grid{2,1} = [0.4 0.63 grid_w grid_h];
|
|
| 280 |
+ time_grid{3,1} = [0.7 0.63 grid_w grid_h];
|
|
| 281 |
+ time_grid{1,2} = [0.0 0.33 grid_w grid_h];
|
|
| 282 |
+ time_grid{2,2} = [0.4 0.33 grid_w grid_h];
|
|
| 283 |
+ time_grid{3,2} = [0.7 0.33 grid_w grid_h];
|
|
| 284 |
+ time_grid{1,3} = [0.0 0.03 grid_w grid_h];
|
|
| 285 |
+ time_grid{2,3} = [0.4 0.03 grid_w grid_h];
|
|
| 286 |
+ time_grid{3,3} = [0.7 0.03 grid_w grid_h];
|
|
| 287 |
+ |
|
| 288 |
+ lStart = createLabel(pTime, cell2mat(time_grid(2,1)) ,'Start [sec]'); |
|
| 289 |
+ lEnd = createLabel(pTime, cell2mat(time_grid(3,1)) ,'End [sec]'); |
|
| 290 |
+ lFrameShift = createLabel(pTime, cell2mat(time_grid(1,2)),'Frame Shift'); |
|
| 291 |
+ lFramsSize = createLabel(pTime, cell2mat(time_grid(1,3)),'Frame Size'); |
|
| 292 |
+ |
|
| 293 |
+ model.txtFrameShiftStart = createTextField(pTime,cell2mat(time_grid(2,2)),DEFAULT.frameshiftstart); |
|
| 294 |
+ model.txtFrameShiftEnd = createTextField(pTime,cell2mat(time_grid(3,2)),DEFAULT.frameshiftend); |
|
| 295 |
+ model.txtFrameShiftDur = createTextField(pTime,cell2mat(time_grid(2,3)),DEFAULT.frameshiftdur); |
|
| 296 |
+ |
|
| 297 |
+ |
|
| 298 |
+pSVM = uipanel(parent,'Units','normalized','Position',[0 0.4 0.5 0.4]); |
|
| 275 | 299 |
set(pSVM,'Title','SVM Classification'); |
| 276 | 300 |
set(pSVM,'BackgroundColor',basecolor); |
| 277 | 301 |
|
| ... | ... |
@@ -281,7 +305,7 @@ pSVM = uipanel(parent,'Units','normalized','Position',[0 0.0 0.5 0.7]); |
| 281 | 305 |
model.txtSVMnfold = createTextField(pSVM,[0.0 0.50 0.5 0.25],DEFAULT.svmnfold); |
| 282 | 306 |
createLabel(pSVM,[0.5 0.50 0.5 0.25 ],'-Fold CrossVal'); |
| 283 | 307 |
|
| 284 |
-pSOM = uipanel(parent,'Units','normalized','Position',[0.5 0.0 0.5 0.7]); |
|
| 308 |
+pSOM = uipanel(parent,'Units','normalized','Position',[0.5 0.4 0.5 0.4]); |
|
| 285 | 309 |
set(pSOM,'Title','SOM Classification'); |
| 286 | 310 |
set(pSOM,'BackgroundColor',basecolor); |
| 287 | 311 |
|
| ... | ... |
@@ -319,10 +343,24 @@ pSOM = uipanel(parent,'Units','normalized','Position',[0.5 0.0 0.5 0.7]); |
| 319 | 343 |
set(btnRunXSOM,'Enable','off'); |
| 320 | 344 |
end |
| 321 | 345 |
|
| 346 |
+function model = createVisualStepPanel(model,parent,DEFAULT) |
|
| 347 |
+ pButtonPane = uipanel(parent,'Units','normalized','Position',[0.0 0.5 1 0.5]); |
|
| 348 |
+% set(pButtonPane,'Title','Plot'); |
|
| 349 |
+ set(pButtonPane,'BackgroundColor','w'); |
|
| 350 |
+ |
|
| 351 |
+ btnPlot01 = uicontrol(pButtonPane,'String','plot BBBB',... |
|
| 352 |
+ 'Units','normalized',... |
|
| 353 |
+ 'Position',[0.0 0.0 1 0.25]); |
|
| 354 |
+ set(btnPlot01,'Callback',{@cbPlot,model,'XSOM'}); % set here, because of model.
|
|
| 355 |
+ set(btnPlot01,'Enable','on'); |
|
| 356 |
+ |
|
| 357 |
+end |
|
| 358 |
+ |
|
| 322 | 359 |
|
| 323 | 360 |
function cbSwitchTask(src,evnt,task,taskpanel) |
| 324 | 361 |
set(taskpanel.preprocessing,'Visible','off'); |
| 325 | 362 |
set(taskpanel.classification,'Visible','off'); |
| 363 |
+set(taskpanel.plot,'Visible','off'); |
|
| 326 | 364 |
|
| 327 | 365 |
switch task |
| 328 | 366 |
case 'PRE' |
| ... | ... |
@@ -330,6 +368,7 @@ switch task |
| 330 | 368 |
case 'CLASSIFY' |
| 331 | 369 |
set(taskpanel.classification,'Visible','on'); |
| 332 | 370 |
case 'PLOT' |
| 371 |
+ set(taskpanel.plot,'Visible','on'); |
|
| 333 | 372 |
end |
| 334 | 373 |
end |
| 335 | 374 |
|
| ... | ... |
@@ -342,6 +381,12 @@ function cbRunDecode(src,evnt,model,task) |
| 342 | 381 |
main(model,'decode',task); |
| 343 | 382 |
end |
| 344 | 383 |
|
| 384 |
+function cbPlot(src,evnt,model,type) |
|
| 385 |
+display('Not Implemented');
|
|
| 386 |
+main(model,'plot',type); |
|
| 387 |
+end |
|
| 388 |
+ |
|
| 389 |
+ |
|
| 345 | 390 |
function model = mcb_cd(src,evnt,model) |
| 346 | 391 |
disp('CD');
|
| 347 | 392 |
directory_name = uigetdir(model.baseDir,'Select Study Base Directory ...'); |
| ... | ... |
@@ -14,6 +14,9 @@ decode.rawTimeCourse = []; |
| 14 | 14 |
disp(sprintf('computinig additional datastructs for %u subjects',nSubjects));
|
| 15 | 15 |
|
| 16 | 16 |
timeline = header.timeline; |
| 17 |
+timeline.frameShiftStart = header.frameShift.frameShiftStart; |
|
| 18 |
+timeline.frameShiftEnd = header.frameShift.frameShiftEnd; |
|
| 19 |
+timeline.decodeDuration = header.frameShift.decodeDuration; |
|
| 17 | 20 |
|
| 18 | 21 |
% TimePointMatrix |
| 19 | 22 |
for subjectDataID = 1:nSubjects |
| 20 | 23 |