subject loop is function
Christoph Budziszewski

Christoph Budziszewski commited on 2009-01-28 14:52:30
Zeige 3 geänderte Dateien mit 59 Einfügungen und 60 Löschungen.


git-svn-id: https://svn.discofish.de/MATLAB/spmtoolbox/SVMCrossVal@121 83ab2cfd-5345-466c-8aeb-2b2739fb922d
... ...
@@ -1,30 +1,23 @@
1
-function plotDecodePerformance(varargin)
1
+function plotDecodePerformance(timeline,inputStruct)
2 2
 
3 3
 global CROSSVAL_METHOD_DEF;
4 4
 
5 5
 PSTH_AXIS_MIN = -1;
6 6
 PSTH_AXIS_MAX = 1;
7 7
 
8
-switch nargin
8
+        psthStart         = timeline.psthStart;
9
+        psthEnd           = timeline.psthEnd;
10
+        frameStart        = timeline.frameShiftStart;
11
+        frameEnd          = timeline.frameShiftEnd;
9 12
 
10
-    case 1
11
-        inputStruct       = cell2mat(varargin(1));
12
-
13
-        psthStart         = inputStruct.psthStart;
14
-        psthEnd           = inputStruct.psthEnd;
15 13
         nClasses          = inputStruct.nClasses;
16 14
         decodePerformance = inputStruct.decodePerformance;
17
-        frameStart        = inputStruct.frameShiftStart;
18
-        frameEnd          = inputStruct.frameShiftEnd;
19 15
         psth              = inputStruct.rawTimeCourse;
20 16
         SubjectID         = inputStruct.SubjectID;
21 17
         smoothed          = inputStruct.smoothed;
22 18
         PLOT_METHOD       = inputStruct.CROSSVAL_METHOD;
23 19
 %         CROSSVAL_METHOD_DEF = inputStruct.CROSSVAL_METHOD_DEF;
24 20
 
25
-    otherwise
26
-        error('spmtoolbox:SVMCrossVal:plotDecodePerformance:WrongArgument','Wrong Arguments');
27
-end
28 21
 
29 22
     f = figure;
30 23
     subplot(2,1,1);
... ...
@@ -1,5 +1,5 @@
1 1
 % function [decodePerformance rawTimecourse ] = calculateDecodePerformance(des,timeLineStart, timeLineEnd, decodeDuration, svmargs, conditionList, sessionList, voxelList, classList, labelMap,normalize)
2
-function outputStruct = calculateDecodePerformance(inputStruct,SubjectID)
2
+function outputStruct = calculateDecodePerformance(timeline,inputStruct,SubjectID)
3 3
 
4 4
 global CROSSVAL_METHOD_DEF;
5 5
 
... ...
@@ -14,21 +14,23 @@ outputStruct = struct;
14 14
 
15 15
 namehelper      = strcat('s',SubjectID);
16 16
 des             = inputStruct.(namehelper).des;
17
-timeLineStart   = inputStruct.frameShiftStart;
18
-timeLineEnd     = inputStruct.frameShiftEnd;
19
-decodeDuration  = inputStruct.decodeDuration;
20 17
 svmargs         = inputStruct.svmargs;
21 18
 sessionList     = inputStruct.sessionList;
22 19
 voxelList       = inputStruct.(namehelper).voxelList;
23 20
 % classList       = inputStruct.classList;
24 21
 % labelMap        = inputStruct.labelMap;
25 22
 smoothed        = inputStruct.smoothed;
26
-globalStart     = inputStruct.psthStart;
27
-globalEnd       = inputStruct.psthEnd;
28
-baselineStart   = inputStruct.baselineStart;
29
-baselineEnd     = inputStruct.baselineEnd;
30 23
 eventList       = inputStruct.eventList;
31 24
 
