📄 struct_session_profile_ui.m
字号:
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 + -