Browse code

extracted psth-plot to extra option

git-svn-id: https://svn.discofish.de/MATLAB/spmtoolbox/SVMCrossVal@177 83ab2cfd-5345-466c-8aeb-2b2739fb922d

Christoph Budziszewski authored on 21/04/2009 11:49:06
Showing 3 changed files
... ...
@@ -18,11 +18,7 @@ nSubjects         = size(SubjectID,2);
18 18
 
19 19
 
20 20
     f = figure;
21
-    subplot(2,1,1); 
22
-        plotPSTH(psth,psthStart,psthEnd);
23
-    
24
-    % plot performance timeline
25
-    subplot(2,1,2)    
21
+  
26 22
     hold on;
27 23
     chanceLevel = 100/nClasses;
28 24
     goodPredictionLevel = chanceLevel*1.5;
... ...
@@ -33,6 +29,8 @@ nSubjects         = size(SubjectID,2);
33 29
     ylabel('decode performance [%]');
34 30
 
35 31
     switch type
32
+        case 'psth'
33
+            plotPSTH(psth,psthStart,psthEnd);  
36 34
         case 'simple'
37 35
             plotDecodePerformanceWithSE(frameStart,frameEnd,decodePerformance)
38 36
         case 'class performance'
... ...
@@ -49,28 +47,6 @@ nSubjects         = size(SubjectID,2);
49 47
     
50 48
 end
51 49
 
52
-function setTitle(f,header,decode,subjectData)
53
-
54
-    nVoxelPerSubject = size(psth,2)/size(SubjectID,2);
55
-    
56
-    if strcmp(smoothed,'yes')
57
-        smoothedString = 'using smoothed data';
58
-    else
59
-        smoothedString = 'using unsmoothed data';
60
-    end
61
-    
62
-    if nSubjects == 1
63
-        subjectName = SubjectID{1}.name;
64
-        title = sprintf('Subject %s, over %g voxel, %s',subjectName,nVoxelPerSubject,smoothedString);
65
-    else
66
-        title = sprintf('%g Subjects, %g Voxel per Subject, %s',nSubjects,nVoxelPerSubject,smoothedString);
67
-    end
68
-    
69
-
70
-    set(f,'Name',title);
71
-    display(sprintf('%s',title));
72
-end
73
-
74 50
 function plotClassPerformance(frameStart,frameEnd,decodePerformance,nClasses)
75 51
 for c = 1:size(decodePerformance,2)
76 52
     plot(frameStart:frameEnd, decodePerformance(:,c) ,[colorChooser(mod(c,nClasses)+3) '-']);
... ...
@@ -109,6 +109,8 @@ for s = 1:nSubjects
109 109
     labelMap        = timePointArgs.labelMap;
110 110
     eventList       = pstopts.eventList;
111 111
     
112
+    res             = timeline.tr*timeline.trFactor;
113
+    
112 114
     % tmp = spm_imatrix(V(kImage).mat); %
113 115
     % vdim = tmp(7:9); % Voxel-Size
114 116
     
... ...
@@ -123,10 +125,11 @@ for s = 1:nSubjects
123 125
 
124 126
     display(sprintf('starting timesliceing'));
125 127
     
126
-    for timeShift = 1:timeLineEnd-timeLineStart+1
128
+    nSamplePoints = ((timeLineEnd-timeLineStart)/res) +1;
129
+    for timeShiftIdx = 1:nSamplePoints
127 130
     % center timepoint && relative shift
128
-    frameStart  = floor(-globalStart+1+timeShift - 0.5*decodeDuration);
129
-    frameEnd    = min(ceil(frameStart+decodeDuration + 0.5*decodeDuration),-globalStart+globalEnd);
131
+    frameStartIdx  = floor(-globalStart+1+timeShiftIdx - 0.5*decodeDuration);
132
+    frameEndIdx    = min(ceil(frameStart+decodeDuration + 0.5*decodeDuration),-globalStart+globalEnd);
130 133
 
131 134
         img3D = zeros(size(mask_image)); %output image prepare
132 135
 
... ...
@@ -143,7 +146,7 @@ for s = 1:nSubjects
143 146
                     svmlabel = [svmlabel; lm_getSVMLabel(labelMap,eventList(pstConditionGroup,1))];
144 147
                     row = [];
145 148
                     for voxel = 1:size(sphere,2)
146
-                        row = [row, pst{1,voxel}{1,pstConditionGroup}(dp,frameStart:frameEnd)]; % label,[value,value,...],[value,value,...]...
149
+                        row = [row, pst{1,voxel}{1,pstConditionGroup}(dp,frameStartIdx:frameEndIdx)]; % label,[value,value,...],[value,value,...]...
147 150
                     end
148 151
                     svmdata  = [svmdata; row];
149 152
                 end
... ...
@@ -164,12 +167,10 @@ for s = 1:nSubjects
164 167
             z = coord(3);
165 168
             
166 169
             img3D(x,y,z) = ((decode/100)-0.5)*2; % range [-1:1]
167
-
168 170
         end  %for each voxel
169 171
 
170 172
         nii = make_nii(img3D,vdim,mask_image.hdr.hist.originator(1:3),16,sprintf('decode performance, time relative to onset: %g to %g sec',frameStart,frameEnd));
171
-        save_nii(nii,fullfile(savePath,sprintf('%s-%03g',subjects{s}.name,timeShift)));
172
-    
173
+        save_nii(nii,fullfile(savePath,sprintf('%s-%03g',subjects{s}.name,timeShiftIdx)));
173 174
     end %for each timeslice
174 175
     display('rastering done');
175 176
     display(sprintf('result images saved to %s',savePath));
... ...
@@ -374,31 +374,42 @@ pSearchlight = uipanel(parent,'Units','normalized','Position',[0.0 0.1 1 0.3]);
374 374
     set(btnRunXSVM,'Callback',{@cbRunDecode,model,'XSVM'}); 
375 375
     set(btnRunSOM, 'Callback',{@cbRunDecode,model,'SOM'});
376 376
     set(btnRunXSOM,'Callback',{@cbRunDecode,model,'XSOM'});
377
-    set(btnRunFBS,'Callback',{@cbRunDecode,model,'FBS'});
377
+    set(btnRunFBS, 'Callback',{@cbRunDecode,model,'FBS'});
378 378
 end
379 379
 
380 380
 function model = createVisualStepPanel(model,parent,DEFAULT)
381
+
382
+    grid_h = 0.25;
383
+    grid_w = 0.5;
384
+    plot_grid = cell([3 3]);
385
+    plot_grid{1,1} = [0.0 0.63 grid_w grid_h];
386
+    plot_grid{1,2} = [0.0 0.33 grid_w grid_h];
387
+    plot_grid{1,3} = [0.0 0.03 grid_w grid_h];
388
+    plot_grid{2,1} = [0.5 0.63 grid_w grid_h];
389
+    plot_grid{2,2} = [0.5 0.33 grid_w grid_h];
390
+    plot_grid{2,3} = [0.5 0.03 grid_w grid_h];
391
+
381 392
     pButtonPane = uipanel(parent,'Units','normalized','Position',[0 0.5 1 0.5]);
382 393
 %     set(pButtonPane,'Title','Plot');
383 394
     set(pButtonPane,'BackgroundColor','w');
384 395
 
385 396
     btnPlot01 = uicontrol(pButtonPane,'String','plot performance and SE',...
386 397
         'Units','normalized',...
387
-        'Position',[0.0 0.0 0.5 0.25]);
398
+        'Position',cell2mat(plot_grid(1,3)));
388 399
     set(btnPlot01,'Callback',{@cbPlot,model,'simple'});
389 400
     set(btnPlot01,'Enable','on');
390 401
     
391 402
     btnPlot02 = uicontrol(pButtonPane,'String','plot subject performance and mean with SE',...
392 403
         'Units','normalized',...
393
-        'Position',[0.5 0.0 0.5 0.25]);
404
+        'Position',cell2mat(plot_grid(2,3)));
394 405
     set(btnPlot02,'Callback',{@cbPlot,model,'x-subject-val'});
395 406
     set(btnPlot02,'Enable','on');
396 407
 
397
-%     btnPlot03 = uicontrol(pButtonPane,'String','plot class performance and mean',...
398
-%         'Units','normalized',...
399
-%         'Position',[0.0 0.5 0.5 0.25]);
400
-%     set(btnPlot03,'Callback',{@cbPlot,model,'class performance'}); 
401
-%     set(btnPlot03,'Enable','on');
408
+    btnPlot03 = uicontrol(pButtonPane,'String','plot PSTH',...
409
+        'Units','normalized',...
410
+        'Position',cell2mat(plot_grid(1,2)));
411
+    set(btnPlot03,'Callback',{@cbPlot,model,'psth'}); 
412
+    set(btnPlot03,'Enable','on');
402 413
     
403 414
 end
404 415