ET_PDToolkit/PDToolkit/@PDExperiment/build_averages.m

156 lines
5.3 KiB
Matlab

function[e] = build_averages(e)
plotwindow = figure;
plotwindow_id = num2str(plotwindow);
pos = get(plotwindow, 'Position');
pos(3) = 900;
set(plotwindow, 'Position', pos);
set(plotwindow, 'Color', [1 1 1]);
e.handle(2) = plotwindow;
subj_pop = uicontrol('Style','popupmenu');
sess_pop = uicontrol('Style','popupmenu');
trial_pop = uicontrol('Style','popupmenu');
add_group_btn = uicontrol('Style', 'pushbutton');
rem_group_btn = uicontrol('Style', 'pushbutton');
subj_pop_string = 'All subjects|Selection of subjects'; subj_pop_vals =[999 998];
sess_pop_string = 'All sessions|First sessions|Second sessions'; sess_pop_vals =[999 998 997];
trial_pop_string = 'All trials|Selection of trials';
for s = 1:length(e.subjects)
subj_pop_string = [subj_pop_string '|' e.subjects(s).name];
subj_pop_vals = [subj_pop_vals s];
end
set(subj_pop, 'Position', [10 400 150 20]);
set(subj_pop, 'String', subj_pop_string);
set(subj_pop, 'Value', 1);
set(subj_pop, 'Callback', 'e.enable_selection_edit(''subject'')');
set(subj_pop, 'FontName', 'Verdana');
set(subj_pop, 'FontWeight', 'bold');
set(subj_pop, 'FontSize', 11);
sel=get(subj_pop, 'Value');
for s = 1:length(e.subjects(sel).sessions);
sess_pop_string = [sess_pop_string '|' e.subjects(sel).sessions(s).name];
sess_pop_vals = [sess_pop_vals s];
end
set(sess_pop, 'Position', [10 375 150 20]);
set(sess_pop, 'String', sess_pop_string);
set(sess_pop, 'Value', 1);
set(sess_pop, 'Callback', 'e.enable_selection_edit(''session'')');
set(sess_pop, 'FontName', 'Verdana');
set(sess_pop, 'FontWeight', 'bold');
set(sess_pop, 'FontSize', 11);
selsess = get(sess_pop, 'Value');
set(sess_pop, 'Position', [10 375 150 20]);
set(sess_pop, 'String', sess_pop_string);
set(sess_pop, 'Value', 1);
set(sess_pop, 'Callback', '');
set(sess_pop, 'FontName', 'Verdana');
set(sess_pop, 'FontWeight', 'bold');
set(sess_pop, 'FontSize', 11);
unique_matches = unique({e.subjects(1).sessions(1).labels.match});
unique_labels = unique({e.subjects(1).sessions(1).labels.label});
for t = 1:length(unique_matches)
trial_pop_string = [trial_pop_string '|' unique_matches{t}];
end
for t = 1:length(unique_labels)
trial_pop_string = [trial_pop_string '|' unique_labels{t}];
end
set(trial_pop, 'Position', [10 350 150 20]);
set(trial_pop, 'String', trial_pop_string);
set(trial_pop, 'Value', 1);
set(trial_pop, 'Callback', 'e.enable_selection_edit(''trial'')');
set(trial_pop, 'FontName', 'Verdana');
set(trial_pop, 'FontWeight', 'bold');
set(trial_pop, 'FontSize', 11);
select_edit(1) = uicontrol('Style', 'edit');
select_edit(2) = uicontrol('Style', 'edit');
select_edit(3) = uicontrol('Style', 'edit');
set(select_edit(1), 'Position', [170 400 150 20]);
set(select_edit(2), 'Position', [170 375 150 20]);
set(select_edit(3), 'Position', [170 350 150 20]);
set(select_edit, 'Visible' ,'off');
set(select_edit, 'String', []);
set(select_edit, 'FontName', 'Verdana');
set(select_edit, 'FontWeight', 'bold');
set(select_edit, 'FontSize', 11);
set(select_edit, 'Enable' ,'off');
set(select_edit(1), 'Tag', ['selection_edit.subject.' plotwindow_id]);
set(select_edit(1), 'Callback', 'e.evaluate_selection(''subject'')');
set(select_edit(2), 'Tag', ['selection_edit.session.' plotwindow_id]);
set(select_edit(2), 'Callback', 'e.evaluate_selection(''session'')');
set(select_edit(3), 'Tag', ['selection_edit.trial.' plotwindow_id]);
set(select_edit(3), 'Callback', 'e.evaluate_selection(''trial'')');
plot([]);
pos = get(gca, 'Position');
set(gca, 'Position', [.225 .275 .6 .7]);
set(gca, 'FontName', 'Verdana');
set(gca, 'FontWeight', 'bold');
set(gca, 'FontSize', 10);
set(gca, 'Box', 'on');
set(add_group_btn, 'Position', [10 190 70 20]);
set(rem_group_btn, 'Position', [90 190 70 20]);
set(add_group_btn, 'String', 'Add');
set(add_group_btn, 'Callback', @e.add_aggregate);
set(rem_group_btn, 'String', 'Remove');
set(rem_group_btn, 'Callback', 'e.remove_aggregate');
jList = java.util.ArrayList;
%% set Tags
set(subj_pop, 'Tag', ['subj_pop.' plotwindow_id]);
set(sess_pop, 'Tag', ['sess_pop.' plotwindow_id]);
set(trial_pop, 'Tag', ['trial_pop.' plotwindow_id]);
%% list aggregates
agg_strings={};
for i = 1:length(e.aggregates)
add_strings{i,1} = 1;
color_str = ['#' sprintf('%02s', dec2hex(e.aggregates(i).color(1)*255)) ...
sprintf('%02s', dec2hex(e.aggregates(i).color(2)*255)) ...
sprintf('%02s', dec2hex(e.aggregates(i).color(3)*255))];
agg_strings{i,2} = ['<html><li color=' color_str '><font color=#000000>'...
e.aggregates(i).name{1} ...
'</font></li></html>'];
%agg_strings{i,3} = e.aggregates(i).error.name;
end
cheaders = {'', 'Name', 'Error'};
cformats = {'logical' ,'char', {'None', 'Std', 'Var'}};
editable = [true false true],
table = uitable('Position', [10 215 150 125], ...
'Data', agg_strings, ...
'ColumnName', cheaders, ...
'ColumnFormat', cformats, ...
'ColumnWidth', {20 'auto' 65},...
'ColumnEditable', editable, ...
'RowName',[]);
%set(table, 'ButtonDownFcn', 'e.select_aggregate');
set(table, 'CellSelectionCallback', @e.select_aggregate);
set(table, 'ButtonDownFcn', @e.button_down_on_aggregate);
set(table, 'Tag', 'aggragate_table');