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

📄 struct_session_profile_ui.m

📁 绝对经典,老外制作的功能强大的matlab实现PLS_TOOBOX
💻 M
📖 第 1 页 / 共 4 页
字号:
       set(h,'TooltipString',pls_data_dir); 
       setappdata(gcf,'SessionPLSDir',pls_data_dir);
       cd(pls_data_dir);
   end;

   return;						% SelectPLSDataDir


%----------------------------------------------------------------------------
function EditDatasetDir

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

   emptydir = 0;

   if isempty(dataset_dir)
      emptydir = 1;
   end;

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

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

      msg = 'ERROR: Invalid input direcotry!'; 
      set(findobj(gcf,'Tag','MessageLine'),'String',msg);

   return;						% EditDatasetDir


%----------------------------------------------------------------------------
function SelectDatasetDir

   h = findobj(gcf,'Tag','DatasetDirectoryEdit');
   dataset_dir = rri_getdirectory({get(h,'String')});

   if ~isempty(dataset_dir),
       set(h,'String',dataset_dir); 
       set(h,'TooltipString',dataset_dir); 
       setappdata(gcf,'SessionDatasetDir',dataset_dir);
   end;

   return;						% SelectDatasetDir


%----------------------------------------------------------------------------
function EditBehavDataFile

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

   set(gcbo,'String',behav_data_file);

   if ~isempty(behav_data_file)
      if ( exist(behav_data_file,'file') == 2 )		% specified file exists
         setappdata(gcf,'SessionBehavDataFile',behav_data_file);
         return;
      elseif ( exist(behav_data_file,'dir') == 7 )		% it is a directory!
         msg = 'ERROR: The specified behav file is a direcotry!';
         set(findobj(gcf,'Tag','MessageLine'),'String',msg);
         setappdata(gcf,'SessionBehavDataFile','');
         return;
      else
         msg = 'ERROR: The specified behav file does not exist!';
         uiwait(msgbox(msg,'Error','modal'));
         return;
      end;
   else
%      msg = 'ERROR: Invalid input file!';
%      set(findobj(gcf,'Tag','MessageLine'),'String',msg);
      setappdata(gcf,'SessionBehavDataFile','');
      return;
   end;

   return;						% EditBehavDataFile


%----------------------------------------------------------------------------
function SelectBehavDataFile

   h = findobj(gcf,'Tag','BehavDataFileEdit');

   [filename,pathname]=uigetfile('*.*','Select Behavior Data File');
        
   if isequal(filename,0) | isequal(pathname,0)
      return;
   end;
   
   behav_data_file = [pathname, filename];

   set(h,'String',behav_data_file); 
   set(h,'TooltipString',behav_data_file); 
   setappdata(gcf,'SessionBehavDataFile',behav_data_file);

   return;						% SelectBehavDataFile


%----------------------------------------------------------------------------
function EditConditions()

   condition = getappdata(gcf,'SessionConditions');
   old_cond_filter = getappdata(gcf,'cond_filter');
   old_subj_files = getappdata(gcf,'subj_files');

   % Input conditions
   %
   [new_condition, cond_filter, subj_files, reselect_subj] = ...
	struct_input_condition_ui(condition, old_cond_filter, old_subj_files);

   num_conds = num2str(length(new_condition));
   set(findobj(gcf,'Tag','NumberConditionsEdit'),'String',num_conds);

   setappdata(gcf,'SessionNumConditions',length(new_condition));
   setappdata(gcf,'SessionConditions',new_condition);
   setappdata(gcf,'cond_filter', cond_filter);
   setappdata(gcf,'subj_files', subj_files);
   setappdata(gcf,'reselect_subj', reselect_subj);

   [p f e] = fileparts(cond_filter{1});
   setappdata(gcf,'img_ext', ['*' e]);

   return;						% EditConditions


%----------------------------------------------------------------------------
function EditSubjects()

   num_subj_init = getappdata(gcf,'num_subj_init');
   num_subjects = getappdata(gcf,'SessionNumSubjects');
   old_subj_name = getappdata(gcf,'subj_name');
   old_subjects = getappdata(gcf,'SessionSubject');
   old_subj_files = getappdata(gcf,'subj_files');
   img_ext = getappdata(gcf,'img_ext');
   condition = getappdata(gcf,'SessionConditions');
   selected_conditions = ones(1,length(condition));
   cond_filter = getappdata(gcf,'cond_filter');
   dataset_dir = getappdata(gcf,'SessionDatasetDir');

   % edit the names of subjects
   %
   [subj_name, subjects, subj_files, num_subj_init, img_ext] = ...
	struct_input_subject_ui(old_subj_name, old_subjects, old_subj_files, ...
	condition, selected_conditions, num_subj_init, img_ext, ...
	cond_filter, dataset_dir);

   num_subjs = num2str(length(subjects));
   set(findobj(gcf,'Tag','NumberSubjectsEdit'),'String',num_subjs);

   % use subject file name as subject name
   %
%   subj_name = [];
 %  for i=1:length(subjects)
  %    [fpath fname] = fileparts(subjects{i});
   %   subj_name{i} = fname;
   %end

   setappdata(gcf,'num_subj_init',num_subj_init);
   setappdata(gcf,'SessionNumSubjects',length(subjects));
   setappdata(gcf,'subj_name', subj_name);
   setappdata(gcf,'SessionSubject',subjects);
   setappdata(gcf,'subj_files', subj_files);
   setappdata(gcf,'img_ext', img_ext);
   setappdata(gcf,'reselect_subj', 0);

   return;						% EditSubjects


%----------------------------------------------------------------------------
function status = ChkModified()
% Output:
%          status = 0, error
% 	   status = 1, ok

   status = 1;

   [session_info,session_file,old_session_info] = GetSessionInfo;

   if (isequal(session_info,old_session_info) == 0),
      dlg_title = 'Session Information has been changed';
      msg = 'WARNING: The session information has been changed.  Do you want to save it?';
      response = questdlg(msg,dlg_title,'Yes','No','Cancel','Yes');

      switch response,
         case 'Yes'
 	      status = SaveSessionInfo;
         case 'Cancel'
 	      status = 0;
         case 'No'
 	      status = 2;
      end;
   end;

   return;						% ChkModified


%----------------------------------------------------------------------------
%
%       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,'SessionDatasetDir',session_info.dataset_path);
%   setappdata(gcf,'SessionBehavDataFile',session_info.behav_data_file);

   if ~isfield(session_info,'behavdata')
      session_info.num_behavior = 0;
   end
   setappdata(gcf,'SessionNumBehavior',session_info.num_behavior);

   if ~isfield(session_info,'behavdata')
      session_info.behavdata = [];
   end
   setappdata(gcf,'SessionBehavData',session_info.behavdata);

   if ~isfield(session_info,'behavname')
      session_info.behavname = {};
   end
   setappdata(gcf,'SessionBehavName',session_info.behavname);

   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,'cond_filter',session_info.cond_filter);
   setappdata(gcf,'subj_files',session_info.subj_files);

   if ~isfield(session_info,'img_ext')
      if isempty(session_file)
         session_info.img_ext = '*.img';
      else
         [p f e] = fileparts(session_info.subj_files{1});
         session_info.img_ext = ['*' e];
      end
   end

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

   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 STRUCT Session Information');
   else
      set(gcf,'Name',['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.dataset_path = getappdata(gcf,'SessionDatasetDir');
%   session_info.behav_data_file = getappdata(gcf,'SessionBehavDataFile');

   session_info.num_behavior = getappdata(gcf,'SessionNumBehavior');
   session_info.behavdata = getappdata(gcf,'SessionBehavData');
   session_info.behavname = getappdata(gcf,'SessionBehavName');

   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.cond_filter = getappdata(gcf,'cond_filter');
   session_info.subj_files = getappdata(gcf,'subj_files');
   session_info.img_ext = getappdata(gcf,'img_ext');
   session_info.num_subj_init = getappdata(gcf,'num_subj_init');

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

   return;						% GetSessionInfo


%----------------------------------------------------------------------------
function CreateDatamat(),

   %  make sure the session information has been saved
   %
   [session_info,session_file,old_session_info] = GetSessionInfo;

   if isempty(session_file) | isequal(session_info,old_session_info) == 0

       status = ChkModified;

       session_file = getappdata(gcf,'SessionFile');

       if isempty(session_file)
          % status = 2;
          return;
       end

       if (status == 0)
          return;
       elseif (status == 2)
          msg =  'ERROR: Save the session information before creating datamat.';
          set(findobj(gcf,'Tag','MessageLine'),'String',msg);
          return;
       end
   end;

   struct_create_datamat({session_file});

   return;						% CreateDatamat


%----------------------------------------------------------------------------
function ModifyDatamat()

   [datamat_file, datamat_path] =  ...
	uigetfile('*_STRUCTdatamat.mat', 'Open STRUCT Datamat');

   if (datamat_path == 0), return; end;
   datamat_file = fullfile(datamat_path, datamat_file);

   calling_fig = getappdata(gcf,'CallingFigure');
   this_fig = gcf;

   load(datamat_file, 'selected_subjects');
   modifier.selected_subjects = selected_subjects;

   h0 = gcf;
   h01 = struct_modify_datamat(modifier, datamat_file);

   if ~isempty(h01)
      setappdata(h0,'modify_fig',h01);
   end

%   close(calling_fig);
%   close(this_fig);

   return;						% ModifyDatamat


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

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

   old_session_info = getappdata(gcf,'OldSessionInfo');
   session_info = old_session_info;
   session_info = rri_changepath_se(session_info);

   if isempty(session_info)
      session_info = old_session_info;
   end

   setappdata(gcf,'SessionPLSDir',session_info.pls_data_path);
   setappdata(gcf,'SessionDatasetDir',session_info.dataset_path);

   return;						% PathSessionInfo

⌨️ 快捷键说明

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