Home > functions > gui > preAnalysis > trial_extractor > vb_trial_extractor_callback.m

vb_trial_extractor_callback

PURPOSE ^

Callback function for vb_trial_extractor.

SYNOPSIS ^

function vb_trial_extractor_callback(fig, hObj)

DESCRIPTION ^

 Callback function for vb_trial_extractor.
 This function is called when user operates.
 (push button, select line on listbox.)

 [USAGE]
    vb_trial_extractor_callback(fig);
 [IN]
     fig : figure handle of GUI.
    hObj : handle of the component.
 [OUT]
    none

 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:

SOURCE CODE ^

0001 function vb_trial_extractor_callback(fig, hObj)
0002 % Callback function for vb_trial_extractor.
0003 % This function is called when user operates.
0004 % (push button, select line on listbox.)
0005 %
0006 % [USAGE]
0007 %    vb_trial_extractor_callback(fig);
0008 % [IN]
0009 %     fig : figure handle of GUI.
0010 %    hObj : handle of the component.
0011 % [OUT]
0012 %    none
0013 %
0014 % Copyright (C) 2011, ATR All Rights Reserved.
0015 % License : New BSD License(see VBMEG_LICENSE.txt)
0016 
0017 %
0018 % --- Previous check
0019 %
0020 if ~exist('fig', 'var') || ~ishandle(fig) || isempty(fig)
0021     error('Invalid figure handle were specified.');
0022 end
0023 if ~exist('hObj', 'var')
0024     error('hObj is a required parameter.');
0025 end
0026 
0027 %
0028 % --- Main Procedure
0029 %
0030 %get(hObj, 'Tag') % debug
0031 data = guidata(fig);
0032 H    = data.H;
0033 
0034 switch(hObj)
0035     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0036     % Load/Save parameter
0037     case H.load_settings
0038         [d, f] = vb_file_select({'.trx.mat'}, ...
0039                  'Load batch parameter');
0040         if isempty(d), return; end
0041         file = [d, filesep, f{1}];
0042         data = vb_trial_extractor_load_parm(data, file);
0043         data = vb_trial_extractor_update_screen(data);
0044    case H.save_settings
0045         [d, f] = vb_file_select({'.trx.mat'}, ...
0046                   'Save batch parameter', true);
0047         if isempty(d), return; end
0048         file = [d, filesep, f{1}];
0049         vb_trial_extractor_save_parm(data, file);
0050 
0051     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0052     % Base file(Continous MEG/EEG-MAT)
0053     case H.continuous_file_edit
0054         file = get(hObj, 'String');
0055         data = vb_trial_extractor_set_continuous_file(data, file);
0056     case H.continuous_file_push
0057         [d, f] = vb_file_select({'.meg.mat', '.eeg.mat'}, ...
0058             'Select MEG/EEG file which contains continuous data');
0059         if isempty(d), return; end
0060         file = [d, filesep, f{1}];
0061         data = vb_trial_extractor_set_continuous_file(data, file);
0062     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0063     % Trial settings
0064     case { H.pretrigger_length_edit, H.posttrigger_length_edit}
0065         Value = get(hObj, 'String');
0066         Value = str2double(Value);
0067         if hObj == H.pretrigger_length_edit
0068             field = 'pretrigger_ms';
0069         elseif hObj == H.posttrigger_length_edit
0070             field = 'posttrigger_ms';
0071         end
0072         if isnan(Value) || ~isnumeric(Value) || Value <= 0
0073             set(hObj, 'String', '');
0074             data.trial_setting.(field) = 0;
0075             errordlg('Invalid value was specified. Please input positive value.', 'Trial settings');
0076         else
0077             % Get Pre|Post trigger settings
0078             data.trial_setting.(field) = Value;
0079         end
0080         data = vb_trial_extractor_update_screen(data);
0081     case H.minimum_distance_edit
0082         val = get(hObj, 'String');
0083         if isempty(val)
0084             % do nothing
0085             data.trial_setting.minimum_distance_ms = [];
0086         else
0087             val = str2double(val);
0088             if isnan(val) || ~isnumeric(val) || val < 0
0089                 errordlg('Invalid value was specified. Please input positive value. If empty is specified, stop checking.', 'Trial settings');
0090             else
0091                 data.trial_setting.minimum_distance_ms = val;
0092             end
0093         end
0094         data = vb_trial_extractor_update_screen(data);
0095         
0096     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0097     % Trigger settings
0098     case H.trigger_channel_listbox
0099         data = vb_trial_extractor_update_screen(data);
0100     case H.trigger_view_push
0101         data = vb_trial_extractor_preview_trial(data, 1);
0102     case H.ch_property_push
0103         data = vb_trial_extractor_show_channel_property(data);
0104     case H.trigger_type_popup
0105          data = vb_trial_extractor_update_screen(data);
0106     case H.trigger_slope_popup
0107     case H.trigger_level_edit
0108     case H.flag_pattern_push
0109         [data] = vb_trial_extractor_input_multi_pattern(data);
0110     case H.trigger_help_push
0111         fid = fopen(which('vb_trial_extractor_trig_help.txt'));
0112         if fid ~= -1
0113             help_txt = char(fread(fid, inf, 'char'))';
0114             vb_text_area('trigger', help_txt);
0115             fclose(fid);
0116         end
0117     case H.trigger_add_push
0118         % create trigger object
0119         trig_obj = vb_trial_extractor_create_trigger(data);
0120         % register created trigger
0121         Ntrigger = length(data.trigger_list);
0122         data.trigger_list{Ntrigger+1} = trig_obj;
0123         % update screen
0124         set(H.trigger_list_listbox, 'Value', 1);
0125         set(H.tag_listbox, 'Value', 1);
0126         data = vb_trial_extractor_update_screen(data);
0127     case {H.optional_parm_push, H.advanced_parm_push}
0128         trig_type_list  = get(H.trigger_type_popup, 'String');
0129         trig_type = trig_type_list{get(H.trigger_type_popup, 'Value')};
0130         switch(trig_type)
0131             case {'bit', 'integer'}
0132                 field = 'data.trigger_adjust_parameter';
0133                 caption = 'Adjustment parameter for digital trigger';
0134             case 'emg'
0135                 if hObj == H.optional_parm_push
0136                     field = 'data.emg_parm.optional_parm';
0137                     caption = 'EMG(Optional parameter)';
0138                 else
0139                     field = 'data.emg_parm.advanced_parm';
0140                     caption = 'EMG(Advanced parameter)';
0141                 end
0142             case 'voice'
0143                 if hObj == H.optional_parm_push
0144                     field = 'data.voice_parm.optional_parm';
0145                     caption = 'Voice(Optional parameter)';
0146                 else
0147                     field = 'data.voice_parm.advanced_parm';
0148                     caption = 'Voice(Advanced parameter)';
0149                 end
0150             otherwise
0151                 error('Unknown trigger type is selected.');
0152         end
0153 
0154         edit = true;
0155         parm = eval(field);
0156         while(edit)
0157         [parm, cancelled] = ...
0158             vb_edit_struct(parm, caption);
0159             if ~cancelled
0160                 try
0161 %                     if isempty(parm.Data_offset) || isnan(parm.Data_offset)
0162 %                         error('Invalid Data offset was specified.');
0163 %                     end
0164 %                     bin2dec(parm.Bitmask);
0165                     edit = false;
0166                     eval([field ' = parm;']);
0167                 catch
0168                     [msg, msg_f] = vb_get_error_msg(lasterror);
0169                     h = errordlg(msg_f, caption);
0170                     waitfor(h);
0171                     edit = true;
0172                 end
0173             else
0174                 return;
0175             end        
0176         end
0177     case H.trigger_list_view_push
0178         data = vb_trial_extractor_preview_trial(data, 2);
0179    case H.trigger_list_remove_push
0180         ix = get(H.trigger_list_listbox, 'Value');
0181         data.trigger_list(ix) = [];
0182         Ntrig = length(data.trigger_list);
0183         if max(ix) > Ntrig && Ntrig >= 1
0184             set(H.trigger_list_listbox, 'Value', Ntrig);
0185         end
0186         data = vb_trial_extractor_update_screen(data);
0187     case H.trigger_edit_push
0188          disp('Not implemented yet.');
0189     case H.trigger_detect_push
0190         data = vb_trial_extractor_extract_trial(data);
0191         data = vb_trial_extractor_update_screen(data);
0192 
0193     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0194     % Extracted trials
0195     case H.tag_listbox
0196         set(H.trial_set_listbox, 'Value', 1);
0197         data = vb_trial_extractor_update_screen(data);
0198     case H.trial_set_listbox
0199         data = vb_trial_extractor_update_screen(data);
0200     case H.tag_remove_push
0201         val = get(H.tag_listbox, 'Value');
0202         if ~isempty(val)
0203             data.label_list(val) = [];
0204             Ntag = length(data.label_list);
0205            if max(val) > Ntag && Ntag >= 1
0206                 set(H.tag_listbox, 'Value', Ntag);
0207             end
0208         end
0209         data = vb_trial_extractor_update_screen(data);
0210     case H.trial_add_push
0211         data = vb_trial_extractor_add_trial(data);
0212         data = vb_trial_extractor_update_screen(data);
0213     case H.trial_remove_push
0214         data = vb_trial_extractor_remove_trial(data);
0215         data = vb_trial_extractor_update_screen(data);
0216     case H.trial_edit_push
0217         data = vb_trial_extractor_edit_trial(data);
0218         data = vb_trial_extractor_update_screen(data);
0219     case H.tag_file_push
0220         row  = get(H.tag_listbox, 'Value');
0221         if isempty(row), return; end
0222         [d, f] = vb_file_select({'.txt'}, 'Select Label file(*.txt)');
0223         if isempty(d), return; end
0224         tag_file = [d, filesep, f{1}];
0225 
0226         tags = get(H.tag_listbox, 'String');
0227         selected_tags = tags(row);
0228 
0229         tag_spec.label_file = tag_file;
0230         tag_spec.base_label = selected_tags;
0231         tag_spec.overwrite  = false;
0232         data = vb_trial_extractor_tag_by_file(data, tag_spec);
0233         data = vb_trial_extractor_update_screen(data);
0234     case H.tag_selected_trial_push
0235         list_index = get(H.trial_set_listbox, 'Value')';
0236         if isempty(list_index), return; end
0237         new_tag = inputdlg('Input Label name : ', 'Create Label for selected trial.');
0238         if ~isempty(new_tag) && ~isempty(new_tag{1})
0239             data = vb_trial_extractor_tag_by_hand(data, list_index, new_tag{1});
0240             data = vb_trial_extractor_update_screen(data);
0241         end
0242     case H.trial_select_all_push
0243         Ntrial = length(get(H.trial_set_listbox, 'String'));
0244         set(H.trial_set_listbox, 'Value', [1:Ntrial]);
0245         data = vb_trial_extractor_update_screen(data);
0246     case H.channel_selection_push
0247         data = vb_trial_extractor_specify_display_channel(data);
0248     case H.preview_push
0249         data = vb_trial_extractor_preview_trial(data);
0250     case H.add_to_output_list_button
0251         tag_id_list = get(H.tag_listbox, 'Value')';
0252         data = vb_trial_extractor_add_tag_to_output_list(data, tag_id_list);
0253         data = vb_trial_extractor_update_screen(data);
0254     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0255     % Output file
0256     case H.output_file_remove_push
0257          idx = get(H.output_listbox, 'Value')';
0258          data = vb_trial_extractor_remove_output_file(data, idx);
0259          Nfile = size(data.output_file, 2);
0260          if max(idx) > Nfile && Nfile >= 1
0261              set(H.output_listbox, 'Value', Nfile);
0262          end
0263          data = vb_trial_extractor_update_screen(data);
0264     case H.output_settings_push
0265         cur.output_sampling_frequency = data.output_sample_freq;
0266         loop = true;
0267         while(loop)
0268             [cur, canceled] = vb_edit_struct(cur, 'Output settings');
0269             if canceled
0270                 loop = false;
0271             else
0272                 val = cur.output_sampling_frequency;
0273                 if ~isnan(val) && isnumeric(val) && val > 0
0274                     data.output_sample_freq = cur.output_sampling_frequency;
0275                     loop = false;
0276                 else
0277                     h = errordlg('Invalid value was specified. Please input positive value.',...
0278                              'Output sampling frequency');
0279                     uiwait(h);
0280                 end
0281             end
0282         end
0283     case H.output_file_push
0284         data = vb_trial_extractor_output_file(data);
0285 end
0286 
0287 guidata(fig, data);

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