25
+timeLineStart   = timeline.frameShiftStart;
26
+timeLineEnd     = timeline.frameShiftEnd;
27
+decodeDuration  = timeline.decodeDuration;
28
+globalStart     = timeline.psthStart;
29
+globalEnd       = timeline.psthEnd;
30
+baselineStart   = timeline.baselineStart;
31
+baselineEnd     = timeline.baselineEnd;
32
+
33
+
32 34
 minPerformance = inf;
33 35
 maxPerformance = -inf;
34 36
         
... ...
@@ -12,24 +12,29 @@ switch nargin
12 12
         error('spmtoolbox:SVMCrossVal:arginError','Please Specify action and parameter model');
13 13
 end
14 14
 
15
+        % timeline params (claculate and plot)
16
+        timelineParams = struct;
17
+        
18
+        timelineParams.frameShiftStart = getDouble(paramModel.txtFrameShiftStart);  % -20;
19
+        timelineParams.frameShiftEnd   = getDouble(paramModel.txtFrameShiftEnd); %15;
20
+        timelineParams.decodeDuration  = getDouble(paramModel.txtFrameShiftDur);
21
+        timelineParams.psthStart       = getDouble(paramModel.txtPSTHStart); % -25;
22
+        timelineParams.psthEnd         = getDouble(paramModel.txtPSTHEnd); % 20;
23
+        timelineParams.baselineStart   = getDouble(paramModel.txtBaselineStart); % -22;
24
+        timelineParams.baselineEnd     = getDouble(paramModel.txtBaselineEnd); % -20;       
25
+       
15 26
         % common params
16 27
         calculateParams  = struct;
17 28
         
18 29
 %         calculateParams.CROSSVAL_METHOD_DEF = CROSSVAL_METHOD_DEF;
19 30
         calculateParams.CROSSVAL_METHOD     = CROSSVAL_METHOD_DEF.svmcrossval;
31
+        calculateParams.PROJECT_BASE_PATH   = PROJECT_BASE_PATH;
32
+        calculateParams.PROJECT_RESULT_PATH = PROJECT_RESULT_PATH;
20 33
         
21 34
         calculateParams.RANDOMIZE       = 0;
22 35
         
23 36
         calculateParams.smoothed        = getChkValue(paramModel.chkSmoothed);
24 37
 
25
-        calculateParams.frameShiftStart = getDouble(paramModel.txtFrameShiftStart);  % -20;
26
-        calculateParams.frameShiftEnd   = getDouble(paramModel.txtFrameShiftEnd); %15;
27
-        calculateParams.decodeDuration  = getDouble(paramModel.txtFrameShiftDur);
28
-        calculateParams.psthStart       = getDouble(paramModel.txtPSTHStart); % -25;
29
-        calculateParams.psthEnd         = getDouble(paramModel.txtPSTHEnd); % 20;
30
-        calculateParams.baselineStart   = getDouble(paramModel.txtBaselineStart); % -22;
31
-        calculateParams.baselineEnd     = getDouble(paramModel.txtBaselineEnd); % -20;
32
-
33 38
         calculateParams.svmargs         = get(paramModel.txtSVMopts,'String');
34 39
         calculateParams.sessionList     = 1:3;
35 40
 
... ...
@@ -42,6 +47,35 @@ end
42 47
 %         calculateParams.eventList       = getPSTEventMatrix(calculateParams.labelMap);
43 48
         
44 49
         subjectSelection = getSubjectIDString(paramModel);
