GUI parsing halfway done.
Christoph Budziszewski

Christoph Budziszewski commited on 2008-12-17 17:57:53
Zeige 5 geänderte Dateien mit 98 Einfügungen und 38 Löschungen.


working version

git-svn-id: https://svn.discofish.de/MATLAB/spmtoolbox/SVMCrossVal@92 83ab2cfd-5345-466c-8aeb-2b2739fb922d
... ...
@@ -18,9 +18,9 @@ end
18 18
         evalin('base','clear map lm SPM classList dataTimeLine decodeTable labelTimeLine svmopts trialProtocol voxelList xTimeEnd xTimeStart xTimeWindow');
19 19
       
20 20
     case 'decode'
21
-        tmp_sidx =  get(paramModel.subjectSelector,'Value');
22
-        tmp_cellList = getSubjectCellList(paramModel.subjectMap);
23
-        SubjectID = cell2mat(tmp_cellList(tmp_sidx));
21
+        
22
+        SubjectID = getSubjectIDString(paramModel);
23
+
24 24
         
25 25
         display('loading SPM.mat');
26 26
 %         SubjectID = 'JZ006';
... ...
@@ -32,29 +32,6 @@ end
32 32
         
33 33
         
34 34
         
35
-
36
-        map = SubjectRoiMapping;
37
-
38
-        voxelList  = [...
39
-                      getCoordinate(map,SubjectID,'SPL l')+[0,0,0];...
40
-                          getCoordinate(map,SubjectID,'SPL l')+[1,0,0];...
41
-                          getCoordinate(map,SubjectID,'SPL l')+[-1,0,0];...
42
-                          getCoordinate(map,SubjectID,'SPL l')+[0,1,0];...
43
-                          getCoordinate(map,SubjectID,'SPL l')+[0,-1,0];...
44
-                          getCoordinate(map,SubjectID,'SPL l')+[0,0,1];...
45
-                          getCoordinate(map,SubjectID,'SPL l')+[0,0,-1];...
46
-                      getCoordinate(map,SubjectID,'SPL r')+[0,0,0];...
47
-                          getCoordinate(map,SubjectID,'SPL r')+[1,0,0];...
48
-                          getCoordinate(map,SubjectID,'SPL r')+[-1,0,0];...
49
-                          getCoordinate(map,SubjectID,'SPL r')+[0,1,0];...
50
-                          getCoordinate(map,SubjectID,'SPL r')+[0,-1,0];...
51
-                          getCoordinate(map,SubjectID,'SPL r')+[0,0,1];...
52
-                          getCoordinate(map,SubjectID,'SPL r')+[0,0,-1];...
53
-                      getCoordinate(map,SubjectID,'M1 r')+[0,0,0];...
54
-                      getCoordinate(map,SubjectID,'M1 l')+[0,0,0];...
55
-                      ];
56
-        
57
-        
58 35
         params = struct;
59 36
         params.nClasses = 2;
60 37
 
... ...
@@ -64,18 +41,23 @@ end
64 41
         calculateParams  = struct;
65 42
         
66 43
         calculateParams.des             = spm.SPM;
67
-        calculateParams.frameShiftStart = -20;
68
-        calculateParams.frameShiftEnd   = 15;
69
-        calculateParams.decodeDuration  = 0;
70
-        calculateParams.svmargs         = '-t 0 -s 0 -v 6';
44
+        
45
+        calculateParams.frameShiftStart = getDouble(paramModel.txtFrameShiftStart);  % -20;
46
+        calculateParams.frameShiftEnd   = getDouble(paramModel.txtFrameShiftEnd); %15;
47
+        calculateParams.decodeDuration  = getDouble(paramModel.txtFrameShiftDur);
48
+        calculateParams.psthStart       = getDouble(paramModel.txtPSTHStart); % -25;
49
+        calculateParams.psthEnd         = getDouble(paramModel.txtPSTHEnd); % 20;
50
+        calculateParams.baselineStart   = getDouble(paramModel.txtBaselineStart); % -22;
51
+        calculateParams.baselineEnd     = getDouble(paramModel.txtBaselineEnd); % -20;
52
+
53
+        calculateParams.voxelList = parseVoxelList(paramModel);
54
+
55
+        calculateParams.svmargs         = get(paramModel.txtSVMopts,'String');
71 56
         calculateParams.sessionList     = 1:3;
72
-        calculateParams.voxelList       = voxelList;
57
+
58
+%         parseClassDef(paramModel)
73 59
         calculateParams.classList       = {'<','>'};
74 60
         calculateParams.labelMap        = LabelMap({'<','>','<+<','>+>','<+>','>+<'},{-2,-1,1,2,3,4});
75
-        calculateParams.psthStart       = -25;
76
-        calculateParams.psthEnd         = 20;
77
-        calculateParams.baselineStart   = -22;
78
-        calculateParams.baselineEnd     = -20;
79 61
         calculateParams.eventList       = [9,11,13; 10,12,14];
80 62
         
81 63
         assignin('base','calculateParams',calculateParams);
