📄 erp_plot_canonical_corr.m
字号:
function status = get_brain_scores()
status = 0;
old_pointer = get(gcf,'Pointer');
set(gcf,'Pointer','watch');
h = findobj(gcf,'Tag','STDatamatPopup');
popup_string = get(h,'String');
selected_idx = get(h,'Value');
selected_data = popup_string{selected_idx};
last_datamat = getappdata(gcf,'PlottedDatamat');
if (strcmp(last_datamat,selected_data) == 0)
set(findobj(gcf,'Tag','MessageLine'),'String','Loading data ... ');
[behavdata, st_datamat, st_win_size, st_evt_list] = ...
load_plotted_datamat(selected_idx);
if isempty(st_datamat)
set(gcf,'Pointer',old_pointer);
return;
end;
setappdata(gcf,'PlottedDatamat',selected_data);
setappdata(gcf,'STDatamat',st_datamat);
setappdata(gcf,'STWinSize',st_win_size);
setappdata(gcf,'STEvtList',st_evt_list);
set(findobj(gcf,'Tag','MessageLine'),'String','');
else
set(gcf,'Pointer',old_pointer);
status = 1;
return;
end;
brainlv = getappdata(gcf,'BrainLV');
curr_lv_state = getappdata(gcf,'CurrLVState');
num_lvs = length(curr_lv_state);
num_voxels = sum(getappdata(gcf,'chan_selection'));
num_evts = length(st_evt_list);
blv = reshape(brainlv,[st_win_size,num_voxels,num_lvs]);
bs = zeros(st_win_size,num_evts,num_lvs);
num_subj_lst = getappdata(gcf,'num_subj_lst');
bscan = getappdata(gcf,'bscan');
num_bscan = length(bscan);
num_behav = size(behavdata,2);
bcorr = zeros(st_win_size,num_bscan*num_behav,num_lvs);
for i=1:st_win_size,
bs(i,:,:) = squeeze(st_datamat(:,i,:)) * squeeze(blv(i,:,:));
bcorr(i,:,:) = ...
rri_corr_maps(behavdata,squeeze(bs(i,:,:)),num_subj_lst(selected_idx),length(bscan));
end;
% setappdata(gcf,'CurrBrainScores',bs);
setappdata(gcf,'CurrBrainCorrelation',bcorr);
setappdata(gcf,'num_behav',num_behav);
status = 1;
set(gcf,'Pointer',old_pointer);
return; % get_brain_scores
%--------------------------------------------------------------------------
%
function plot_brain_scores()
if (get_brain_scores ~= 1);
return;
end;
% st_evt_list = getappdata(gcf,'STEvtList');
conditions = getappdata(gcf,'Conditions');
curr_lv_state = getappdata(gcf,'CurrLVState');
select_lv = find(curr_lv_state == 1);
bscan = getappdata(gcf,'bscan');
num_bscan = length(bscan);
conditions = conditions(bscan);
time_info = getappdata(gcf,'common_time_info');
num_behav = getappdata(gcf,'num_behav');
st_evt = ones(1,num_behav);
st_evt_list = [];
for i=1:num_bscan
st_evt_list = [st_evt_list, st_evt.*i];
end
h = findobj(gcf,'Tag','PlotButton');
if strcmp(lower(get(h,'Enable')),'off'), return; end;
bcorr = getappdata(gcf,'CurrBrainCorrelation');
plotted_data = squeeze(bcorr(:,:,select_lv))';
condition = cell(1,num_bscan);
max_num_stim = 0;
for i=1:num_bscan,
condition{i}.st_row_idx = find(st_evt_list == i);
condition{i}.num_stim = length(condition{i}.st_row_idx);
condition{i}.name = conditions{i};
if (max_num_stim < condition{i}.num_stim)
max_num_stim = condition{i}.num_stim;
end;
end;
% generate the plots
%
plot_cond_idx = [1:num_bscan];
plot_dims = getappdata(gcf,'PlotDims');
if isempty(plot_dims)
if (num_bscan < 5)
num_rows = num_bscan;
else
num_rows = 5;
end;
if (max_num_stim < 4),
num_cols = max_num_stim;
else
num_cols = 4;
end;
plot_dims = [num_rows num_cols];
end;
f_pos = get(gcf,'Position');
axes_margin = [.37 .13 .15 .1];
erp_plot_cond_stim_ui('STARTUP', plotted_data, condition, time_info, ...
axes_margin, plot_dims, plot_cond_idx);
setappdata(gcf,'PLS_PLOT_BS_ACTIVE',1);
% save('PLS_plotted_bs','plotted_data','condition');
setappdata(gcf,'PLS_BS_PLOTTED_DATA',plotted_data);
setappdata(gcf,'PLS_BS_PLOTTED_CONDITON',condition);
% set(findobj(gcf,'Tag','PlotMenu'),'Enable','on');
% set(findobj(gcf,'Tag','OptionMenu'),'Enable','on');
return;
%--------------------------------------------------------------------------
%
function [selected_files] = get_selected_filename(select_all_flg),
st_filename = getappdata(gcf,'STFiles');
if exist('select_all_flg','var') & (select_all_flg == 1)
data_option = 3;
else
h = findobj(gcf,'Tag','STDatamatPopup');
selected_idx = get(h,'Value');
data_option = get(h,'Userdata');
end;
switch (data_option)
case {1}, % individual file
selected_files{1} = st_filename{selected_idx}.fullname;
case {2}, % all data
cnt = 0;
for i=1:length(st_filename),
selected_files{i} = st_filename{i}.fullname;
end;
end;
return; % get selected filenames
%--------------------------------------------------------------------------
%
function save_response_fn()
if (get_brain_scores ~= 1);
return;
end;
st_evt_list = getappdata(gcf,'STEvtList');
curr_lv_state = getappdata(gcf,'CurrLVState');
select_lv = find(curr_lv_state == 1);
bcorr = getappdata(gcf,'CurrBrainCorrelation');
bcorr_data = squeeze(bcorr(:,:,select_lv))';
selected_files = get_selected_filename;
[filename, pathname] = ...
uiputfile('*_ERP_bcorr_plot.mat','Save the Temporal Correlations');
if ischar(filename) & isempty(findstr(lower(filename),'_erp_bcorr_plot'))
[tmp filename] = fileparts(filename);
filename = [filename, '_ERP_bcorr_plot.mat'];
end
if isequal(filename,0)
return;
end;
rf_plot_file = fullfile(pathname,filename);
try
save (rf_plot_file, 'selected_files', 'bcorr_data', 'st_evt_list', 'select_lv');
catch
msg = sprintf('Cannot save the response function data to %s',rf_plot_file);
set(findobj(gcf,'Tag','MessageLine'),'String',['ERROR: ', msg]);
status = 0;
return;
end;
return; % save_response_fn
%--------------------------------------------------------------------------
%
function save_response_fn2()
if (get_brain_scores ~= 1);
return;
end;
curr_lv_state = getappdata(gcf,'CurrLVState');
select_lv = find(curr_lv_state == 1);
bs = getappdata(gcf,'CurrBrainScores');
st_data = squeeze(bs(:,:,select_lv))';
[nr nc] = size(st_data);
% data_option = 1 - plot individual ST datamat
% data_option = 2 - plot all data
popup_h = findobj(gcf,'Tag','STDatamatPopup');
selected_idx = get(popup_h,'value');
data_option = get(popup_h,'Userdata');
st_filenames = getappdata(gcf,'STFiles');
num_cond = sum(getappdata(gcf,'cond_selection'));
evt_list = getappdata(gcf,'STEvtList');
switch (data_option)
case {1} % plot individual data
all_evt_length = {}; % evt length of all datamat
% find all_evt_length
%
for i = 1:length(st_filenames)
filename = st_filenames{i}.fullname;
group = st_filenames{i}.group;
if group > length(all_evt_length)
all_evt_length {group} = [];
old_evt_length = [];
else
old_evt_length = all_evt_length{group};
end
% load(filename, 'st_evt_list');
st_evt_list = getappdata(gcf,'STEvtList');
% old_evt_length = [old_evt_length, length(st_evt_list)];
cond_selection = getappdata(gcf,'cond_selection');
[tmp1 tmp2 evt_length] = ...
fmri_mask_evt_list(st_evt_list, cond_selection);
old_evt_length = [old_evt_length, evt_length];
all_evt_length{group} = old_evt_length;
end
group = st_filenames{selected_idx}.group;
% calc subj position
%
pre_group = 0;
for i = 1:group - 1
pre_group = pre_group + length(all_evt_length{i});
end
subj = selected_idx - pre_group;
pattern = ...
['<ONLY INPUT PREFIX>*_ERP_grp',num2str(group),'_subj', ...
num2str(group),'_behavdata1.txt'];
[fn, pn] = uiputfile(pattern,'Save Behav Data');
if isequal(fn,0)
return;
end;
[tmp fn] = fileparts(fn);
first = 1;
i = group; % we know grp#
j = subj; % we know subj#
behavdata = zeros(num_cond, nc);
evt_length = all_evt_length{i}(j);
last = first + evt_length - 1;
subj_st_data = st_data(first:last,:);
run = evt_length / num_cond; % run# in subj
if run ~= 1 % avg across run
head = 1;
for k = 1:num_cond
tail = head + run - 1;
behavdata(k,:) = mean(subj_st_data(head:tail,:), 1);
head = head + run;
end
else
behavdata = subj_st_data;
end
first = first + evt_length;
% write behav data to file
%
rf_plot_file = fullfile(pn, ...
sprintf('%s_ERP_grp%d_subj%d_behavdata1.txt',fn,i,j));
save (rf_plot_file, '-ascii', 'behavdata');
case {2} % plot all data
pattern = ...
['<ONLY INPUT PREFIX>*_ERP_grp1_subj1_behavdata3.txt'];
[fn, pn] = uiputfile(pattern,'Save Behav Data');
if isequal(fn,0)
return;
end;
[tmp fn] = fileparts(fn);
all_evt_length = {}; % evt length of all datamat
% find all_evt_length
%
for i = 1:length(st_filenames)
filename = st_filenames{i}.fullname;
group = st_filenames{i}.group;
if group > length(all_evt_length)
all_evt_length {group} = [];
old_evt_length = [];
else
old_evt_length = all_evt_length{group};
end
% load(filename, 'st_evt_list');
filename = getappdata(gcf, 'plsResultFile');
load(filename, 'num_cond_lst', 'num_subj_lst');
st_evt_list = [];
for j = 1:num_cond_lst(1)
tmp = j*ones(1,num_subj_lst(i));
st_evt_list = [st_evt_list tmp];
end
% old_evt_length = [old_evt_length, length(st_evt_list)];
cond_selection = getappdata(gcf,'cond_selection');
[tmp1 tmp2 evt_length] = ...
fmri_mask_evt_list(st_evt_list, cond_selection);
old_evt_length = [old_evt_length, evt_length];
all_evt_length{group} = old_evt_length;
end
% find st_data for the subj
%
first = 1;
for i = 1:length(all_evt_length) % all grp
for j = 1:length(all_evt_length{i}) % all subj
behavdata = zeros(num_cond, nc);
evt_length = all_evt_length{i}(j);
last = first + evt_length - 1;
subj_st_data = st_data(first:last,:);
run = evt_length / num_cond; % run# in subj
if run ~= 1 % avg across run
head = 1;
for k = 1:num_cond
tail = head + run - 1;
behavdata(k,:) = mean(subj_st_data(head:tail,:), 1);
head = head + run;
end
else
behavdata = subj_st_data;
end
first = first + evt_length;
% write behav data to file
%
rf_plot_file = fullfile(pn, ...
sprintf('%s_ERP_grp%d_subj%d_behavdata3.txt',fn,i,j));
save (rf_plot_file, '-ascii', 'behavdata');
end
end
end;
return; % save_response_fn2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -