0001 function varargout = bayes_parm_advanced_gui(fig, command, varargin)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 if ~exist('fig', 'var') || isempty(fig) || ~ishandle(fig)
0013 error('invalid figure handle is specified.');
0014 end
0015 if ~exist('command', 'var') || isempty(command)
0016 error('command is a required parameter.');
0017 end
0018
0019
0020
0021
0022
0023
0024 data = guidata(fig);
0025 H = data.H;
0026
0027 switch(command)
0028
0029
0030
0031 case 'init_gui'
0032 bayes_parm = varargin{2};
0033
0034 H = init(H);
0035 set_gui_parms(data, bayes_parm);
0036 case 'exit_gui'
0037 try
0038 if isfield(H, 'fig')
0039 delete(H.fig);
0040 else
0041 delete(get(0, 'CurrentFigure'));
0042 end
0043 catch
0044 delete(get(0, 'CurrentFigure'));
0045 end
0046 clear H;
0047 bayes_parm_editor('exit_advanced_gui');
0048 case 'close_gui'
0049 if ~isempty(H)
0050 data = callback(H, H.OK_push);
0051 end
0052 case 'set_parm'
0053 bayes_parm = varargin{1};
0054 set_gui_parms(data, bayes_parm);
0055 case 'get_parm'
0056 [bayes_parm, a0_act_auto] = get_gui_parms(H);
0057 varargout{1} = bayes_parm;
0058 varargout{2} = a0_act_auto;
0059 case 'get_default'
0060 H = init(H);
0061 set(H.fig, 'Visible', 'off');
0062 bayes_parm = get_gui_parms(H);
0063 varargout{1} = bayes_parm;
0064 varargout{2} = get(H.a0_act_checkbox, 'Value');
0065 close(H.fig);
0066
0067
0068
0069
0070 case 'get_gui_handles'
0071 varargout{1} = H;
0072
0073
0074
0075 case 'callback'
0076 hObj = varargin{1};
0077 data = callback(data, hObj);
0078 end
0079
0080 function H = init(H)
0081
0082
0083
0084
0085
0086
0087
0088
0089 if isfield(H, 'fig')
0090 figure(H.fig);
0091 return;
0092 end
0093
0094
0095 fig = openfig('bayes_parm_editor_advanced.fig');
0096 H = guihandles(fig);
0097 H.fig = fig;
0098
0099
0100
0101 function data = callback(data, hObj)
0102
0103
0104
0105
0106
0107
0108
0109 global vbmeg_inst;
0110 define = vbmeg_inst.const;
0111
0112 H = data.H;
0113
0114 switch(hObj)
0115 case H.a0_act_checkbox
0116 bayes_parm_editor(data.main_obj, 'set_a0_act_auto', get(hObj, 'Value'));
0117 H = update_a0_act_mode(H);
0118
0119
0120
0121 case H.reduce_global_slider
0122 reduce_global_str = num2str(get(H.reduce_global_slider, 'Value'));
0123 set(H.reduce_global_edit, 'String', reduce_global_str);
0124 case H.basis_file_add_push
0125 common = bayes_parm_editor_get_basic_gui_common(data.main_obj);
0126 [dirname fname selected] = bayes_parm_gui_util('filedlg_relative',...
0127 {define.BASIS_EXTENSION},...
0128 0,...
0129 common.proj_root);
0130 if selected
0131 num = length(fname);
0132 add_files = {};
0133 for n=1:num
0134 add_files = [add_files; cellstr([dirname filesep fname{n}])];
0135 end
0136 filenames = get(H.basisfile_global_listbox, 'String');
0137 set(H.basisfile_global_listbox, 'String', [filenames;add_files]);
0138 end
0139 case H.basis_file_remove_push
0140 idx = get(H.basisfile_global_listbox, 'Value');
0141 filenames = get(H.basisfile_global_listbox, 'String');
0142 if ~isempty(filenames)
0143 filenames(idx) = [];
0144 list_focus = idx(1)-1;
0145 if idx(1)-1 == 0
0146 list_focus = 1;
0147 end
0148 set(H.basisfile_global_listbox, 'Value', list_focus);
0149 set(H.basisfile_global_listbox, 'String', filenames);
0150 end
0151 case {H.soft_mode_on_radiobutton, H.soft_mode_off_radiobutton}
0152 radiobutton_group = [H.soft_mode_on_radiobutton, H.soft_mode_off_radiobutton];
0153 set(radiobutton_group, 'Value', 0);
0154 set(hObj, 'Value', 1);
0155
0156
0157 if hObj == H.soft_mode_on_radiobutton
0158 set(H.variance_orientation_on_radiobutton, 'Value', 1);
0159 set(H.variance_orientation_off_radiobutton, 'Value', 0);
0160 else
0161 set(H.variance_orientation_on_radiobutton, 'Value', 0);
0162 set(H.variance_orientation_off_radiobutton, 'Value', 1);
0163 end
0164 case {H.cont_pr_on_radiobutton, H.cont_pr_off_radiobutton}
0165 radiobutton_group = [H.cont_pr_on_radiobutton, H.cont_pr_off_radiobutton];
0166 set(radiobutton_group, 'Value', 0);
0167 set(hObj, 'Value', 1);
0168 case {H.temporal_filter_on_radiobutton, H.temporal_filter_off_radiobutton}
0169 radiobutton_group = ...
0170 [H.temporal_filter_on_radiobutton, H.temporal_filter_off_radiobutton];
0171 set(radiobutton_group, 'Value', 0);
0172 set(hObj, 'Value', 1);
0173 case {H.trial_average_on_radiobutton, H.trial_average_off_radiobutton}
0174 radiobutton_group = ...
0175 [H.trial_average_on_radiobutton, H.trial_average_off_radiobutton];
0176 set(radiobutton_group, 'Value', 0);
0177 set(hObj, 'Value', 1);
0178 case {H.expand_spatial_filter_on_radiobutton, H.expand_spatial_filter_off_radiobutton}
0179 radiobutton_group = ...
0180 [H.expand_spatial_filter_on_radiobutton, H.expand_spatial_filter_off_radiobutton];
0181 set(radiobutton_group, 'Value', 0);
0182 set(hObj, 'Value', 1);
0183 case {H.variance_orientation_on_radiobutton, H.variance_orientation_off_radiobutton}
0184 radiobutton_group = ...
0185 [H.variance_orientation_on_radiobutton, H.variance_orientation_off_radiobutton];
0186 set(radiobutton_group, 'Value', 0);
0187 set(hObj, 'Value', 1);
0188 case {H.patch_size_normalization_on_radiobutton, H.patch_size_normalization_off_radiobutton}
0189 radiobutton_group = ...
0190 [H.patch_size_normalization_on_radiobutton, H.patch_size_normalization_off_radiobutton];
0191 set(radiobutton_group, 'Value', 0);
0192 set(hObj, 'Value', 1);
0193 case {H.remove_crossed_area_on_radiobutton, H.remove_crossed_area_off_radiobutton}
0194 radiobutton_group = ...
0195 [H.remove_crossed_area_on_radiobutton, H.remove_crossed_area_off_radiobutton];
0196 set(radiobutton_group, 'Value', 0);
0197 set(hObj, 'Value', 1);
0198 case H.OK_push
0199 bayes_parm_advanced_close(H.figure, true);
0200 case H.CANCEL_push
0201 bayes_parm_advanced_close(H.figure, false);
0202 end
0203
0204 function set_gui_parms(data, bayes_parm)
0205
0206
0207
0208
0209
0210 if isempty(bayes_parm)
0211 return;
0212 end
0213 H = data.H;
0214
0215
0216 set(H.a0_act_checkbox, 'Value', ...
0217 bayes_parm_editor(data.main_obj, 'get_a0_act_auto'));
0218 H = update_a0_act_mode(H);
0219
0220
0221 set(H.a0_edit, 'String', num2str(bayes_parm.a0));
0222 set(H.a0_act_edit, 'String', num2str(bayes_parm.a0_act));
0223 set(H.Ta0_edit, 'String', num2str(bayes_parm.Ta0));
0224 set(H.Ta0_act_edit, 'String', num2str(bayes_parm.Ta0_act));
0225 set(H.v0_edit, 'String', num2str(bayes_parm.v0));
0226 set(H.Tv0_edit, 'String', num2str(bayes_parm.Tv0));
0227 set(H.Npre_train_edit, 'String', num2str(bayes_parm.Npre_train));
0228 set(H.Ntrain_edit, 'String', num2str(bayes_parm.Ntrain));
0229 set(H.skip_edit, 'String', num2str(bayes_parm.skip));
0230
0231
0232 set(H.cosval_edit, 'String', num2str(bayes_parm.cosval));
0233
0234
0235
0236
0237
0238 set(H.reduce_global_edit, 'String', num2str(bayes_parm.reduce_global));
0239
0240 common = bayes_parm_editor_get_basic_gui_common(data.main_obj);
0241 if length(bayes_parm.basisfile_global) == 0
0242
0243
0244 set(H.basisfile_global_listbox, 'String', common.basis_files);
0245 else
0246
0247 set(H.basisfile_global_listbox, 'String', bayes_parm.basisfile_global);
0248 end
0249
0250
0251 set(H.area_key_global_popup, 'String', common.area_keys);
0252 area_keys = get(H.area_key_global_popup, 'String');
0253 idx = strmatch(bayes_parm.area_key_global, area_keys, 'exact');
0254 if ~isempty(idx)
0255 set(H.area_key_global_popup, 'Value', idx);
0256 else
0257 set(H.area_key_global_popup, 'Value', 1);
0258 end
0259
0260
0261 set(H.Rfilt_global_edit, 'String', num2str(1e3*bayes_parm.Rfilt_global));
0262
0263
0264 if bayes_parm.cont_pr == ON
0265 set(H.cont_pr_on_radiobutton, 'Value', 1);
0266 set(H.cont_pr_off_radiobutton, 'Value', 0);
0267 else
0268 set(H.cont_pr_on_radiobutton, 'Value', 0);
0269 set(H.cont_pr_off_radiobutton, 'Value', 1);
0270 end
0271
0272 if bayes_parm.soft_mode == ON
0273 set(H.soft_mode_on_radiobutton, 'Value', 1);
0274 set(H.soft_mode_off_radiobutton, 'Value', 0);
0275 else
0276 set(H.soft_mode_on_radiobutton, 'Value', 0);
0277 set(H.soft_mode_off_radiobutton, 'Value', 1);
0278 end
0279
0280 if bayes_parm.temporal_filter == ON
0281 set(H.temporal_filter_on_radiobutton, 'Value', 1);
0282 set(H.temporal_filter_off_radiobutton, 'Value', 0);
0283 else
0284 set(H.temporal_filter_on_radiobutton, 'Value', 0);
0285 set(H.temporal_filter_off_radiobutton, 'Value', 1);
0286 end
0287
0288 if bayes_parm.trial_average == ON
0289 set(H.trial_average_on_radiobutton, 'Value', 1);
0290 set(H.trial_average_off_radiobutton, 'Value', 0);
0291 else
0292 set(H.trial_average_on_radiobutton, 'Value', 0);
0293 set(H.trial_average_off_radiobutton, 'Value', 1);
0294 end
0295
0296 if bayes_parm.expand_spatial_filter == ON
0297 set(H.expand_spatial_filter_on_radiobutton, 'Value', 1);
0298 set(H.expand_spatial_filter_off_radiobutton, 'Value', 0);
0299 else
0300 set(H.expand_spatial_filter_on_radiobutton, 'Value', 0);
0301 set(H.expand_spatial_filter_off_radiobutton, 'Value', 1);
0302 end
0303
0304 if bayes_parm.variance_orientation == ON
0305 set(H.variance_orientation_on_radiobutton, 'Value', 1);
0306 set(H.variance_orientation_off_radiobutton, 'Value', 0);
0307 else
0308 set(H.variance_orientation_on_radiobutton, 'Value', 0);
0309 set(H.variance_orientation_off_radiobutton, 'Value', 1);
0310 end
0311
0312 if ~isfield(bayes_parm, 'patch_norm')
0313 bayes_parm.patch_norm = ON;
0314 end
0315 if bayes_parm.patch_norm == ON
0316 set(H.patch_size_normalization_on_radiobutton, 'Value', 1);
0317 set(H.patch_size_normalization_off_radiobutton, 'Value', 0);
0318 else
0319 set(H.patch_size_normalization_on_radiobutton, 'Value', 0);
0320 set(H.patch_size_normalization_off_radiobutton, 'Value', 1);
0321 end
0322
0323 if ~isfield(bayes_parm, 'remove_crossed_area')
0324 bayes_parm.remove_crossed_area = ON;
0325 end
0326 if bayes_parm.remove_crossed_area == ON
0327 set(H.remove_crossed_area_on_radiobutton, 'Value', 1);
0328 set(H.remove_crossed_area_off_radiobutton, 'Value', 0);
0329 else
0330 set(H.remove_crossed_area_on_radiobutton, 'Value', 0);
0331 set(H.remove_crossed_area_off_radiobutton, 'Value', 1);
0332 end
0333
0334 set(H.noise_reg_edit, 'String', num2str(bayes_parm.noise_reg));
0335 set(H.Fdmin_edit, 'String', num2str(bayes_parm.Fdmin));
0336 set(H.a_min_edit, 'String', num2str(bayes_parm.a_min));
0337 set(H.a_max_edit, 'String', num2str(bayes_parm.a_max));
0338
0339 set(H.tan_var_edit, 'String', num2str(bayes_parm.tan_var));
0340 set(H.var_max_edit, 'String', num2str(bayes_parm.var_max));
0341
0342 function [bayes_parm, a0_act_auto] = get_gui_parms(H)
0343
0344
0345
0346
0347
0348
0349
0350
0351 a0_act_auto = get(H.a0_act_checkbox, 'Value');
0352
0353
0354 try
0355 bayes_parm.a0 = eval(get(H.a0_edit, 'String'));
0356 a0_act = get(H.a0_act_edit, 'String');
0357 if isempty(a0_act)
0358 bayes_parm.a0_act = [];
0359 else
0360 bayes_parm.a0_act = eval(get(H.a0_act_edit, 'String'));
0361 end
0362 bayes_parm.Ta0 = eval(get(H.Ta0_edit, 'String'));
0363 bayes_parm.Ta0_act = eval(get(H.Ta0_act_edit, 'String'));
0364 bayes_parm.v0 = eval(get(H.v0_edit, 'String'));
0365 bayes_parm.Tv0 = eval(get(H.Tv0_edit, 'String'));
0366 bayes_parm.Ntrain = eval(get(H.Ntrain_edit, 'String'));
0367 bayes_parm.Npre_train = eval(get(H.Npre_train_edit, 'String'));
0368 bayes_parm.skip = eval(get(H.skip_edit, 'String'));
0369 catch
0370 errordlg('Please confirm Prior and VB estimation parameter.', 'error');
0371 rethrow(lasterror);
0372 end
0373
0374
0375
0376
0377
0378
0379
0380
0381
0382
0383
0384 try
0385 bayes_parm.reduce_global = eval(['[' get(H.reduce_global_edit, 'String') ']']);
0386 bayes_parm.Rfilt_global = 1e-3*eval(['[' get(H.Rfilt_global_edit, 'String') ']']);
0387 catch
0388 errordlg('Please confirm Global window parameter.', 'error');
0389 rethrow(lasterror);
0390 end
0391 bayes_parm.basisfile_global = get(H.basisfile_global_listbox, 'String');
0392 area_keys = get(H.area_key_global_popup, 'String');
0393 idx = get(H.area_key_global_popup, 'Value');
0394 if ischar(area_keys)
0395 bayes_parm.area_key_global = area_keys;
0396 else
0397 bayes_parm.area_key_global = area_keys{idx};
0398 end
0399
0400
0401 if get(H.cont_pr_on_radiobutton, 'Value')
0402 bayes_parm.cont_pr = ON;
0403 else
0404 bayes_parm.cont_pr = OFF;
0405 end
0406
0407 if get(H.soft_mode_on_radiobutton, 'Value')
0408 bayes_parm.soft_mode = ON;
0409 else
0410 bayes_parm.soft_mode = OFF;
0411 end
0412
0413 if get(H.temporal_filter_on_radiobutton, 'Value')
0414 bayes_parm.temporal_filter = ON;
0415 else
0416 bayes_parm.temporal_filter = OFF;
0417 end
0418
0419 if get(H.trial_average_on_radiobutton, 'Value');
0420 bayes_parm.trial_average = ON;
0421 else
0422 bayes_parm.trial_average = OFF;
0423 end
0424
0425 if get(H.expand_spatial_filter_on_radiobutton, 'Value')
0426 bayes_parm.expand_spatial_filter = ON;
0427 else
0428 bayes_parm.expand_spatial_filter = OFF;
0429 end
0430
0431 if get(H.variance_orientation_on_radiobutton, 'Value')
0432 bayes_parm.variance_orientation = ON;
0433 else
0434 bayes_parm.variance_orientation = OFF;
0435 end
0436
0437 if get(H.patch_size_normalization_on_radiobutton, 'Value')
0438 bayes_parm.patch_norm = ON;
0439 else
0440 bayes_parm.patch_norm = OFF;
0441 end
0442 if get(H.remove_crossed_area_on_radiobutton, 'Value')
0443 bayes_parm.remove_crossed_area = ON;
0444 else
0445 bayes_parm.remove_crossed_area = OFF;
0446 end
0447
0448 try
0449 bayes_parm.noise_reg = eval(get(H.noise_reg_edit, 'String'));
0450 bayes_parm.Fdmin = eval(get(H.Fdmin_edit, 'String'));
0451 bayes_parm.cosval = eval(get(H.cosval_edit, 'String'));
0452 bayes_parm.a_min = eval(get(H.a_min_edit, 'String'));
0453 bayes_parm.a_max = eval(get(H.a_max_edit, 'String'));
0454
0455 bayes_parm.tan_var = eval(get(H.tan_var_edit, 'String'));
0456 bayes_parm.var_max = eval(get(H.var_max_edit, 'String'));
0457 catch
0458 errordlg('Please confirm Optional parameter.', 'error');
0459 rethrow(lasterror);
0460 end
0461
0462 function H = update_a0_act_mode(H)
0463
0464
0465
0466
0467
0468
0469 if get(H.a0_act_checkbox, 'Value') == 1
0470 set(H.a0_act_edit, 'Enable', 'off');
0471 else
0472 set(H.a0_act_edit, 'Enable', 'on');
0473 end