gui finished. callbacks still missing
Christoph Budziszewski

Christoph Budziszewski commited on 2009-02-12 17:41:08
Zeige 1 geänderte Dateien mit 104 Einfügungen und 33 Löschungen.


git-svn-id: https://svn.discofish.de/MATLAB/spmtoolbox/SVMCrossVal@129 83ab2cfd-5345-466c-8aeb-2b2739fb922d
... ...
@@ -12,7 +12,8 @@ DEFAULT.frameshiftend   = 35;
12 12
 DEFAULT.frameshiftdur   = 0;
13 13
 DEFAULT.classdefstring  = 'left,\t[9,11,13]\nright,\t[10,12,14]';
14 14
 DEFAULT.voxelstring     = 'SPL l + [ 0, 0, 0] \nSPL r + [ 0, 0, 0]\n';
15
-DEFAULT.svmoptstring    = '-s 0 -t 0 -v 6 -c 1';
15
+DEFAULT.svmoptstring    = '-s 0 -t 0 -c 1';
16
+DEFAULT.svmnfold        = '6';
16 17
 DEFAULT.searchlightradius = 3;
17 18
 
18 19
 %  Initialize and hide the GUI as it is being constructed.
... ...
@@ -25,10 +26,10 @@ DEFAULT.searchlightradius = 3;
25 26
     set(frame,'NumberTitle','off');
26 27
     set(frame,'MenuBar','none');
27 28
     set(frame,'Color',get(0,'defaultUicontrolBackgroundColor'));
28
-    set(frame,'Resize','off');
29
+    set(frame,'Resize','on');
29 30
     set(frame,'Units','normalized');
30 31
 
31
-    pFirstStep   = uipanel(frame,'Title','Preprocessing','Position',[0 0.4 1 0.6]);
32
+    pFirstStep   = uipanel(frame,'Title','Preprocessing','Position',[0 0.3 1 0.7]);
32 33
     set(pFirstStep,'BackgroundColor','w');
33 34
     set(pFirstStep,'Units','normalized');
34 35
     
... ...
@@ -37,43 +38,81 @@ DEFAULT.searchlightradius = 3;
37 38
     assignin('base','model',model);
38 39
     
39 40
     %Classification Step
40
-    secondStepBaseColor = [0.7 0.7 0.0 ];
41
-    pSecondStep = uipanel(frame,'Title','Classification','Position',[0 0 1 0.4]);
41
+    secondStepBaseColor = 'w';
42
+    pSecondStep = uipanel(frame,'Title','Classification','Position',[0 0 1 0.3]);
42 43
     set(pSecondStep,'BackgroundColor',secondStepBaseColor);
43 44
 
44 45
     
45
-    model2 = createSecondStepPanel(pSecondStep,DEFAULT,secondStepBaseColor);
46
+    model2 = createSecondStepPanel(pSecondStep,DEFAULT,model,secondStepBaseColor);
46 47
     assignin('base','model2',model2);
47 48
 
48 49
     set(frame,'Visible','on');
49 50
 end
50 51
 
51
-function model = createSecondStepPanel(parent,DEFAULT,basecolor)
52
-pSVM = uipanel(parent,'Units','normalized','Position',[0 0 0.5 0.9]);
52
+function model = createSecondStepPanel(parent,DEFAULT,model1,basecolor)
53
+    
54
+pSVM = uipanel(parent,'Units','normalized','Position',[0 0.0 0.5 1]);
53 55
     set(pSVM,'Title','SVM Classification');
54 56
     set(pSVM,'BackgroundColor',basecolor);
55 57
 
56
-    model.txtSVMopts = createTextField(pSVM,[0 0.9 1 0.1],DEFAULT.svmoptstring);
57
-    set(model.txtSVMopts,'Enable','on'); %inactive
58
+    model.txtSVMopts = createTextField(pSVM,[0 0.75 1 0.25],DEFAULT.svmoptstring);
58 59
     set(model.txtSVMopts,'HorizontalAlignment','left');
59 60
     
61
+    model.txtSVMnfold = createTextField(pSVM,[0.0 0.50 0.5 0.25],DEFAULT.svmnfold);
62
+    createLabel(pSVM,[0.5 0.50 0.5 0.25 ],'-Fold CrossVal');
63
+
64
+
60 65
     
61
-pSOM = uipanel(parent,'Units','normalized','Position',[0.5 0 0.5 0.9]);
62
-    set(pSOM,'Title','SVM Classification');
66
+pSOM = uipanel(parent,'Units','normalized','Position',[0.5 0.0 0.5 1]);
67
+    set(pSOM,'Title','SOM Classification');
63 68
     set(pSOM,'BackgroundColor',basecolor);
69
+
70
+    model.txtSOMopts = createTextField(pSOM,[0 0.75 1 0.25],'4x3 rect');
71
+    set(model.txtSOMopts,'HorizontalAlignment','left');
72
+        set(model.txtSOMopts,'Enable','off');
73
+
74
+    model.txtSOMnfold = createTextField(pSOM,[0.0 0.50 0.5 0.25],DEFAULT.svmnfold);
75
+        set(model.txtSOMnfold,'Enable','off');
76
+    createLabel(pSOM,[0.5 0.50 0.5 0.25 ],'-Fold CrossVal');
77
+
78
+
79
+    
80
+    
81
+    btnRunSVM = uicontrol(pSVM,'String','run SVM Crossvalidation',...
82
+        'Units','normalized',...
83
+        'Position',[0 0.25 1 0.25]);
84
+    set(btnRunSVM,'Callback',{@cbRunSVM,model1,model}); % set here, because of model.
85
+    
86
+    btnRunXSVM = uicontrol(pSVM,'String','run SVM X-Subject validation',...
87
+        'Units','normalized',...
88
+        'Position',[0 0.0 1 0.25]);
89
+    set(btnRunXSVM,'Callback',{@cbRunXSVM,model1,model}); % set here, because of model.
90
+    set(btnRunXSVM,'Enable','off');
91
+    
92
+    btnRunSOM = uicontrol(pSOM,'String','run SOM Crossvalidation',...
93
+        'Units','normalized',...
94
+    'Position',[0.0 0.25 1 0.25]);
95
+    set(btnRunSOM,'Callback',{@cbRunSOM,model1,model}); % set here, because of model.
96
+    set(btnRunSOM,'Enable','off');
97
+
98
+    btnRunXSOM = uicontrol(pSOM,'String','run SOM X-Subject validation',...
99
+        'Units','normalized',...
100
+        'Position',[0.0 0.0 1 0.25]);
101
+    set(btnRunXSOM,'Callback',{@cbRunXSOM,model1,model}); % set here, because of model.
102
+    set(btnRunXSOM,'Enable','off');
64 103
 end
65 104
 
66 105
 function model = createFirstStepPanel(parent,DEFAULT)
67 106
 
68
-    x1 = 0;
69
-    x2 = 0.4;
70
-    x3 = 1;
107
+    main_grid = cell(2,4);
108
+    main_grid{1,1} = [0 0.7 0.4 0.3];
109
+    main_grid{1,2} = [0 0.5 0.5 0.2];
110
+    main_grid{1,3} = [0 0.1 0.5 0.4];
111
+    main_grid{1,4} = [0 0.0 1.0 0.1];
71 112
     
72
-    y1 = 1;
73
-    y2 = 0.6;
74
-    y3 = 0.4;
75
-    y4 = 0.2;
76
-    y5 = 0;
113
+    main_grid{2,1} = [0.4 0.7 0.6 0.3];
114
+    main_grid{2,2} = [0.5 0.5 0.5 0.2];
115
+    main_grid{2,3} = [0.5 0.1 0.5 0.4];
77 116
     
78 117
     %Subjects
79 118
     subjectList = {'Subj1','Subj2','Subj3','Subj4'};
... ...
@@ -82,11 +121,11 @@ function model = createFirstStepPanel(parent,DEFAULT)
82 121
                     'String',subjectList,...
83 122
                     'UserData',subjectList,...
84 123
                     'Units','normalized',...
85
-                    'Position',[x1 y2 x2-x1 y1-y2]);
86
-    set(model.subjectSelector,'BackgroundColor','y');
124
+                    'Position',cell2mat(main_grid(1,1)));
125
+    set(model.subjectSelector,'BackgroundColor','w');
87 126
     
88 127
     %Classes
89
-    pClasses = uipanel(parent,'Units','normalized','Position',[x1 y3 0.5 0.2]);
128
+    pClasses = uipanel(parent,'Units','normalized','Position',cell2mat(main_grid(1,2)));
90 129
     set(pClasses,'Title','Class Definitions');
91 130
     set(pClasses,'BackgroundColor','w');
92 131
         lClassDef = uicontrol(pClasses,...
... ...
@@ -105,11 +144,11 @@ function model = createFirstStepPanel(parent,DEFAULT)
105 144
         set(model.txtClassDef,'Max',20);
106 145
         set(model.txtClassDef,'Min',0);
107 146
         set(model.txtClassDef, 'FontName', 'FixedWidth');
108
-        set(model.txtClassDef, 'BackgroundColor', 'y');
147
+        set(model.txtClassDef, 'BackgroundColor', 'w');
109 148
 
110 149
 
111 150
     %Timeline
112
-    pPSTH        = uipanel(parent,'Title','PSTH Options','Position',[0.5 y2 0.5 y1-y2]);
151
+    pPSTH        = uipanel(parent,'Title','PSTH Options','Position',cell2mat(main_grid(2,1)));
113 152
     set(pPSTH,'BackgroundColor','w');
114 153
         
115 154
         grid_h = 0.16;
... ...
@@ -159,7 +198,7 @@ function model = createFirstStepPanel(parent,DEFAULT)
159 198
         model.txtSearchlightRadius = createTextField(pPSTH,cell2mat(grid(2,6)),DEFAULT.searchlightradius);
160 199
         
161 200
         % images
162
-        pImage = uipanel(parent,'Title','Image Options','Position',[0.5 0.4 0.5 0.2]);
201
+        pImage = uipanel(parent,'Title','Image Options','Position',cell2mat(main_grid(2,2)));
163 202
         set(pImage,'BackgroundColor','w');
164 203
 
165 204
         createLabel(pImage,[0.0 0.5 1 0.5],'Select Image Base');
... ...
@@ -175,7 +214,7 @@ function model = createFirstStepPanel(parent,DEFAULT)
175 214
         
176 215
         
177 216
         % coordinate Table
178
-        pVoxel = uipanel(parent,'Title','ROI','Position',[0.0 0.0 0.5 0.4]);
217
+        pVoxel = uipanel(parent,'Title','ROI','Position',cell2mat(main_grid(1,3)));
179 218
         set(pVoxel,'BackgroundColor','w');
180 219
         lVoxelDef = createLabel(pVoxel, [0 0.9 1 0.1],'<ROI Name>+[offset];');
181 220
         model.txtVoxelDef = createTextField(pVoxel,[0 0 1 0.9],...
... ...
@@ -185,30 +224,61 @@ function model = createFirstStepPanel(parent,DEFAULT)
185 224
         set(model.txtVoxelDef,'Min',0);
186 225
         set(model.txtVoxelDef, 'FontName', 'FixedWidth');
187 226
         
188
-        pButtons = uipanel(parent,'Position',[0.5 0.0 0.5 0.4]);
189
-        set(pButtons,'BackgroundColor','b');
227
+        %normalizations
228
+        pNorm = uipanel(parent,'Title','Normalization','Position',cell2mat(main_grid(2,3)));
229
+        set(pNorm,'BackgroundColor','w');
230
+        
231
+        createLabel(pNorm,[0 0.75 1 0.25],'PST Normalization');
232
+        norm1Model = {'norm A','norm B'};
233
+        model.selNormPST = uicontrol(pNorm,'Style','popupmenu',...
234
+            'Units','normalized',...
235
+            'Position',[0.0 0.5 1 0.25],...
236
+            'String',norm1Model,...
237
+            'UserData',norm1Model,...
238
+            'Value',1);
239
+         set(model.selNormPST,'BackgroundColor','w');   
240
+        
241
+        createLabel(pNorm,[0 0.25 1 0.25],'Class-Grouping Normalization');
242
+        norm2Model = {'norm X','norm Y'};
243
+        model.selNormClass = uicontrol(pNorm,'Style','popupmenu',...
244
+            'Units','normalized',...
245
+            'Position',[0.0 0.0 1 0.25],...
246
+            'String',norm2Model,...
247
+            'UserData',norm2Model,...
248
+            'Value',1);
249
+         set(model.selNormClass,'BackgroundColor','w');   
250
+        
251
+        %buttons
252
+        pButtons = uipanel(parent,'Position',cell2mat(main_grid(1,4)));
253
+        set(pButtons,'BackgroundColor','w');
190 254
         
191
-        btnRunButton1 = uicontrol(pButtons,'String','run coord-Table','Units','normalized','Position',[0 0.75 1 0.2]);
255
+        btnRunButton1 = uicontrol(pButtons,'String','run coord-Table',...
256
+            'Units','normalized','Position',[0 0 0.33 1]);
192 257
         set(btnRunButton1,'Callback',{@cbRunCoordTable,model}); % set here, because of model.    
193 258
         
194
-        btnRunButton2 = uicontrol(pButtons,'String','run full Brain Searchlight','Units','normalized','Position',[0 0.5 1 0.2]);
259
+        btnRunButton2 = uicontrol(pButtons,'String','run full Brain Searchlight',...
260
+            'Units','normalized','Position',[0.33 0 0.33 1]);
195 261
         set(btnRunButton2,'Callback',{@cbRunFBS,model}); % set here, because of model.    
196 262
         
197
-        btnRunButton3 = uicontrol(pButtons,'String','run ROI-Image processing','Units','normalized','Position',[0 0.25 1 0.2]);
263
+        btnRunButton3 = uicontrol(pButtons,'String','run ROI-Image processing',...
264
+            'Units','normalized','Position',[0.66 0 0.33 1]);
198 265
         set(btnRunButton2,'Callback',{@cbRunROIImage,model}); % set here, because of model.    
199 266
         set(btnRunButton3,'Enable','off');
200 267
 end
201 268
 
202 269
 function cbRunCoordTable(src,evnt,model)
203 270
     display('RUN Coord-Table Mode');
271
+    assignin('base','model1',model);
204 272
     main('COORD-LOOKUP-TABLE',model);
205 273
 end
206 274
 function cbRunROIImage(src,evnt,model)
207 275
     display('RUN Image-Mask Mode');
276
+    assignin('base','model1',model);
208 277
     main('ROI-IMAGE-MASK', model);
209 278
 end
210 279
 function cbRunFBS(src,evnt,model)
211 280
     display('RUN Full Brain Searchlight Mode');
281
+    assignin('base','model1',model);
212 282
     display('not implemented.');
213 283
 end
214 284
 
... ...
@@ -220,7 +290,8 @@ function label = createLabel(parent,  pos, labelText)
220 290
 end
221 291
 
222 292
 function txt = createTextField(parent,pos,model)
223
-    textfieldcolor = [0.9 0.9 0.0];
293
+%     textfieldcolor = [0.9 0.9 0.0];
294
+    textfieldcolor = 'w';
224 295
     txt = uicontrol(parent,'Style','edit','Units','normalized','String',model,'Position',pos);
225 296
     set(txt,'BackgroundColor',textfieldcolor);
226 297
 end
227 298