Christoph Budziszewski commited on 2009-04-21 11:49:06
Zeige 3 geänderte Dateien mit 28 Einfügungen und 39 Löschungen.
git-svn-id: https://svn.discofish.de/MATLAB/spmtoolbox/SVMCrossVal@177 83ab2cfd-5345-466c-8aeb-2b2739fb922d
| ... | ... |
@@ -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 | 21 |
|
| 24 |
- % plot performance timeline |
|
| 25 |
- subplot(2,1,2) |
|
| 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 |
| ... | ... |
@@ -168,8 +170,7 @@ for s = 1:nSubjects |
| 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));
|
| ... | ... |
@@ -378,27 +378,38 @@ pSearchlight = uipanel(parent,'Units','normalized','Position',[0.0 0.1 1 0.3]); |
| 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 |
|
| 405 | 416 |