50
+        calculateParams.subjectSelection = subjectSelection;
51
+        
52
+        decode = claculateMultiSubjectDecodePerformance(timelineParams,calculateParams);
53
+
54
+        display('Finished calculations.');
55
+        display('Plotting...');
56
+
57
+        plotParams                   = struct;
58
+        
59
+%         plotParams.CROSSVAL_METHOD_DEF = CROSSVAL_METHOD_DEF;
60
+        plotParams.CROSSVAL_METHOD     = calculateParams.CROSSVAL_METHOD;
61
+        
62
+        plotParams.nClasses          = length(calculateParams.classList);
63
+
64
+        plotParams.decodePerformance = decode.decodePerformance;
65
+        plotParams.rawTimeCourse     = decode.rawTimeCourse;
66
+        plotParams.SubjectID         = subjectSelection;
67
+        plotParams.smoothed          = boolToYesNoString(calculateParams.smoothed);
68
+
69
+        assignin('base','plotParams',plotParams);
70
+%         plotDecodePerformance(params.psthStart,params.psthEnd,params.nClasses,decode.decodeTable,params.frameShiftStart,params.frameShiftEnd,decode.rawTimeCourse);
71
+        plotDecodePerformance(timelineParams,plotParams);
72
+            
73
+        display('all done.');
74
+end
75
+    
76
+
77
+%% subject loop
78
+function decode = claculateMultiSubjectDecodePerformance(timelineParams,calculateParams)
45 79
 decode = struct;
46 80
 decode.decodePerformance = [];
47 81
 decode.rawTimeCourse     = [];
... ...
@@ -51,7 +85,7 @@ end
51 85
     namehelper = strcat('s',SubjectID); %Vars can not start with numbers.
52 86
 
53 87
     display('loading SPM.mat ...');
54
-            spm = load(fullfile(PROJECT_BASE_PATH,SubjectID,PROJECT_RESULT_PATH));
88
+    spm = load(fullfile(calculateParams.PROJECT_BASE_PATH,SubjectID,calculateParams.PROJECT_RESULT_PATH));
55 89
     display('... done.');
56 90
 
57 91
     % calculate
... ...
@@ -63,7 +97,7 @@ end
63 97
     display('switching off all warnings');
64 98
     warning_state               = warning('off','all');
65 99
     display('calculating ...');
66
-            decode.(namehelper)         = calculateDecodePerformance(calculateParams,SubjectID);
100
+    decode.(namehelper)         = calculateDecodePerformance(timelineParams,calculateParams,SubjectID);
67 101
 
68 102
     display('... done');
69 103
     display('restoring warnings');
... ...
@@ -75,34 +109,4 @@ end
75 109
     assignin('base','decode',decode);
76 110
 end
77 111
 
78
-        display('Finished calculations.');
79
-        display('Plotting...');
80
-
81
-        plotParams                   = struct;
82
-        
83
-%         plotParams.CROSSVAL_METHOD_DEF = CROSSVAL_METHOD_DEF;
84
-        plotParams.CROSSVAL_METHOD     = calculateParams.CROSSVAL_METHOD;
85
-        
86
-        plotParams.psthStart         = calculateParams.psthStart;
87
-        plotParams.psthEnd           = calculateParams.psthEnd;
88
-        plotParams.nClasses          = length(calculateParams.classList);
89
-        
90
-        plotParams.frameShiftStart   = calculateParams.frameShiftStart;
91
-        plotParams.frameShiftEnd     = calculateParams.frameShiftEnd;
92
-        plotParams.decodePerformance = decode.decodePerformance;
93
-        plotParams.rawTimeCourse     = decode.rawTimeCourse;
94
-        
95
-%         if numel(subjectSelection) == 1
96
-%           plotParams.SubjectID         = SubjectID;
97
-%         else
98
-          plotParams.SubjectID         = subjectSelection;
99
-%         end
100
-
101
-        plotParams.smoothed          = boolToYesNoString(calculateParams.smoothed);
102
-
103
-        assignin('base','plotParams',plotParams);
104
-%         plotDecodePerformance(params.psthStart,params.psthEnd,params.nClasses,decode.decodeTable,params.frameShiftStart,params.frameShiftEnd,decode.rawTimeCourse);
105
-        plotDecodePerformance(plotParams);
106
-            
107
-        display('all done.');
108 112
 end
109 113
\ No newline at end of file
110 114