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

📄 struct_session_profile_ui.m

📁 绝对经典,老外制作的功能强大的matlab实现PLS_TOOBOX
💻 M
📖 第 1 页 / 共 4 页
字号:

   ClearSessionInfo(1);

   return;						% init


%----------------------------------------------------------------------------
function delete_fig()
    if (CloseSessionInput == 1);
        uiresume
    end

    return


%----------------------------------------------------------------------------
function delete_figure()

    try
       load('pls_profile');
       pls_profile = which('pls_profile.mat');

       struct_session_profile_pos = get(gcbf,'position');

       save(pls_profile, '-append', 'struct_session_profile_pos');
    catch
    end

    calling_fig = getappdata(gcf,'CallingFigure');
    set(calling_fig,'visible','on');

    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 = pwd;
   if isempty(curr)
      curr = filesep;
   end

   session_info.description = '';
   session_info.pls_data_path = curr;
   session_info.dataset_path = '';
%   session_info.behav_data_file = '';
   session_info.num_behavior = 0;
   session_info.behavdata = [];
   session_info.behavname = {};
   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.cond_filter = {};
   session_info.subj_files = {};
   session_info.img_ext = '*.img';
   session_info.num_subj_init = -1;
   setappdata(gcf,'reselect_subj', 0);

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

   return;						% ClearSessionInfo

%----------------------------------------------------------------------------
function LoadSessionInfo()

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

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

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

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

   if ~exist(pls_session.session_info.pls_data_path,'dir') | ~exist(pls_session.session_info.dataset_path,'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 = pls_session.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(pls_session.session_info,session_file)
   set(findobj(gcf,'Tag','ModifyBehavMenu'),'enable','on');
   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.dataset_path),
      msg = sprintf('The dataset 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.behav_data_file),
%      msg = sprintf('A Behavior 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.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(0)
%   if ~isempty(session_info.behav_data_file)

      try
         behavdata = load(session_info.behav_data_file);
      catch
         msg = sprintf('Invalid behavior data file.');
         set(findobj(gcf,'Tag','MessageLine'),'String',['ERROR: ', msg]);
         return;
      end

      [r_behav,c_behav] = size(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;

   else
      behavdata = '';
   end

   if (save_as_flag ~= 0) | isempty(session_file)
      curr = pwd;
      if isempty(curr)
         curr = filesep;
      end

      savepwd = curr;
%      cd(session_info.pls_data_path);
      [filename, pathname] = ...
           uiputfile([session_info.datamat_prefix, '_STRUCTsession.mat'], ...
			'Save the PLS session information');

      if isequal(filename,0)
         cd(savepwd);
         return;
      end;

      if ~rri_chkfname(filename, 'STRUCT', 'session')
         msg = ['File name must be ended with _STRUCTsession.mat'];
         set(findobj(gcf,'Tag','MessageLine'),'String',['ERROR: ', msg]);
         session_file = '';
         return;
      end

      session_file = [pathname, filename];
      cd(savepwd);
   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;

   [fpath, fname, fext] = fileparts(session_file);
   msg = sprintf('Session information has been saved into ''%s'' ',[fname, fext]);
   set(findobj(gcf,'Tag','MessageLine'),'String',msg);

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

   set(gcf,'Name',['Session File: ' session_file]);
   set(findobj(gcf,'Tag','ModifyBehavMenu'),'enable','on');
   set(findobj(gcf,'Tag','PathPLSsessionMenu'),'enable','on');

   status = 1;

   return;						% SaveSessionInfo

%----------------------------------------------------------------------------
function status = CloseSessionInput()

   if (ChkModified == 0)
        status = 0;
        return;			% error
   end;

   status = 1;
   return;						% CloseSessionInput


%----------------------------------------------------------------------------
%
%       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','DatasetDirectoryEdit');
   set(h,'String',getappdata(gcf,'SessionDatasetDir'));

%   h = findobj(gcf,'Tag','BehavDataFileEdit');
%   set(h,'String',getappdata(gcf,'SessionBehavDataFile'));

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

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

   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);

   return;						% ShowSessionInfo


%----------------------------------------------------------------------------
function EditPLSDataDir

   pls_dir = deblank(strjust(get(gcbo,'String'),'left')); 

   emptydir = 0;
   emptypath = 0;

   if isempty(pls_dir)
      emptydir = 1;
   end;

   set(gcbo,'String',pls_dir);
   
   %  
   if (~emptydir)
      if ( exist(pls_dir,'dir') == 7 ) 	   % specified directory exists
         setappdata(gcf,'SessionPLSDir',pls_dir);
         cd(pls_dir)
         return;
      end;

      if ( exist(pls_dir,'file') == 2 )	   % it is a file!
         msg = 'ERROR: The specified direcotry is a file!';
         set(findobj(gcf,'Tag','MessageLine'),'String',msg);
         setappdata(gcf,'SessionPLSDir','');
         return;
      end;
   end;

   %   the directory does not exist, how about the parent directory ?
   %
   [fpath,fname,fext] = fileparts(pls_dir);

   if isempty(fpath)
      emptypath = 1;
   end;

   if (~emptydir & ~emptypath & exist(fpath,'dir') == 7 ) % parent directory exists
      dlg_title = 'PLS Directory';
      msg = 'The directory does not exist.  Do you want to create it?';
      response = questdlg(msg,dlg_title,'Yes','No','Yes');

      switch response,
         case 'Yes',
            status = mkdir(fpath,[fname fext]);
            if (status ~= 1)
               msg = sprintf('ERROR: Directory cannot be created');
               set(findobj(gcf,'Tag','MessageLine'),'String',msg);
               setappdata(gcf,'SessionPLSDir','');
            else
               setappdata(gcf,'SessionPLSDir',pls_dir);
               cd(pls_dir);
            end
               return;
         case 'No',
            set(gcbo,'String','');
            setappdata(gcf,'SessionPLSDir','');
      end; 
   else   
      msg = 'ERROR: Invalid input direcotry!'; 
      set(findobj(gcf,'Tag','MessageLine'),'String',msg);
   end;

   return;						% EditPLSDataDir


%----------------------------------------------------------------------------
function SelectPLSDataDir

   h = findobj(gcf,'Tag','PLSDataDirectoryEdit');
   pls_data_dir = rri_getdirectory({get(h,'String')});

   if ~isempty(pls_data_dir),
       set(h,'String',pls_data_dir); 

⌨️ 快捷键说明

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