⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 erp_session_profile_ui.m

📁 绝对经典,老外制作的功能强大的matlab实现PLS_TOOBOX
💻 M
📖 第 1 页 / 共 4 页
字号:
        'Label', 'S&ave as', ...
   	'Callback','erp_session_profile_ui(''MENU_SAVE_AS_PLS_SESSION_INFO'');', ...
        'Tag', 'SaveAsPLSsession');
   m1 = uimenu(h_file, ...
        'Label', '&Close', ...
   	'Callback','erp_session_profile_ui(''MENU_CLOSE_SESSION_INPUT'');', ...
        'Tag', 'CloseSsessionInput');

   h_file = uimenu('Parent',h0, ...
	'Label', '&Edit', ...
	'Tag', 'EditMenu');
   m1 = uimenu(h_file, ...
        'Label', 'Change Data Paths', ...
   	'Callback','erp_session_profile_ui(''MENU_PATH_PLS_SESSION_INFO'');', ...
	'Enable','off', ...
        'Tag', 'PathPLSsessionMenu');
   m1 = uimenu(h_file, ...
	'separator', 'on', ...
        'Label', '&Clear Session', ...
   	'Callback','erp_session_profile_ui(''MENU_CLEAR_PLS_SESSION_INFO'');', ...
        'Tag', 'ClearPLSsessionMenu');

   h_file = uimenu('Parent',h0, ...
	'Label', '&Datamat', ...
	'Tag', 'DatamatMenu');
   m1 = uimenu(h_file, ...
        'Label', '&Create Datamat File ...', ...
   	'Callback','erp_session_profile_ui(''MENU_CREATE_DATAMAT'');', ...
        'Tag', 'CreateDatamatMenu');
   m1 = uimenu(h_file, ...
        'Label', '&Modify Datamat File ...', ...
   	'Callback','erp_session_profile_ui(''MENU_MODIFY_DATAMAT'');', ...
        'Tag', 'ModifyDatamatMenu');

   %  Help submenu
   %
   Hm_topHelp = uimenu('Parent',h0, ...
           'Label', '&Help', ...
           'Tag', 'Help');

%           'Callback','rri_helpfile_ui(''erp_session_profile_hlp.txt'',''How to use SESSION PROFILE'');', ...
   Hm_how = uimenu('Parent',Hm_topHelp, ...
           'Label', '&How to use this window?', ...
           'Callback','web([''file:///'', which(''UserGuide.htm''), ''#_Toc128820716'']);', ...
	   'visible', 'on', ...
           'Tag', 'How');

   Hm_new = uimenu('Parent',Hm_topHelp, ...
           'Label', '&What''s new', ...
	   'Callback','rri_helpfile_ui(''whatsnew.txt'',''What''''s new'');', ...
           'Tag', 'New');
   Hm_about = uimenu('Parent',Hm_topHelp, ...
           'Label', '&About this program', ...
           'Tag', 'About', ...
           'Tag', 'About', ...
           'CallBack', 'plsgui_version');

   setappdata(h0,'curr_dir',curr_dir);
   setappdata(gcf,'SessionChanOrder','');
   ClearSessionInfo(1);

   return;						% init


%----------------------------------------------------------------------------

function delete_fig()
    if (CloseSessionInput == 1);
        curr_dir = getappdata(gcf,'curr_dir');
	% cd(curr_dir);
        % uiresume
	close(gcbf);
    end

    return


%----------------------------------------------------------------------------

function ClearSessionInfo(init_flag)
%  init_flag = 0  for clear operation
%  init_flag = 1  for initialization
%

   if (init_flag == 0 & ChkModified == 0)
      return;			% error
   end;

   curr = getappdata(gcf,'curr_dir');

   session_info.description = '';
   session_info.pls_data_path = curr;
   session_info.contrastdata = '';
   session_info.behavdata = '';
   session_info.behavname = {};
   session_info.chan_order = '';
   session_info.eeg_format =[];
   session_info.num_contrast = 0;
   session_info.num_behavior = 0;
   session_info.num_channels = 0;
   session_info.prestim_baseline = 0;
   session_info.digit_interval = 2;
   session_info.datamat_prefix = '';
   session_info.num_conditions = 0;
   session_info.condition = {};
   session_info.num_subjects = 0;
   session_info.subject = {};
   session_info.subj_name = {};
   session_info.subj_files = {};
   session_info.chan_in_col = 0;
   session_info.system = '';
   session_info.num_subj_init = -1;
   setappdata(gcf,'reselect_subj', 0);

   SetSessionInfo(session_info,'')
   set(findobj(gcf,'Tag','PathPLSsessionMenu'),'enable','off');

   return;						% ClearSessionInfo


%----------------------------------------------------------------------------
%
%       set session field. called by load session & clear session
%
%----------------------------------------------------------------------------

function SetSessionInfo(session_info,session_file)

   setappdata(gcf,'SessionDescription',session_info.description);
   setappdata(gcf,'SessionPLSDir',session_info.pls_data_path);
   setappdata(gcf,'SessionContrastData',session_info.contrastdata);
   setappdata(gcf,'SessionBehavData',session_info.behavdata);

   if ~isfield(session_info,'behavname')
      session_info.behavname = {};
      for i=1:size(session_info.behavdata,2)
         session_info.behavname = [session_info.behavname, {['behav', num2str(i)]}];
      end
   end

   setappdata(gcf,'SessionBehavName',session_info.behavname);

   setappdata(gcf,'SessionChanOrder',session_info.chan_order);

   if ~isfield(session_info,'eeg_format')
      session_info.eeg_format = [];
   end

   setappdata(gcf,'eeg_format',session_info.eeg_format);

   setappdata(gcf,'SessionNumContrast',session_info.num_contrast);
   setappdata(gcf,'SessionNumBehavior',session_info.num_behavior);
   setappdata(gcf,'SessionNumChannels',session_info.num_channels);
   setappdata(gcf,'SessionPrestimBaseline',session_info.prestim_baseline);
   setappdata(gcf,'SessionDigitInterval',session_info.digit_interval);
   setappdata(gcf,'SessionDatamatPrefix',session_info.datamat_prefix);
   setappdata(gcf,'SessionNumConditions',session_info.num_conditions);
   setappdata(gcf,'SessionConditions',session_info.condition);
   setappdata(gcf,'SessionNumSubjects',session_info.num_subjects);
   setappdata(gcf,'SessionSubject',session_info.subject);
   setappdata(gcf,'subj_name',session_info.subj_name);
   setappdata(gcf,'subj_files',session_info.subj_files);
   setappdata(gcf,'chan_in_col',session_info.chan_in_col);

   if ~isfield(session_info,'system')
      session_info.system.class = 1;
      session_info.system.type = 1;
   end

   setappdata(gcf,'system',session_info.system);

   if ~isfield(session_info,'num_subj_init')
      session_info.num_subj_init = -1;
   end

   setappdata(gcf,'num_subj_init',session_info.num_subj_init);

   setappdata(gcf,'OldSessionInfo',session_info);
   setappdata(gcf,'SessionFile',session_file);

   if isempty(session_file)
      set(gcf,'Name','New ERP Session Information');
   else
      set(gcf,'Name',['ERP Session File: ' session_file]);
   end;

   return;						% SetSessionInfo


%----------------------------------------------------------------------------
%
%       get session field. called by saveSession, checkModify, & createDatamat
%
%----------------------------------------------------------------------------

function [session_info,session_file,old_session_info] = GetSessionInfo(),

   session_info.description = getappdata(gcf,'SessionDescription');
   session_info.pls_data_path = getappdata(gcf,'SessionPLSDir');
   session_info.contrastdata = getappdata(gcf,'SessionContrastData');
   session_info.behavdata = getappdata(gcf,'SessionBehavData');
   session_info.behavname = getappdata(gcf,'SessionBehavName');
   session_info.chan_order = getappdata(gcf,'SessionChanOrder');
   session_info.eeg_format = getappdata(gcf,'eeg_format');
   session_info.num_contrast = getappdata(gcf,'SessionNumContrast');
   session_info.num_behavior = getappdata(gcf,'SessionNumBehavior');
   session_info.num_channels = getappdata(gcf,'SessionNumChannels');
   session_info.prestim_baseline = getappdata(gcf,'SessionPrestimBaseline');
   session_info.digit_interval = getappdata(gcf,'SessionDigitInterval');
   session_info.datamat_prefix = getappdata(gcf,'SessionDatamatPrefix');
   session_info.num_conditions = getappdata(gcf,'SessionNumConditions');
   session_info.condition = getappdata(gcf,'SessionConditions');
   session_info.num_subjects = getappdata(gcf,'SessionNumSubjects');
   session_info.subject = getappdata(gcf,'SessionSubject');
   session_info.subj_name = getappdata(gcf,'subj_name');
   session_info.subj_files = getappdata(gcf,'subj_files');

   h = findobj(gcf,'Tag','chan_in_col');
   session_info.chan_in_col = get(h,'value');

   session_info.system = getappdata(gcf,'system');
   session_info.num_subj_init = getappdata(gcf,'num_subj_init');

   session_file = getappdata(gcf,'SessionFile');
   old_session_info = getappdata(gcf,'OldSessionInfo');

   return;						% GetSessionInfo


%----------------------------------------------------------------------------
%
%       Display sessioninfo, called AFTER load session & clear session
%
%----------------------------------------------------------------------------

function ShowSessionInfo()

   h = findobj(gcf,'Tag','SessionDescriptionEdit'); 
   set(h,'String',getappdata(gcf,'SessionDescription'));

   h = findobj(gcf,'Tag','PLSDataDirectoryEdit');
   set(h,'String',getappdata(gcf,'SessionPLSDir'));

   h = findobj(gcf,'Tag','PrestimBaselineEdit');
   set(h,'String',num2str(getappdata(gcf,'SessionPrestimBaseline')));

   h = findobj(gcf,'Tag','DigitIntervalEdit');
   set(h,'String',num2str(getappdata(gcf,'SessionDigitInterval')));

   datamat_prefix = getappdata(gcf,'SessionDatamatPrefix');
   [fpath fname] = fileparts(datamat_prefix);
   h = findobj(gcf,'Tag','DatamatPrefixEdit'); 
   set(h,'String',fname);

   num_contrast = getappdata(gcf,'SessionNumContrast');
   h = findobj(gcf,'Tag','NumberContrastEdit'); 
   set(h,'String',num_contrast);

   num_behavior = getappdata(gcf,'SessionNumBehavior');
   h = findobj(gcf,'Tag','NumberBehaviorEdit'); 
   set(h,'String',num_behavior);

   num_channels = getappdata(gcf,'SessionNumChannels');
   h = findobj(gcf,'Tag','NumberChannelsEdit'); 
   set(h,'String',num_channels);

   num_subjects = getappdata(gcf,'SessionNumSubjects');
   h = findobj(gcf,'Tag','NumberSubjectsEdit'); 
   set(h,'String',num_subjects);

   num_conds = getappdata(gcf,'SessionNumConditions');
   h = findobj(gcf,'Tag','NumberConditionsEdit'); 
   set(h,'String',num_conds);

   chan_in_col = getappdata(gcf,'chan_in_col');
   h = findobj(gcf,'Tag','chan_in_col');
   set(h,'value',chan_in_col);

   return;						% ShowSessionInfo


%----------------------------------------------------------------------------

function LoadSessionInfo()

   if ~isempty(getappdata(gcf,'OldSessionInfo'))
      if (ChkModified == 0)
         return;			% error
      end;
   end;
   [filename, pathname] = uigetfile( '*_ERPsession.mat', 'Load a PLS session file');

   if isequal(filename,0) | isequal(pathname,0)
      return;
   end;

   cd(pathname);
   session_file = fullfile(pathname, filename);

   try
      load(session_file);
   catch
      msg = 'ERROR: Cannot load the session information';
      set(findobj(gcf,'Tag','MessageLine'),'String',msg);
      return;
   end;

   if ~exist(session_info.pls_data_path,'dir') | ~exist(session_info.subject{1},'dir')
      msg = 'Invalid path inside. Click Edit menu to Change Data Paths';
      set(findobj(gcf,'Tag','MessageLine'),'String',msg);
   end

   %  move to the PLS directory
   %
   pls_dir = session_info.pls_data_path;
   if ( exist(pls_dir,'dir') == 7 ) 	   % specified directory exists
%      cd(pls_dir);
   else
%      msg = 'WARNING: The PLS directory does not exist!';
%      set(findobj(gcf,'Tag','MessageLine'),'String',msg);
   end;

   SetSessionInfo(session_info,session_file)
   set(findobj(gcf,'Tag','PathPLSsessionMenu'),'enable','on');

   return;						% LoadSessionInfo


%----------------------------------------------------------------------------

function status = SaveSessionInfo(save_as_flag)
%  save_as_flag = 0,  save to the loaded file
%  save_as_flag = 1,  save to a new file
%
   status = 0;

   if ~exist('save_as_flag','var')
     save_as_flag = 0;
   end;

   [session_info,session_file,old_session_info] = GetSessionInfo;

   if (getappdata(gcf,'reselect_subj'))
      msg = sprintf('All subjects need to be modified with new conditions before saving.');
      set(findobj(gcf,'Tag','MessageLine'),'String',['ERROR: ', msg]);
      return;
   end;

   if isempty(session_info.pls_data_path),
      msg = sprintf('A working directory needs to be specified before saving.');
      set(findobj(gcf,'Tag','MessageLine'),'String',['ERROR: ', msg]);
      return;
   end;

   if isempty(session_info.datamat_prefix),
      msg = sprintf('A datamat prefix needs to be specified before saving.');
      set(findobj(gcf,'Tag','MessageLine'),'String',['ERROR: ', msg]);
      return;
   end;

   if isempty(session_info.chan_order),
      msg = sprintf('A Channel data file needs to be specified before saving.');
      set(findobj(gcf,'Tag','MessageLine'),'String',['ERROR: ', msg]);
      return;
   end;

   if (session_info.num_subjects == 0),
      msg = sprintf('Subjects need to be selected before saving.');
      set(findobj(gcf,'Tag','MessageLine'),'String',['ERROR: ', msg]);
      return;
   end;

   if (session_info.num_conditions == 0),
      msg = sprintf('Conditions need to be selected before saving.');
      set(findobj(gcf,'Tag','MessageLine'),'String',['ERROR: ', msg]);
      return;
   end;

   if ~isempty(session_info.contrastdata)

      [r_contrast,c_contrast] = size(session_info.contrastdata);
      if (r_contrast ~= session_info.num_conditions * ...
		session_info.num_subjects)
         msg = sprintf('Rows in contrast data file do not match.');
         set(findobj(gcf,'Tag','MessageLine'),'String',['ERROR: ', msg]);
         return;
      end;

      %  check the degree of freedom, which will be num_conditions - 1
      %
      if c_contrast ~= (session_info.num_conditions - 1)
         msg = sprintf('Cols in contrast data file do not match.');
         set(findobj(gcf,'Tag','MessageLine'),'String',['ERROR: ', msg]);
         return;
      end;
   end

   if ~isempty(session_info.behavdata)

      [r_behav,c_behav] = size(session_info.behavdata);
      if (r_behav ~= session_info.num_conditions * session_info.num_subjects)
         msg = sprintf('Rows in behavior data file do not match.');
         set(findobj(gcf,'Tag','MessageLine'),'String',['ERROR: ', msg]);
         return;
      end;
   end

   if mod(session_info.prestim_baseline, session_info.digit_interval)
      msg = sprintf('Please choose a Prestim can be divided by Interval without remainder.');
      set(findobj(gcf,'Tag','MessageLine'),'String',['ERROR: ', msg]);
      return;
   end

   if (save_as_flag ~= 0) | isempty(session_file)
      [filename, pathname] = ...
		uiputfile([session_info.datamat_prefix, '_ERPsession.mat'], ...
		'Save the PLS session information');

      if isequal(filename,0)
         session_file = '';
         msg1 = ['ERROR: No file is saved.'];
%         uiwait(msgbox(msg1,'Uncompleted','modal'));
         return;
      else
         if ~rri_chkfname(filename, 'ERP', 'session')
            msg = ['File name must be ended with _ERPsession.mat'];
            set(findobj(gcf,'Tag','MessageLine'),'String',['ERROR: ', msg]);
            session_file = '';
            return;
         end

         session_file = [pathname, filename];
      end
   else
      [pathname, filename] = rri_fileparts(session_file);
   end;

   create_ver = plsgui_vernum;

   try
      save (session_file, 'session_info', 'create_ver');
   catch
      msg = sprintf('Cannot save session information to ''%s'' ',filename);
      set(findobj(gcf,'Tag','MessageLine'),'String',['ERROR: ', msg]);
      return;
   end;

if 0
   done = 0;

   while ~done
      try
         save (session_file, 'session_info', 'create_ver');
         done = 1;
      catch
      [filename, pathname] = uiputfile('_ERPsession.mat', ...
                'File can not open, please try again');
         if isequal(filename,0)
            session_file = [];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -