📄 erp_single_folder.m
字号:
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 SelectContrastData
[filename,pathname]=uigetfile('*.*','Select Contrast Data File');
if isequal(filename,0) | isequal(pathname,0) % Cancel was clicked
return;
end;
contrastdata_file = [pathname, filename];
try
contrastdata = load(contrastdata_file);
catch % cannot open file
msg = ['ERROR: Could not open file'];
msgbox(msg,'ERROR','modal');
return;
end
setappdata(gcf,'SessionContrastData',contrastdata);
setappdata(gcf,'SessionNumContrast',size(contrastdata, 1));
set(findobj(gcf,'Tag','NumberContrastEdit'),'String',size(contrastdata,1));
return; % SelectContrastData
%----------------------------------------------------------------------------
function SelectBehavData
[filename,pathname]=uigetfile('*.*','Select Behavior Data File');
if isequal(filename,0) | isequal(pathname,0) % Cancel was clicked
return;
end;
behavdata_file = [pathname, filename];
try
behavdata = load(behavdata_file);
catch % cannot open file
msg = ['ERROR: Could not open file'];
msgbox(msg,'ERROR','modal');
return;
end
setappdata(gcf,'SessionBehavData',behavdata);
setappdata(gcf,'SessionNumBehavior',size(behavdata, 1));
set(findobj(gcf,'Tag','NumberBehaviorEdit'),'String',size(behavdata,1));
return; % SelectBehavData
%----------------------------------------------------------------------------
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');
condition = getappdata(gcf,'SessionConditions');
selected_conditions = ones(1,length(condition));
% edit the names of subjects
%
[subjects, subj_files, num_subj_init] = ...
rri_input_subject_ui(old_subjects, old_subj_files, ...
condition, selected_conditions, num_subj_init);
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,'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
%----------------------------------------------------------------------------
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;
calling_fig = getappdata(gcf,'CallingFigure');
close(calling_fig);
h_session = gcf;
erp_create_datamat({session_file});
close(h_session);
return; % CreateDatamat
%----------------------------------------------------------------------------
function ModifyDatamat()
[datamat_file, datamat_path] = ...
uigetfile('*_ERPdatamat.mat', 'Open ERP 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_channels', 'selected_subjects');
modifier.selected_channels = selected_channels;
modifier.selected_subjects = selected_subjects;
erp_plot_ui({datamat_file, 1});
h0 = gcf;
h01 = erp_modify_datamat(modifier, datamat_file, h0);
if ~isempty(h01)
setappdata(h0,'modify_fig',h01);
end
close(calling_fig);
close(this_fig);
return; % ModifyDatamat
%----------------------------------------------------------------------------
function EditContrastData
contrastdata = getappdata(gcf,'SessionContrastData');
contrastdata = rri_edit_string(num2str(contrastdata));
setappdata(gcf,'SessionContrastData',str2num(contrastdata));
setappdata(gcf,'SessionNumContrast',size(contrastdata, 1));
set(findobj(gcf,'Tag','NumberContrastEdit'), ...
'String',size(contrastdata,1));
return; % EditContrastData
%----------------------------------------------------------------------------
function EditBehavData
behavdata = getappdata(gcf,'SessionBehavData');
behavname = getappdata(gcf,'SessionBehavName');
[behavdata, behavname] = rri_edit_behav(num2str(behavdata), behavname, 'Edit Behavior Data');
setappdata(gcf,'SessionBehavData',str2num(behavdata));
setappdata(gcf,'SessionBehavName',behavname);
setappdata(gcf,'SessionNumBehavior',size(str2num(behavdata), 1));
set(findobj(gcf,'Tag','NumberBehaviorEdit'),'String',size(str2num(behavdata),1));
return; % EditBehavData
%----------------------------------------------------------------------------
function EditChanOrder
subject = getappdata(gcf,'SessionSubject');
subj_files = getappdata(gcf,'subj_files');
eeg_format = getappdata(gcf,'eeg_format');
prescan_fn = [subject{1}, filesep, subj_files{1,1}];
% prescan = load(prescan_fn); % prescan 1 wave
[prescan, eeg_format] = read_eeg(prescan_fn, eeg_format);
setappdata(gcf,'eeg_format',eeg_format);
h = findobj(gcf,'Tag','chan_in_col');
chan_in_col = get(h,'value');
if chan_in_col
prescan = prescan';
end
prescan_chan = size(prescan, 1);
chan_order = getappdata(gcf,'SessionChanOrder');
system = getappdata(gcf,'system');
if isempty(system)
system.class = 1;
system.type = 1;
end
[new_chan_order, new_system] = ...
erp_select_chan(num2str(chan_order), system, 'Edit Channel Order');
new_chan_order = str2num(new_chan_order);
if prescan_chan == size(new_chan_order,1)
setappdata(gcf,'SessionChanOrder',new_chan_order);
setappdata(gcf,'SessionNumChannels',prescan_chan);
setappdata(gcf,'system',new_system);
set(findobj(gcf,'Tag','NumberChannelsEdit'),'String',num2str(prescan_chan));
else
setappdata(gcf,'SessionChanOrder',chan_order);
setappdata(gcf,'SessionNumChannels',size(chan_order,1));
setappdata(gcf,'system',system);
set(findobj(gcf,'Tag','NumberChannelsEdit'),'String',num2str(size(chan_order,1)));
msg = 'Number of channels does not match the subject data';
set(findobj(gcf,'Tag','MessageLine'),'String',msg);
end
return; % EditChanOrder
%----------------------------------------------------------------------------
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
%----------------------------------------------------------------------------
function click_chan_in_col
setappdata(gcf,'SessionChanOrder','');
setappdata(gcf,'SessionNumChannels',0);
setappdata(gcf,'system','');
set(findobj(gcf,'Tag','NumberChannelsEdit'),'String','0');
msg = 'Number of channels field has been reset to 0';
set(findobj(gcf,'Tag','MessageLine'),'String',msg);
return; % click_chan_in_col
%----------------------------------------------------------------------------
function edit_single_folder
h = findobj(gcf,'Tag','NumberSubjectsEdit');
setappdata(gcf,'SessionNumSubjects',str2num(get(h,'String')));
return;
%----------------------------------------------------------------------------
function EditSubject2
h = findobj(gcf,'Tag','NumberSubjectsEdit');
if ~getappdata(gcf,'SessionNumSubjects')
msg = 'Please input Number of Subjects first.';
set(findobj(gcf,'Tag','MessageLine'),'String',msg);
return;
end
num_cond = getappdata(gcf,'SessionNumConditions');
subj_files = {};
curr_dir = pwd;
p = pwd;
for i = 1:getappdata(gcf,'SessionNumSubjects')
subj_name{i} = ['Subject' num2str(i)];
tit = ['Select files for ', subj_name{i}];
pf = erp_getsubject_ui(tit);
if isempty(pf)
return;
end
ff = cell(size(pf));
for j = 1:size(ff,1)
[p f] = rri_fileparts(pf{j});
ff{j} = f;
end
cd(p);
subjects{i} = p;
subj_files = [subj_files ff];
end
setappdata(gcf,'num_subj_init',-1);
setappdata(gcf,'SessionSubject',subjects);
setappdata(gcf,'subj_name', subj_name);
setappdata(gcf,'subj_files', subj_files);
setappdata(gcf,'reselect_subj', 0);
cd(curr_dir);
return;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -