Christoph Budziszewski commited on 2008-12-18 15:29:41
Zeige 5 geänderte Dateien mit 27 Einfügungen und 14 Löschungen.
git-svn-id: https://svn.discofish.de/MATLAB/spmtoolbox/SVMCrossVal@95 83ab2cfd-5345-466c-8aeb-2b2739fb922d
| ... | ... |
@@ -14,7 +14,7 @@ sessionList = inputStruct.sessionList; |
| 14 | 14 |
voxelList = inputStruct.voxelList; |
| 15 | 15 |
% classList = inputStruct.classList; |
| 16 | 16 |
% labelMap = inputStruct.labelMap; |
| 17 |
-% normalize = inputStruct.normalize; |
|
| 17 |
+smoothed = inputStruct.smoothed; |
|
| 18 | 18 |
globalStart = inputStruct.psthStart; |
| 19 | 19 |
globalEnd = inputStruct.psthEnd; |
| 20 | 20 |
baselineStart = inputStruct.baselineStart; |
| ... | ... |
@@ -39,7 +39,7 @@ maxPerformance = -inf; |
| 39 | 39 |
|
| 40 | 40 |
|
| 41 | 41 |
for voxel = 1:size(voxelList,1) % [[x;x],[y;y],[z;z]] |
| 42 |
- extr = calculateImageData(voxelList(voxel,:),des); |
|
| 42 |
+ extr = calculateImageData(voxelList(voxel,:),des,smoothed); |
|
| 43 | 43 |
rawdata=cell2mat({extr.mean}); % Raw Data
|
| 44 | 44 |
pst{voxel} = calculatePST(des,globalStart,baselineStart,baselineEnd,globalEnd,eventList,rawdata,sessionList);
|
| 45 | 45 |
end |
| ... | ... |
@@ -83,7 +83,7 @@ maxPerformance = -inf; |
| 83 | 83 |
end |
| 84 | 84 |
|
| 85 | 85 |
|
| 86 |
-function extr = calculateImageData(voxelList,des) |
|
| 86 |
+function extr = calculateImageData(voxelList,des,smoothed) |
|
| 87 | 87 |
|
| 88 | 88 |
dtype='PSTH'; |
| 89 | 89 |
|
| ... | ... |
@@ -93,9 +93,15 @@ switch dtype |
| 93 | 93 |
case 'betas' |
| 94 | 94 |
V=des.Vbeta; |
| 95 | 95 |
end; |
| 96 |
-% for z=1:length(V) % Change Drive Letter! |
|
| 97 |
-% V(z).fname(1)='E'; |
|
| 98 |
-% end; |
|
| 96 |
+ |
|
| 97 |
+if (~smoothed) |
|
| 98 |
+ for z=1:length(V) % Change Drive Letter!\ |
|
| 99 |
+ % D:....SUBJECTID\session\swfanders... |
|
| 100 |
+ % D:....SUBJECTID\session\wfanders... |
|
| 101 |
+ tmp = findstr(filesep,V(z).fname); |
|
| 102 |
+ V(z).fname = strcat(V(z).fname(1:tmp(end)),V(z).fname(tmp(end)+2:end)); |
|
| 103 |
+ end; |
|
| 104 |
+end |
|
| 99 | 105 |
|
| 100 | 106 |
% rad = 0; % one voxel |
| 101 | 107 |
% opt = 1; % xyz coordinates [mm] |
| ... | ... |
@@ -31,13 +31,15 @@ end |
| 31 | 31 |
params = struct; |
| 32 | 32 |
params.nClasses = 2; |
| 33 | 33 |
|
| 34 |
- assignin('base','params',params);
|
|
| 34 |
+% assignin('base','params',params);
|
|
| 35 | 35 |
%% calculate |
| 36 | 36 |
display('calculating cross-validation performance time-shift');
|
| 37 | 37 |
calculateParams = struct; |
| 38 | 38 |
|
| 39 | 39 |
calculateParams.des = spm.SPM; |
| 40 | 40 |
|
| 41 |
+ calculateParams.smoothed = getDouble(paramModel.txtSmoothed); |
|
| 42 |
+ |
|
| 41 | 43 |
calculateParams.frameShiftStart = getDouble(paramModel.txtFrameShiftStart); % -20; |
| 42 | 44 |
calculateParams.frameShiftEnd = getDouble(paramModel.txtFrameShiftEnd); %15; |
| 43 | 45 |
calculateParams.decodeDuration = getDouble(paramModel.txtFrameShiftDur); |
| ... | ... |
@@ -52,7 +54,7 @@ end |
| 52 | 54 |
calculateParams.sessionList = 1:3; |
| 53 | 55 |
|
| 54 | 56 |
classStruct = parseClassDef(paramModel); |
| 55 |
- assignin('base','classStruct',classStruct);
|
|
| 57 |
+% assignin('base','classStruct',classStruct);
|
|
| 56 | 58 |
|
| 57 | 59 |
calculateParams.classList = classStruct.label; %{'<','>'};
|
| 58 | 60 |
calculateParams.labelMap = LabelMap(classStruct.label , classStruct.value); % LabelMap({'<','>','<+<','>+>','<+>','>+<'},{-2,-1,1,2,3,4});
|
| ... | ... |
@@ -79,6 +81,7 @@ end |
| 79 | 81 |
plotParams.decodePerformance = decode.decodePerformance; |
| 80 | 82 |
plotParams.rawTimeCourse = decode.rawTimeCourse; |
| 81 | 83 |
plotParams.SubjectID = SubjectID; |
| 84 |
+ plotParams.smoothed = calculateParams.smoothed; |
|
| 82 | 85 |
|
| 83 | 86 |
assignin('base','plotParams',plotParams);
|
| 84 | 87 |
% plotDecodePerformance(params.psthStart,params.psthEnd,params.nClasses,decode.decodeTable,params.frameShiftStart,params.frameShiftEnd,decode.rawTimeCourse); |
| ... | ... |
@@ -12,6 +12,7 @@ if(nargin==1) |
| 12 | 12 |
frameEnd = inputStruct.frameShiftEnd; |
| 13 | 13 |
psth = inputStruct.rawTimeCourse; |
| 14 | 14 |
SubjectID = inputStruct.SubjectID; |
| 15 |
+ smoothed = inputStruct.smoothed; |
|
| 15 | 16 |
|
| 16 | 17 |
|
| 17 | 18 |
elseif( nargin == 7) |
| ... | ... |
@@ -25,6 +26,7 @@ elseif( nargin == 7) |
| 25 | 26 |
psth = varargin(7); |
| 26 | 27 |
psth = psth{1};
|
| 27 | 28 |
SubjectID = ''; |
| 29 |
+ smoothed = ''; |
|
| 28 | 30 |
end |
| 29 | 31 |
|
| 30 | 32 |
f = figure; |
| ... | ... |
@@ -39,7 +41,7 @@ end |
| 39 | 41 |
plot(psthStart:psthEnd,psthData,[colorChooser(voxel), lineStyleChooser(label)]); |
| 40 | 42 |
end |
| 41 | 43 |
end |
| 42 |
-% axis([psthStart psthEnd 0 0]) |
|
| 44 |
+ axis([psthStart psthEnd -2 5]) |
|
| 43 | 45 |
hold off |
| 44 | 46 |
|
| 45 | 47 |
subplot(2,1,2) |
| ... | ... |
@@ -55,7 +57,7 @@ end |
| 55 | 57 |
|
| 56 | 58 |
hold off; |
| 57 | 59 |
|
| 58 |
- title = sprintf('Subject %s, over %g voxel',SubjectID,size(psth,2));
|
|
| 60 |
+ title = sprintf('Subject %s, over %g voxel, smoothed %g',SubjectID,size(psth,2),smoothed);
|
|
| 59 | 61 |
set(f,'Name',title); |
| 60 | 62 |
display(sprintf('%s',title));
|
| 61 | 63 |
|
| ... | ... |
@@ -87,7 +89,7 @@ switch(mod(n,4)) |
| 87 | 89 |
case 2 |
| 88 | 90 |
style = ':'; |
| 89 | 91 |
case 3 |
| 90 |
- style = ':-'; |
|
| 92 |
+ style = '-.'; |
|
| 91 | 93 |
end |
| 92 | 94 |
end |
| 93 | 95 |
|
| ... | ... |
@@ -37,6 +37,8 @@ function spm_SVMCrossVal |
| 37 | 37 |
'Position',[firstColumn firstRow 0.66*frameWidth controlElementHeight]); |
| 38 | 38 |
set(model.subjectSelector,'BackgroundColor','w'); |
| 39 | 39 |
|
| 40 |
+ model.txtSmoothed = createTextField(pSubject,[0.68*frameWidth firstRow 0.25*frameWidth controlElementHeight],'0'); |
|
| 41 |
+ |
|
| 40 | 42 |
% PSTH |
| 41 | 43 |
firstColumn = 5.00; |
| 42 | 44 |
secondColumn = 0.33*frameWidth; |
| ... | ... |
@@ -100,7 +102,7 @@ function spm_SVMCrossVal |
| 100 | 102 |
firstRow = 1.00 * controlElementHeight; |
| 101 | 103 |
|
| 102 | 104 |
model.txtSVMopts = createTextField(pSVM,[firstColumn firstRow 0.66*frameWidth controlElementHeight],'-t 0 -s 0 -v 6'); |
| 103 |
- set(model.txtSVMopts,'Enable','inactive'); |
|
| 105 |
+ set(model.txtSVMopts,'Enable','on'); %inactive |
|
| 104 | 106 |
set(model.txtSVMopts,'HorizontalAlignment','left'); |
| 105 | 107 |
|
| 106 | 108 |
set(btnRunButton,'Callback',{@cbRunSVM,model}); % set here, because of model.
|
| ... | ... |
@@ -145,7 +147,7 @@ function cbRunSVM(src,evnt,model) |
| 145 | 147 |
if isSane(model) |
| 146 | 148 |
set(0,'userdata',model); |
| 147 | 149 |
% set(src,'Enable','off'); |
| 148 |
- assignin('base','guiParams',model);
|
|
| 150 |
+% assignin('base','guiParams',model);
|
|
| 149 | 151 |
classify(model) |
| 150 | 152 |
% set(src,'Enable','on'); |
| 151 | 153 |
else |
| 152 | 154 |