📄 erp_create_datamat.m
字号:
%ERP_CREATE_DATAMAT Creates a datamat file
%
% USAGE: erp_create_datamat({session_file})
%
% ERP_CREATE_DATAMAT({session_file}) creates a datamat file based the
% session information. In addition, it provides users some flexabilities
% like choosing different conditions to study etc.
%
% Called by erp_session_profile_ui
%
% I (session_file) - Matlab data file that contains a structure array
% containing the session information for the study
%
% Created on 12-DEC-2002 by Jimmy Shen
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function erp_create_datamat(varargin)
if nargin == 0 | ~ischar(varargin{1})
session_file = varargin{1}{1};
init(session_file);
return;
end;
% clear the message line,
%
h = findobj(gcf,'Tag','MessageLine');
set(h,'String','');
action = varargin{1};
if strcmp(action,'filename_edit')
filename_hdl = getappdata(gcf, 'filename_hdl');
filename = get(filename_hdl, 'string');
setappdata(gcf,'filename',filename);
elseif strcmp(action,'create_bn_pressed')
CreateDatamat;
elseif strcmp(action,'merge_conditions')
MergeConditions;
elseif strcmp(action,'close_bn_pressed')
close(gcf);
plsgui(3);
end
return;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% init: Initialize the GUI layout
%
% I (session_file) - Matlab data file that contains a structure array
% containing the session information for the study
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function init(session_file)
load(session_file); % session info
if ~isfield(session_info,'system')
session_info.system.class = 1;
session_info.system.type = 1;
end
switch session_info.system.class
case 1
type_str = 'BESAThetaPhi|EGI128|EGI256';
switch session_info.system.type
case 1
load('erp_loc_besa148');
case 2
load('erp_loc_egi128');
case 3
load('erp_loc_egi256');
end
case 2
type_str = 'CTF-150';
switch session_info.system.type
case 1
load('erp_loc_ctf150');
end
end
prescan_fn = fullfile(session_info.subject{1}, session_info.subj_files{1,1});
% prescan = load(prescan_fn); % prescan 1 wave
if isfield(session_info,'eeg_format')
eeg_format = session_info.eeg_format;
else
eeg_format = [];
end
[prescan, eeg_format] = read_eeg(prescan_fn, eeg_format);
if session_info.chan_in_col
prescan = prescan';
end
prescan_time = size(prescan, 2);
chan_name = chan_nam(session_info.chan_order,:);
subj_name = session_info.subj_name;
cond_name = session_info.condition;
if isfield(session_info,'behavname')
behavname = session_info.behavname;
else
behavname = {};
for i=1:size(session_info.behavdata,2)
behavname = [behavname, {['behav', num2str(i)]}];
end
session_info.behavname = behavname;
end
pls_data_path = session_info.pls_data_path;
filename = [session_info.datamat_prefix, '_ERPdatamat.mat'];
dataname = [session_info.datamat_prefix, '_ERPdata.mat'];
selected_channels = ones(1, session_info.num_channels); % select all
selected_subjects = ones(1, session_info.num_subjects); % select all
selected_conditions = ones(1, session_info.num_conditions); % select all
selected_behav = ones(1, size(session_info.behavdata,2)); % select all
prestim = session_info.prestim_baseline;
digit_interval = session_info.digit_interval;
% sweep = (prescan_time - 1) * digit_interval; % -1 means start from 0
sweep = prescan_time * digit_interval; % "- digit_interval" later
end_epoch = sweep + prestim;
start_time = prestim;
end_time = end_epoch; % "- digit_interval" later
h01 = erp_create_modify_ui(0);
chan_lst_hdl = getappdata(h01,'chan_lst_hdl');
subj_lst_hdl = getappdata(h01,'subj_lst_hdl');
cond_lst_hdl = getappdata(h01,'cond_lst_hdl');
behav_lst_hdl = getappdata(h01,'behav_lst_hdl');
prestim_hdl = getappdata(h01,'prestim_hdl');
sweep_hdl = getappdata(h01,'sweep_hdl');
epoch_hdl = getappdata(h01,'epoch_hdl');
start_time_hdl = getappdata(h01,'start_time_hdl');
end_time_hdl = getappdata(h01,'end_time_hdl');
filename_hdl = getappdata(h01,'filename_hdl');
set(chan_lst_hdl, 'string', chan_name);
set(subj_lst_hdl, 'string', subj_name);
set(cond_lst_hdl, 'string', cond_name);
set(behav_lst_hdl, 'string', behavname);
set(prestim_hdl, 'string', num2str(prestim));
set(sweep_hdl, 'string', num2str(sweep));
set(epoch_hdl, 'string', num2str(end_epoch));
set(start_time_hdl, 'string', num2str(start_time));
set(end_time_hdl, 'string', num2str(end_time));
set(filename_hdl, 'string', filename);
time_info.prestim = prestim;
time_info.digit_interval = digit_interval;
time_info.end_epoch = end_epoch - digit_interval; % "- digit_interval" here
time_info.timepoint = prescan_time;
time_info.start_timepoint = floor(prestim/digit_interval);
time_info.start_time = start_time;
time_info.end_time = end_time - digit_interval; % "- digit_interval" here
setappdata(h01,'time_info', time_info);
setappdata(h01,'selected_channels', selected_channels);
setappdata(h01,'selected_subjects', selected_subjects);
setappdata(h01,'selected_conditions', selected_conditions);
setappdata(h01,'selected_behav', selected_behav);
setappdata(h01,'filename', filename);
setappdata(h01,'dataname', dataname);
setappdata(h01,'session_info', session_info);
setappdata(h01,'session_file', session_file);
setappdata(h01,'eeg_format', eeg_format);
set(chan_lst_hdl, 'value',find(selected_channels), 'list',1);
set(subj_lst_hdl, 'value',find(selected_subjects), 'list',1);
set(cond_lst_hdl, 'value',find(selected_conditions), 'list',1);
set(behav_lst_hdl, 'value',find(selected_behav), 'list',1);
return; % init
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% SelectCondition: Respond to the select conditions listbox
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function select_conditions()
cond_lst_hdl = getappdata(gcf,'cond_lst_hdl');
selected_conditions = zeros(1,size(get(cond_lst_hdl,'string'),1));
selected_conditions(get(cond_lst_hdl, 'value')) = 1;
setappdata(gcf,'selected_conditions',selected_conditions);
return; % SelectCondition
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% CreateDatamat: Create Datamat file
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function CreateDatamat()
if exist('plslog.m','file')
plslog('Create ERP Datamat');
end
merged_conds = getappdata(gcf, 'merged_conds');
session_info = getappdata(gcf,'session_info');
session_file = getappdata(gcf,'session_file');
eeg_format = getappdata(gcf,'eeg_format');
time_info = getappdata(gcf,'time_info');
filename = getappdata(gcf,'filename');
dataname = getappdata(gcf,'dataname');
chan_value = get(getappdata(gcf,'chan_lst_hdl'), 'value');
subj_value = get(getappdata(gcf,'subj_lst_hdl'), 'value');
cond_value = get(getappdata(gcf,'cond_lst_hdl'), 'value');
behav_value = get(getappdata(gcf,'behav_lst_hdl'), 'value');
pls_data_path = session_info.pls_data_path;
datamat_prefix = session_info.datamat_prefix;
num_channels = session_info.num_channels;
num_subjects = session_info.num_subjects;
num_conditions = session_info.num_conditions;
num_behav = size(session_info.behavdata, 2);
subject = session_info.subject;
subj_files = session_info.subj_files;
chan_in_col = session_info.chan_in_col;
curr = pwd;
if isempty(curr)
curr = filesep;
end
savepwd = curr;
k = num_conditions; % num of conditions
n = num_subjects; % num of subjects
if(~k)
msg = sprintf('No condition was selected.');
set(findobj(gcf,'Tag','MessageLine'),'String',['ERROR: ', msg]);
return;
end
progress_hdl = rri_progress_ui('initialize', 'Creating Datamat');
factor = 1/(n*k);
rri_progress_ui(progress_hdl, '', 0.5*factor);
% add path for all subject
%
for i = 1:k
for j = 1:n
subj_files{i,j} = [subject{j}, filesep, subj_files{i,j}];
end
end
datamat=[];
for i = 1:k
temp=[];
for j=1:n
message=['Loading condition ',num2str(i),', subject ',num2str(j),'.'];
rri_progress_ui(progress_hdl,'Loading Subjects',message);
% img = load(subj_files{i,j});
img = read_eeg(subj_files{i,j}, eeg_format);
if chan_in_col
img = img';
end
% img =reshape(img',[1,length(img(:))]);
% temp = [temp; img(:)'];
% temp = [temp; img];
% temp = cat(3, temp, img');
temp = [temp img'];
end
[r c] = size(img');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -