📄 pet_session_profile_ui.m
字号:
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','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);
set(h,'TooltipString',pls_data_dir);
setappdata(gcf,'SessionPLSDir',pls_data_dir);
cd(pls_data_dir);
end;
return; % SelectPLSDataDir
%----------------------------------------------------------------------------
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_subj_files = getappdata(gcf,'subj_files');
% Input conditions
%
[new_condition, subj_files, reselect_subj] = ...
rri_input_condition_ui(condition, 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,'subj_files', subj_files);
setappdata(gcf,'reselect_subj', reselect_subj);
return; % EditConditions
%----------------------------------------------------------------------------
function EditSubjects()
num_subj_init = getappdata(gcf,'num_subj_init');
num_subjects = getappdata(gcf,'SessionNumSubjects');
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));
% edit the names of subjects
%
[subjects, subj_files, num_subj_init, img_ext] = ...
rri_input_subject_ui(old_subjects, old_subj_files, ...
condition, selected_conditions, num_subj_init, img_ext);
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,'SessionSubject',subjects);
setappdata(gcf,'subj_name', subj_name);
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,'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,'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 PET 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.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.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;
pet_create_datamat_ui({session_file});
return; % CreateDatamat
%------------------------------------------------------------------------------
function ModifyBehav
session_file = getappdata(gcbf,'SessionFile');
if isempty(session_file)
return;
end
load(session_file);
datamat_file = fullfile(session_info.pls_data_path, ...
[session_info.datamat_prefix, '_PETdatamat.mat']);
load(datamat_file);
repeat = 1;
while repeat
[new_behavdata, new_behavname] = ...
rri_edit_behav(num2str(behavdata),behavname,'Edit Behavior Data');
if isempty(new_behavname) | isempty(new_behavdata)
return;
elseif size(datamat,1) == size(str2num(new_behavdata),1)
repeat = 0;
else
msg = ['Number of rows should be equal to ' num2str(size(datamat,1))];
uiwait(msgbox(msg, 'Error'));
repeat = 1;
end
end
if isequal(new_behavname, behavname) & isequal(str2num(new_behavdata), behavdata)
return;
end
if ~exist('create_ver','var')
create_ver = plsgui_vernum;
end
behavdata = str2num(new_behavdata);
behavname = new_behavname;
save(datamat_file,'behavdata','behavname','coords','create_ver', ...
'datamat','dims','origin','session_file','session_info', ...
'voxel_size');
msg = 'Datamat has been modified with new behavior data';
uiwait(msgbox(msg, 'Error'));
return; % ModifyBehav
%----------------------------------------------------------------------------
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,'SessionSubject',session_info.subject);
return; % PathSessionInfo
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -