📄 erp_plot_ui.m
字号:
for i = 1:lv
bs_name = [bs_name, {['LV',num2str(i)]}];
end
rescale = 0;
setting.rescale = rescale;
case {3} % salience
rri_changepath('erpresult');
% load(datamat_file, 'isbehav');
if isbehav == 2
set(hm_score,'visible','on');
set(hm_brain,'visible','on');
set(hm_corr, 'visible', 'on');
set(hm_canonical, 'visible', 'on');
set(hm_canonicalcorr, 'visible', 'on');
elseif isbehav
set(hm_score,'visible','off');
set(hm_brain,'visible','on');
set(hm_corr, 'visible', 'on');
set(hm_canonical, 'visible', 'off');
set(hm_canonicalcorr, 'visible', 'on');
else
set(hm_score,'visible','on');
set(hm_brain,'visible','off');
set(hm_corr, 'visible', 'off');
set(hm_canonical, 'visible', 'on');
set(hm_canonicalcorr, 'visible', 'off');
end
if ~exist('design','var')
set(hm_contrast,'visible','off');
else
set(hm_contrast,'visible','on');
end
chan_mask = chan_order(find(common_channels));
time_info = common_time_info;
ti = round(time_info.timepoint);
ch = sum(common_channels);
lv = size(salience,2);
wave_amplitude = reshape(salience, [ti, ch, lv]);
selected_channels = ones(1,ch);
selected_wave = 1:lv;
selected_bs = 1:lv;
% display bootstrap result if there is one
%
if exist('boot_result','var') & ~isempty(boot_result)
% get bootstrap ratio from boot_result
%
bs_ratio = boot_result.compare;
bsr = bs_ratio;
% initialize bootstrap field
%
if isempty(bs_field)
bs_field = erp_bs_option_ui('set_bs_fields',bsr);
setting.bs_field = bs_field;
end
% set amplitude to 1 if above threshold, 0 otherwise
%
for i = 1:lv
too_large = find(bsr > (bs_field{i}.max_ratio));
bsr(too_large) = bs_field{i}.max_ratio;
too_small = find(bsr < (bs_field{i}.min_ratio));
bsr(too_small) = bs_field{i}.min_ratio;
bs_amplitude(:,i) = (abs(bsr(:,i)) >= (bs_field{i}.thresh));
end
% selected_channels & selected_wave will be the same
%
bs_amplitude = reshape(bs_amplitude, [ti, ch, lv]);
% enable bootstrap option menu
%
set(hm_bs_option, 'visible', 'on');
end % exist('boot_result')
% create latent variable name
%
wave_name = [];
bs_name = [];
for i = 1:lv
wave_name = [wave_name, {['LV',num2str(i)]}];
bs_name = [bs_name, {['LV',num2str(i)]}];
end
case {4} % grp
rri_changepath('erpresult');
chan_mask = chan_order(find(common_channels));
time_info = common_time_info;
ti = round(time_info.timepoint);
ch = sum(common_channels);
lv = size(salience,2);
newdata_lst = erp_get_common(datamat_files, 1, 1, cond_selection);
num_group = length(newdata_lst);
num_cond = sum(common_conditions);
org_wave_name = cond_name(find(common_conditions));
org_wave_name = repmat(org_wave_name, [1, num_group]);
grp_id = [];
g = 1;
for i = 1:length(org_wave_name)
org_wave_name{i} = [org_wave_name{i}, ' in group ', num2str(g)];
grp_id(i) = g;
if mod(i, num_cond) == 0
g = g + 1;
end
end
a = 2; % total increase in order (exclude 'none')
p = 1; % selected cond increase in order
tmp_subj_tot = 0;
for i = 1:length(org_wave_name)
q = 1; % selected subj increase in order
for j = 1:num_subj_lst(grp_id(i))
idx = tmp_subj_tot + j;
selected_wave = [selected_wave idx];
selected_wave_info(idx, 1) = i;
selected_wave_info(idx, 2) = j;
name_str = [subj_name_lst{grp_id(i)}{j},' in "',org_wave_name{i}, '"'];
wave_name{idx} = name_str;
wave_order(a-1,:) = [a, q, p, grp_id(i)];
q = q + 1;
a = a + 1;
end
p = p + 1;
tmp_subj_tot = tmp_subj_tot + num_subj_lst(grp_id(i));
end
[avg_amplitude, wave_amplitude] = ...
erp_datamat2datacub(newdata_lst, ...
common_channels, common_conditions, {});
avg_amplitude = [];
[dim1 dim2 dim3] = size(wave_amplitude);
selected_channels = ones(1,sum(common_channels));
% selected_wave = 1:dim3;
rescale = 0;
setting.rescale = rescale;
case {5}
rri_changepath('erpresult');
chan_mask = chan_order(find(common_channels));
time_info = common_time_info;
ti = round(time_info.timepoint);
ch = sum(common_channels);
lv = size(salience,2);
% newdata_lst = erp_get_common(datamat_files, 1, 1); % datamatcorrs_lst
num_group = length(datamatcorrs_lst); % length(newdata_lst);
num_cond = length(bscan); % sum(common_conditions);
num_behav = length(behavname); %sum(common_behav);
behavname_lst = behavname; %(find(common_behav));
selected_common = find(common_conditions);
selected_common = selected_common(bscan);
conditions_common = zeros(1,length(common_conditions));
conditions_common(selected_common) = 1;
org_wave_name = cond_name(find(conditions_common));
org_wave_name = repmat(org_wave_name, [1, num_group]);
grp_id = [];
g = 1;
for i = 1:length(org_wave_name)
org_wave_name{i} = [org_wave_name{i}, ' in group ', num2str(g)];
grp_id(i) = g;
if mod(i, num_cond) == 0
g = g + 1;
end
end
a = 2; % total increase in order (exclude 'none')
p = 1; % selected cond increase in order
tmp_subj_tot = 0;
for i = 1:length(org_wave_name)
q = 1; % selected subj increase in order
for j = 1:num_behav % num_subj_lst(grp_id(i))
idx = tmp_subj_tot + j;
selected_wave = [selected_wave idx];
selected_wave_info(idx, 1) = i;
selected_wave_info(idx, 2) = j;
% name_str = [subj_name_lst{grp_id(i)}{j},' in "',org_wave_name{i}, '"'];
name_str = [behavname_lst{j},' in "',org_wave_name{i}, '"'];
wave_name{idx} = name_str;
wave_order(a-1,:) = [a, q, p, grp_id(i)];
q = q + 1;
a = a + 1;
end
p = p + 1;
tmp_subj_tot = tmp_subj_tot + num_behav; % num_subj_lst(grp_id(i));
end
% [avg_amplitude, wave_amplitude] = ...
% erp_datamat2datacub(newdata_lst, ...
% common_channels, common_conditions, {});
avg_amplitude = [];
wave_amplitude = [];
for i = 1:num_group
wave_amplitude = [wave_amplitude; datamatcorrs_lst{i}];
end
wave_amplitude = reshape(wave_amplitude', [ti ch size(wave_amplitude,1)]);
[dim1 dim2 dim3] = size(wave_amplitude);
selected_channels = ones(1,sum(common_channels));
% selected_wave = 1:dim3;
selected_bs = 1:lv;
% display bootstrap result if there is one
%
if exist('boot_result','var') & ~isempty(boot_result)
% get bootstrap ratio from boot_result
%
bs_ratio = boot_result.compare;
bsr = bs_ratio;
% initialize bootstrap field
%
if isempty(bs_field)
bs_field = erp_bs_option_ui('set_bs_fields',bsr);
setting.bs_field = bs_field;
end
% set amplitude to 1 if above threshold, 0 otherwise
%
for i = 1:lv
too_large = find(bsr > (bs_field{i}.max_ratio));
bsr(too_large) = bs_field{i}.max_ratio;
too_small = find(bsr < (bs_field{i}.min_ratio));
bsr(too_small) = bs_field{i}.min_ratio;
bs_amplitude(:,i) = (abs(bsr(:,i)) >= (bs_field{i}.thresh));
end
% selected_channels & selected_wave will be the same
%
bs_amplitude = reshape(bs_amplitude, [ti, ch, lv]);
% enable bootstrap option menu
%
set(hm_bs_option, 'visible', 'on');
end % exist('boot_result')
bs_name = [];
for i = 1:lv
bs_name = [bs_name, {['LV',num2str(i)]}];
end
rescale = 0;
setting.rescale = rescale;
otherwise
msg = 'ERROR: No this view option.';
msgbox(msg,'ERROR','modal');
return;
end % switch view_option
if isempty(wave_amplitude) | isempty(wave_name)
return;
end
if isempty(wave_selection)
wave_selection = 1;
setting.wave_selection = wave_selection;
end
if isempty(avg_selection)
avg_selection = 0;
setting.avg_selection = avg_selection;
end
if isempty(bs_selection)
bs_selection = 1;
setting.bs_selection = bs_selection;
end
color_code = ['b- ';'r- ';'m- ';'g- ';'c- ';'k- '];
% load('rri_color_code');
bs_color_code =[
'bo';'rd';'m<';'g>';'bs';'rv';'m^';'gp';'bh';'rx';'m+';'g*';
'ro';'gd';'m<';'b>';'rs';'gv';'m^';'bp';'rh';'gx';'m+';'b*';
'go';'md';'b<';'r>';'gs';'mv';'b^';'rp';'gh';'mx';'b+';'r*';
'mo';'bd';'r<';'g>';'ms';'bv';'r^';'gp';'mh';'bx';'r+';'g*'];
if isempty(x_interval_selection)
x_interval_selection = 1;
setting.x_interval_selection = x_interval_selection;
end
if isempty(y_interval_selection)
y_interval_selection = 1;
setting.y_interval_selection = y_interval_selection;
end
if ~isequal(setting, old_setting) % changed was made
try
switch view_option
case {1} % subj
setting1 = setting;
save(datamat_file, '-append', 'setting1');
case {2} % avg
setting2 = setting;
save(datamat_file, '-append', 'setting2');
case {3} % salience
setting3 = setting;
save(datamat_file, '-append', 'setting3');
case {4} % grp
setting4 = setting;
save(datamat_file, '-append', 'setting4');
case {5} % corr
setting5 = setting;
save(datamat_file, '-append', 'setting5');
end
catch
msg = 'Cannot save setting information';
msgbox(msg,'ERROR','modal');
return;
end;
end
% initialize setting
%
setappdata(h0,'setting',setting);
setappdata(h0,'view_option',view_option);
setappdata(h0,'datamat_file',datamat_file);
setappdata(h0,'eta',eta);
setappdata(h0,'org_wave_amplitude',org_wave_amplitude);
setappdata(h0,'wave_amplitude',wave_amplitude);
setappdata(h0,'brain_amplitude',wave_amplitude);
setappdata(h0,'bs_amplitude',bs_amplitude);
setappdata(h0,'bs_name',bs_name);
setappdata(h0,'mean_wave_list',mean_wave_list);
setappdata(h0,'mean_wave_name',mean_wave_name);
setappdata(h0,'cond_couple_lst',cond_couple_lst);
setappdata(h0,'org_wave_name',org_wave_name);
setappdata(h0,'wave_name',wave_name);
setappdata(h0,'wave_order',wave_order);
setappdata(h0,'wave_selection',wave_selection);
setappdata(h0,'avg_selection',avg_selection);
setappdata(h0,'bs_selection',bs_selection);
setappdata(h0,'bs_ratio',bs_ratio);
setappdata(h0,'bs_field',bs_field);
setappdata(h0,'color_code',color_code);
setappdata(h0,'bs_color_code',bs_color_code);
setappdata(h0,'x_interval_selection',x_interval_selection);
setappdata(h0,'y_interval_selection',y_interval_selection);
setappdata(h0,'rescale',rescale);
setappdata(h0,'s',s);
setappdata(h0,'font_size_selection',font_size_selection);
setappdata(h0,'init_option',[]);
setappdata(h0,'avg_amplitude',avg_amplitude);
setappdata(h0,'avg_name',avg_name);
setappdata(h0,'time_info',time_info);
setappdata(h0,'session_info',session_info);
setappdata(h0,'selected_channels',selected_channels);
setappdata(h0,'selected_conditions',selected_conditions);
setappdata(h0,'selected_subjects',selected_subjects);
setappdata(h0,'selected_bs',selected_bs);
setappdata(h0,'org_selected_wave',org_selected_wave);
setappdata(h0,'selected_wave',selected_wave);
setappdata(h0,'selected_wave_info',selected_wave_info);
setappdata(h0,'chan_mask',chan_mask);
setappdata(h0,'system',system);
setappdata(h0,'num_group',num_group);
old_pointer = get(h0,'pointer');
set(h0,'pointer','watch');
erp_showplot_ui(h0);
set(h0,'pointer',old_pointer);
return; % init
%
%
%------------------------------------------------
function choose_font_size
h0 = getappdata(gcbf,'main_fig');
h01 = getappdata(gcbf,'option_fig');
font_size_hdl = getappdata(h01,'font_size_hdl');
view_option = getappdata(h0,'view_option');
datamat_file = getappdata(h0,'datamat_file');
setting = getappdata(h0,'setting');
font_size_selection = get(font_size_hdl,'value');
setting.font_size_selection = font_size_selection;
setappdata(h0,'font_size_selection',font_size_selection);
setappdata(h0,'setting',setting);
try
switch view_option
case {1} % subj
setting1 = setting;
save(datamat_file, '-append', 'setting1');
case {2} % avg
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -