📄 bfm_plot_scores_ui.m
字号:
'Visible','on', ...
'Userdata',i);
lv_idx = lv_idx + 1;
else
set(lv_hdls(i),'String','','Visible','off');
end
end;
if (top_lv_button ~= 1) | (num_lvs > rows)
set(findobj(gcf,'Tag','LVButtonSlider'),'Visible','on');
else
set(findobj(gcf,'Tag','LVButtonSlider'),'Visible','off');
end;
return; % DisplayLVButtons
%----------------------------------------------------------------------------
function MoveSlider()
slider_hdl = findobj(gcf,'Tag','LVButtonSlider');
curr_value = round(get(slider_hdl,'Value'));
total_rows = round(get(slider_hdl,'Max'));
top_lv_button = total_rows - curr_value + 1;
setappdata(gcf,'TopLVButton',top_lv_button);
DisplayLVButtons;
return; % MoveSlider
%----------------------------------------------------------------------------
function SetTopLVButton(top_lv_button)
slider_hdl = findobj(gcf,'Tag','LVButtonSlider');
total_rows = round(get(slider_hdl,'Max'));
slider_value = total_rows - top_lv_button + 1;
set(slider_hdl,'Value',slider_value);
setappdata(gcf,'TopLVButton',top_lv_button);
DisplayLVButtons;
return; % SetTopLVButton
%----------------------------------------------------------------------------
function SetupSlider()
top_lv_button = getappdata(gcf,'TopLVButton');
rows = getappdata(gcf,'NumLVRows');
curr_lv_state = getappdata(gcf,'CurrLVState');
num_lvs = length(curr_lv_state);
total_rows = num_lvs;
slider_hdl = findobj(gcf,'Tag','LVButtonSlider');
if (total_rows > 1) % don't need to update when no condition
set(slider_hdl,'Min',1,'Max',total_rows, ...
'Value',total_rows-top_lv_button+1, ...
'Sliderstep',[1/(total_rows-1)-0.00001 1/(total_rows-1)]);
end;
return; % UpdateSlider
%---------------------------------------------------------------------------
function SelectLV(selected_lv)
lv_state = getappdata(gcf,'CurrLVState');
LV_hlist = getappdata(gcf,'LV_hlist');
top_lv = getappdata(gcf,'TopLVButton');
rows = getappdata(gcf,'NumLVRows');
bottom_lv = top_lv + rows - 1;
% remove the previous selection
%
prev_selected_lv = find(lv_state == 1);
if (prev_selected_lv >= top_lv & prev_selected_lv <= bottom_lv),
row_idx = prev_selected_lv - top_lv + 1;
set(LV_hlist(row_idx),'Value',0);
end;
UpdateLVButtonList = 0;
if ~exist('selected_lv','var') % select LV interactively
curr_row = get(gcbo,'Userdata');
curr_lv = top_lv + curr_row -1;
set(LV_hlist(curr_row),'Value',1);
else % select LV by specifying the index
curr_lv = selected_lv;
if (selected_lv >= top_lv & selected_lv <= bottom_lv),
row_idx = selected_lv - top_lv + 1;
set(LV_hlist(row_idx),'Value',1);
else
UpdateLVButtonList = 1;
end;
end;
lv_state = zeros(1,length(lv_state));
lv_state(curr_lv) = 1;
setappdata(gcf,'CurrLVState',lv_state);
if (UpdateLVButtonList)
SetTopLVButton(curr_lv);
end;
return; % SelectLV
%---------------------------------------------------------------------------
function PlotBrainDesignScores()
if (getappdata(gcf,'PlotBrainDesignState') == 0)
return;
end;
s = getappdata(gcf,'s');
cb = erp_per(s);
perm_result = getappdata(gcf,'PermutationResult');
b_scores = getappdata(gcf,'BrainScores');
d_scores = getappdata(gcf,'DesignScores');
conditions = getappdata(gcf,'Conditions');
lv_state = getappdata(gcf,'CurrLVState');
if (getappdata(gcf,'PlotDesignState') == 1),
ax_hdl = getappdata(gcf,'ScoreAxes_bottom');
else
ax_hdl = getappdata(gcf,'ScoreAxes');
end;
colour_code =[ 'bo';'rx';'g+';'m*';'bs';'rd';'g^';'m<';'bp';'r>'; ...
'gh';'mv';'ro';'gx';'m+';'b*';'rs';'gd';'m^';'b<'];
num_conds = getappdata(gcf,'num_conds');
num_subjs_grp1 = getappdata(gcf,'num_subjs_grp1');
lv_idx = find(lv_state == 1);
min_x = min(d_scores(:)); max_x = max(d_scores(:));
min_y = min(b_scores(:)); max_y = max(b_scores(:));
margin_x = abs((max_x - min_x) / 100);
margin_y = abs((max_y - min_y) / 100);
axes(ax_hdl);
cla; grid off; hold on;
for n=1:num_subjs_grp1
for k=1:num_conds
j = (k-1) * num_subjs_grp1 + n;
plot(d_scores(j,lv_idx),b_scores(j,lv_idx), colour_code(k,:));
axis([min_x-margin_x,max_x+margin_x,min_y-margin_y,max_y+margin_y]);
end
end
hold off;
l_hdl = [];
if ~isempty(conditions),
% remove the old legend to avoid the bug in the MATLAB5
old_legend = getappdata(gcf,'LegendHdl');
if ~isempty(old_legend),
try
delete(old_legend{1});
catch
end;
end;
% create a new legend, and save the handles
[l_hdl, o_hdl] = legend(conditions);
legend_txt(o_hdl);
set(l_hdl,'color',[0.9 1 0.9]);
setappdata(gcf,'LegendHdl',[{l_hdl} {o_hdl}]);
legend_state = get(findobj(gcf,'Tag','LegendMenu'),'Userdata');
if (legend_state == 1),
DisplayLegend('on');
else
DisplayLegend('off');
end;
else
setappdata(gcf,'LegendHdl',[]);
end;
if(getappdata(gcf, 'is_design_plot'))
xlabel('Design Scores');
% set(get(gca,'xlabel'), ...
% 'FontUnits', 'normal', ...
% 'FontSize', 0.07, ...
% 'string','Design Scores');
else
xlabel('Behavior Scores');
% set(get(gca,'xlabel'), ...
% 'FontUnits', 'normal', ...
% 'FontSize', 0.07, ...
% 'string','Behavior Scores');
end
ylabel('Brain Scores');
% set(get(gca,'ylabel'), ...
% 'FontUnits', 'normal', ...
% 'FontSize', 0.07, ...
% 'string','Brain Scores');
title('');
if (getappdata(gcf,'PlotDesignState') == 1) | isempty(perm_result)
return;
else
title(sprintf('LV %d: %.2f%% crossblock, p < %.3f', lv_idx, 100*cb(lv_idx), perm_result.sprob(lv_idx)));
end
return; % PlotBrainDesignScores
%---------------------------------------------------------------------------
function PlotDesignScores()
if (getappdata(gcf,'PlotDesignState') == 0),
return;
end;
s = getappdata(gcf,'s');
cb = erp_per(s);
perm_result = getappdata(gcf,'PermutationResult');
d_scores = getappdata(gcf,'DesignScores');
conditions = getappdata(gcf,'Conditions');
lv_state = getappdata(gcf,'CurrLVState');
if (getappdata(gcf,'PlotBrainDesignState') == 1),
ax_hdl = getappdata(gcf,'ScoreAxes_top');
else
ax_hdl = getappdata(gcf,'ScoreAxes');
end;
axes(ax_hdl);
cla;hold on;
if isempty(conditions),
num_conds = 1:size(b_scores,1);
else
num_conds = length(conditions);
end;
num_subjs_grp1 = getappdata(gcf,'num_subjs_grp1');
% like ERP, we aggregate the same design score together
%
mask = [];
for k = 1:num_conds
mask = [mask,num_subjs_grp1*(k-1)+1];
end
d_scores = d_scores(mask,:);
min_x = 0.5; max_x = num_conds+0.5;
min_y = min(d_scores(:)); max_y = max(d_scores(:));
margin_x = abs((max_x - min_x) / 20);
margin_y = abs((max_y - min_y) / 20);
lv_idx = find(lv_state == 1);
load('rri_color_code');
for k = 1:num_conds
bar_hdl = bar(k, d_scores(k,lv_idx));
set(bar_hdl,'facecolor',color_code(k,:));
end
hold off;
% set(ax_hdl,'XTick',[0.5:num_conds:(size(d_scores,1)+1)],'XTickLabel',{});
axis([min_x,max_x,min_y-margin_y,max_y+margin_y]);
set(ax_hdl,'xtick',1:num_conds);
set(ax_hdl,'xticklabel',1:num_conds);
if ~isempty(conditions),
% remove the old legend to avoid the bug in the MATLAB5
old_legend = getappdata(gcf,'LegendHdl2');
if ~isempty(old_legend),
try
delete(old_legend{1});
catch
end;
end;
% create a new legend, and save the handles
[l_hdl, o_hdl] = legend(conditions, 0);
legend_txt(o_hdl);
set(l_hdl,'color',[0.9 1 0.9]);
setappdata(gcf,'LegendHdl2',[{l_hdl} {o_hdl}]);
legend_state = get(findobj(gcf,'Tag','LegendMenu'),'Userdata');
if (legend_state == 1),
DisplayLegend('on');
else
DisplayLegend('off');
end;
else
setappdata(gcf,'LegendHdl2',[]);
end;
grid on;
xlabel('Conditions');
% set(get(gca,'xlabel'), ...
% 'FontUnits', 'normal', ...
% 'FontSize', 0.07, ...
% 'string','Conditions');
if(getappdata(gcf, 'is_design_plot'))
ylabel('Design Scores');
% set(get(gca,'ylabel'), ...
% 'FontUnits', 'normal', ...
% 'FontSize', 0.07, ...
% 'string','Design Scores');
else
ylabel('Behavior Scores');
% set(get(gca,'ylabel'), ...
% 'FontUnits', 'normal', ...
% 'FontSize', 0.07, ...
% 'string','Design Scores');
end
title('');
if isempty(perm_result)
return;
else
title(sprintf('LV %d: %.2f%% crossblock, p < %.3f', lv_idx, 100*cb(lv_idx), perm_result.sprob(lv_idx)));
end
return; % PlotDesignScores
%---------------------------------------------------------------------------
function PlotDesignLV()
if (getappdata(gcf,'PlotDesignLVState') == 0)
return;
end;
s = getappdata(gcf,'s');
cb = erp_per(s);
perm_result = getappdata(gcf,'PermutationResult');
designlv = getappdata(gcf,'DesignLV');
lv_state = getappdata(gcf,'CurrLVState');
lv_idx = find(lv_state == 1);
num_lv = length(lv_state);
conditions = getappdata(gcf,'Conditions');
num_conds = length(conditions);
mask = zeros(1, size(designlv,1));
mask( [1 : num_conds] ) = 1;
designlv = designlv(find(mask), :);
min_x = 0.5; max_x = num_conds+0.5;
min_y = min(designlv(:)); max_y = max(designlv(:));
margin_x = abs((max_x - min_x) / 20);
margin_y = abs((max_y - min_y) / 20);
if(1)
ax_hdl = getappdata(gcf,'ScoreAxes_bottom');
axes(ax_hdl);
set(ax_hdl,'visible','off');
end
% plot of the designlv
%
ax_hdl = getappdata(gcf,'ScoreAxes_top');
axes(ax_hdl);
cla;hold on;
% num_contrasts = size(designlv,1);
% tick_step = round(num_contrasts / 20);
load('rri_color_code');
for k = 1:num_conds
bar_hdl = bar(k, designlv(k,lv_idx));
set(bar_hdl,'facecolor',color_code(k,:));
end
hold off;
set(ax_hdl,'xtick',1:num_conds);
set(ax_hdl,'xticklabel',1:num_conds);
set(ax_hdl,'tickdir','out','ticklength',[0.005 0.005],'box','on');
ylabel('Weights');
% min_value = min(designlv(:,lv_idx));
% max_value = max(designlv(:,lv_idx));
% offset = (max_value - min_value) / 20;
% axis([0 size(designlv,1)+1 min_value-offset max_value+offset]);
title('Weights of the contrasts for the design LV');
grid on;
if ~isempty(conditions),
% remove the old legend to avoid the bug in the MATLAB5
old_legend = getappdata(gcf,'LegendHdl3');
if ~isempty(old_legend),
try
delete(old_legend{1});
catch
end;
end;
% create a new legend, and save the handles
[l_hdl, o_hdl] = legend(conditions, 0);
legend_txt(o_hdl);
set(l_hdl,'color',[0.9 1 0.9]);
setappdata(gcf,'LegendHdl3',[{l_hdl} {o_hdl}]);
legend_state = get(findobj(gcf,'Tag','LegendMenu'),'Userdata');
if (legend_state == 1),
DisplayLegend('on');
else
DisplayLegend('off');
end;
else
setappdata(gcf,'LegendHdl3',[]);
end;
xlabel('Conditions');
if(0)
% plot of the designlv permuation result if any
%
ax_hdl = getappdata(gcf,'ScoreAxes_bottom');
axes(ax_hdl);
%cla;
%xlabel('');
%ylabel('');
%title('');
set(ax_hdl,'visible','off');
return;
if isempty(perm_result)
title('--- No permutation test has been performed --- ');
return;
end;
bar(perm_result.sprob(:,lv_idx)*100,'r');
set(ax_hdl,'XTick',[1:tick_step:num_contrasts]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -