Home > functions > gui > bayes_parm_editor_dir > advanced_parm > bayes_parm_advanced_gui.m

bayes_parm_advanced_gui

PURPOSE ^

This function shows bayes advanced parameters editor gui.

SYNOPSIS ^

function varargout = bayes_parm_advanced_gui(fig, command, varargin)

DESCRIPTION ^

 This function shows bayes advanced parameters editor gui.



 Copyright (C) 2011, ATR All Rights Reserved.
 License : New BSD License(see VBMEG_LICENSE.txt)

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SUBFUNCTIONS ^

SOURCE CODE ^

0001 function varargout = bayes_parm_advanced_gui(fig, command, varargin)
0002 % This function shows bayes advanced parameters editor gui.
0003 %
0004 %
0005 %
0006 % Copyright (C) 2011, ATR All Rights Reserved.
0007 % License : New BSD License(see VBMEG_LICENSE.txt)
0008 
0009 %
0010 % --- Previous check
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 % --- Main Procedure
0021 %
0022 
0023 % load data (@see bayes_parm_advanced_init)
0024 data = guidata(fig);
0025 H = data.H; % component handles
0026 
0027 switch(command)
0028     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0029     % GUI initialize/exit/update functions
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     % GUI component handles getter function
0069     %
0070     case 'get_gui_handles'
0071         varargout{1} = H;
0072 
0073     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0074     % GUI component's call back function
0075     case 'callback'
0076         hObj = varargin{1};
0077         data = callback(data, hObj);
0078 end
0079 
0080 function H = init(H)
0081 %
0082 % This function initialize advanced parameter editor GUI.
0083 %
0084 % [IN]  H : structure of advanced parm gui object handles.
0085 %       bayes_parm : bayes parameters.
0086 % [OUT] H : structure of advanced parm gui object handles.
0087 %
0088     % singleton
0089     if isfield(H, 'fig')
0090         figure(H.fig);
0091         return;
0092     end
0093     
0094     % open figure
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 % callback function for bayes advanced parameter gui.
0103 % [IN]
0104 %    data : application data (@see bayes_parm_advanced_init)
0105 %    hObj : event component
0106 % [OUT]
0107 %    data : some updated application data
0108 
0109     global vbmeg_inst;
0110     define = vbmeg_inst.const;
0111     
0112     H = data.H; % component handles
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         %case H.reduce_slider
0119         %reduce_str = num2str(get(H.reduce_slider, 'Value'));
0120         %set(H.reduce_edit, 'String', reduce_str);
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         % soft_mode = ON,  --> variance_orientation = ON
0156         %           = OFF, --> variance_orientation = OFF
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 % set parameters to gui.
0206 % [IN]
0207 %           data : application data (@see bayes_parm_advanced_init)
0208 %     bayes_parm : initialize parameter.
0209 
0210     if isempty(bayes_parm)
0211         return;
0212     end
0213     H = data.H; % component handles
0214     
0215     % This is not a member of bayes_parm
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     % Prior and VB estimation parameters
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     % Focal parameters
0232     set(H.cosval_edit, 'String', num2str(bayes_parm.cosval));
0233     % set(H.Rfilt_edit, 'String', num2str(bayes_parm.Rfilt));
0234     % set(H.reduce_edit, 'String', num2str(bayes_parm.reduce));
0235     % set(H.reduce_slider, 'Value', bayes_parm.reduce);
0236     
0237     % Global window parameters
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         % There is no parameter.
0243         % default is same with basic gui's basis files.
0244         set(H.basisfile_global_listbox, 'String', common.basis_files);
0245     else
0246         % There is parameter.
0247         set(H.basisfile_global_listbox, 'String', bayes_parm.basisfile_global);
0248     end
0249     
0250     % area_key_global
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     % Rfilt_global
0261     set(H.Rfilt_global_edit, 'String', num2str(1e3*bayes_parm.Rfilt_global));
0262 
0263     % Optional parameters
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 % This function gets a advanced bayes parameters from GUI.
0344 % [IN]
0345 %    H : structure of all object handles
0346 % [OUT]
0347 %    bayes_parm : bayes advanced parameters.
0348 %    a0_act_auto: a0_act setting mode is auto or not(1 or 0)
0349 %
0350 
0351     a0_act_auto = get(H.a0_act_checkbox, 'Value'); % This is not a member of bayes_parm
0352 
0353     % Prior and VB estimation parameters
0354     try
0355         bayes_parm.a0 = eval(get(H.a0_edit, 'String'));
0356         a0_act = get(H.a0_act_edit, 'String'); % a0_act is special value. [] is available.
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     % Focal parameters
0375     %try
0376         %bayes_parm.Rfilt = eval(['[' get(H.Rfilt_edit, 'String') ']']);
0377         %bayes_parm.reduce = eval(get(H.reduce_edit, 'String'));
0378         %catch
0379         %errordlg('Please confirm Focal window parameter.', 'error');
0380         %rethrow(lasterror);
0381         %end
0382 
0383     % Global window
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     % Optional parameters
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 % This function changes GUI property of a0_act_edit.
0464 % [IN]
0465 %    H : all component handles
0466 % [OUT]
0467 %    H : all component handles
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

Generated on Tue 27-Aug-2013 11:46:04 by m2html © 2005