... ...
@@ -0,0 +1,3 @@
1
+function d = getDouble(fieldhandle)
2
+    d = str2double(get(fieldhandle,'String'));
3
+end
0 4
\ No newline at end of file
... ...
@@ -0,0 +1,9 @@
1
+function s = getSubjectIDString(model)
2
+    tmp_sidx =  get(model.subjectSelector,'Value');
3
+    tmp_cellList = getSubjectCellList(model.subjectMap);
4
+    s = cell2mat(tmp_cellList(tmp_sidx));
5
+    if ~ischar(s)
6
+        error('spmtoolbox:SVMCrossVal:getSubjectID:NoString','convert error');
7
+    end
8
+end
9
+ 
0 10
\ No newline at end of file
... ...
@@ -0,0 +1,65 @@
1
+function voxelList = parseVoxelList(model)
2
+        voxelList = [];
3
+
4
+        %<ROI Name>,<ROI Modifier>;
5
+        txt = get(model.txtVoxelDef,'String');
6
+        map = model.subjectMap;
7
+        SubjectID = getSubjectIDString(model);
8
+        
9
+        assignin('base','txt',txt);
10
+        
11
+        rows  = size(txt,1);
12
+        while all(isspace(txt(rows,:)))
13
+            rows = rows -1;
14
+        end
15
+        
16
+        for i = 1:rows 
17
+            line = txt(i,:);
18
+            roi = parseROIName(line);
19
+            roimod = parseModifier(line);
20
+            voxelList = [voxelList; getCoordinate(map,SubjectID,roi)+eval(roimod)];
21
+        end
22
+
23
+%         voxelList  = [...
24
+%                       getCoordinate(map,SubjectID,'SPL l')+[0,0,0];...
25
+%                           getCoordinate(map,SubjectID,'SPL l')+[1,0,0];...
26
+%                           getCoordinate(map,SubjectID,'SPL l')+[-1,0,0];...
27
+%                           getCoordinate(map,SubjectID,'SPL l')+[0,1,0];...
28
+%                           getCoordinate(map,SubjectID,'SPL l')+[0,-1,0];...
29
+%                           getCoordinate(map,SubjectID,'SPL l')+[0,0,1];...
30
+%                           getCoordinate(map,SubjectID,'SPL l')+[0,0,-1];...
31
+%                       getCoordinate(map,SubjectID,'SPL r')+[0,0,0];...
32
+%                           getCoordinate(map,SubjectID,'SPL r')+[1,0,0];...
33
+%                           getCoordinate(map,SubjectID,'SPL r')+[-1,0,0];...
34
+%                           getCoordinate(map,SubjectID,'SPL r')+[0,1,0];...
35
+%                           getCoordinate(map,SubjectID,'SPL r')+[0,-1,0];...
36
+%                           getCoordinate(map,SubjectID,'SPL r')+[0,0,1];...
37
+%                           getCoordinate(map,SubjectID,'SPL r')+[0,0,-1];...
38
+%                       getCoordinate(map,SubjectID,'M1 r')+[0,0,0];...
39
+%                       getCoordinate(map,SubjectID,'M1 l')+[0,0,0];...
40
+%                       ];
41
+
42
+end
43
+
44
+function roi = parseROIName(line)
45
+c = 1;
46
+roi = '';
47
+while line(c)~=','
48
+    roi = [roi line(c)];
49
+    c = c+1;
50
+end
51
+roi = strtrunc(roi);
52
+end
53
+
54
+function roimod = parseModifier(line)
55
+c = 1;
56
+while line(c)~=',' % skip roi
57
+    c=c+1;
58
+end
59
+c=c+1; % skip ','
60
+roimod='';
61
+while line(c) ~= ';'
62
+    roimod = [roimod line(c)];
63
+    c = c+1;
64
+end
65
+end
... ...
@@ -61,9 +61,9 @@ function spm_SVMCrossVal
61 61
     model.txtBaselineEnd     = createTextField(pPSTH,[thirdColumn  thirdRow  0.25*frameWidth controlElementHeight],'-20.0');
62 62
     model.txtPSTHStart       = createTextField(pPSTH,[secondColumn secondRow 0.25*frameWidth controlElementHeight],'-25.0');
63 63
     model.txtPSTHEnd         = createTextField(pPSTH,[thirdColumn  secondRow 0.25*frameWidth controlElementHeight],' 20.0');
64
-    model.txtFramsShiftStart = createTextField(pPSTH,[secondColumn fourthRow 0.25*frameWidth controlElementHeight],'-20.0');
65
-    model.txtFramsShiftEnd   = createTextField(pPSTH,[thirdColumn  fourthRow 0.25*frameWidth controlElementHeight],' 15.0');
66
-    model.txtFramsShiftDur   = createTextField(pPSTH,[secondColumn fifthRow  0.25*frameWidth controlElementHeight],' 0');
64
+    model.txtFrameShiftStart = createTextField(pPSTH,[secondColumn fourthRow 0.25*frameWidth controlElementHeight],'-20.0');
65
+    model.txtFrameShiftEnd   = createTextField(pPSTH,[thirdColumn  fourthRow 0.25*frameWidth controlElementHeight],' 15.0');
66
+    model.txtFrameShiftDur   = createTextField(pPSTH,[secondColumn fifthRow  0.25*frameWidth controlElementHeight],' 0');
67 67
 
68 68
                 
69 69
     %Classes
... ...
@@ -143,6 +143,7 @@ function cbRunSVM(src,evnt,model)
143 143
     if isSane(model)
144 144
         set(0,'userdata',model);
145 145
 %         set(src,'Enable','off');
146
+        assignin('base','guiParams',model);
146 147
         classify(model)
147 148
 %         set(src,'Enable','on');
148 149
     else
149 150