📄 erp_single_folder.m
字号:
%
Hm_topHelp = uimenu('Parent',h0, ...
'Label', '&Help', ...
'Tag', 'Help');
Hm_how = uimenu('Parent',Hm_topHelp, ...
'Label', '&How to use this window?', ...
'Callback','rri_helpfile_ui(''erp_session_profile_hlp.txt'',''How to use SESSION PROFILE'');', ...
'visible', 'off', ...
'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 = [];
msg1 = ['ERROR: No file is saved.'];
% uiwait(msgbox(msg1,'Uncompleted','modal'));
return;
else
session_file = [pathname, filename];
end
end;
end
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','PathPLSsessionMenu'),'enable','on');
status = 1;
return; % SaveSessionInfo
%----------------------------------------------------------------------------
function status = CloseSessionInput()
if (ChkModified == 0)
status = 0;
return; % error
end;
status = 1;
return; % CloseSessionInput
%----------------------------------------------------------------------------
function EditPLSDataDir
pls_dir = deblank(strjust(get(gcbo,'String'),'left'));
emptydir = 0;
emptypath = 0;
if isempty(pls_dir)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -