📄 fmri_plot_rf.m
字号:
plot_dims = [num_rows num_cols];
end;
axes_margin = [.37 .13 .15 .1];
fmri_plot_cond_stim_ui('STARTUP', st_data, condition, ...
axes_margin, plot_dims, plot_cond_idx, bsr, bs_thresh);
setappdata(gcf,'PLS_PLOT_COND_STIM_ACTIVE',1);
setappdata(gcf, 'ncoord_idx', ncoord_idx);
setappdata(gcf, 'ncoord', ncoord);
set(findobj(gcf,'Tag','PlotMenu'),'Enable','on');
set(findobj(gcf,'Tag','OptionMenu'),'Enable','on');
set(findobj(gcf,'Tag','DataMenu'),'Enable','on');
return; % plot_response_fn
%--------------------------------------------------------------------------
%
function save_response_fn()
neighbor_numbers = 1;
% Get Neighborhood Size
h = findobj(gcf,'Tag','neighborhoodEdit');
neighbor_size = round(str2num(get(h,'String')));
if isempty(neighbor_size) | ~isnumeric(neighbor_size)
neighbor_size = 0;
end
st_win_size = getappdata(gcf,'STWinSize');
st_evt_list = getappdata(gcf,'STEvtList');
st_coords = getappdata(gcf,'STCoords');
org_coords = getappdata(gcf,'org_coords');
xyz = getappdata(gcf,'XYZ');
% lag = getappdata(gcf,'lag');
% extract the currect ploting data
%
cur_coord = getappdata(gcf,'Coord');
if isempty(cur_coord)
msg = 'ERROR: No point has been seleted to plot.';
set(findobj(gcf,'Tag','MessageLine'),'String',msg);
return;
end;
coord_idx = find(st_coords == cur_coord);
if isempty(coord_idx)
msg = 'ERROR: The selected point is outside the brain region.';
set(findobj(gcf,'Tag','MessageLine'),'String',msg);
return;
end;
% coord_idx = find(org_coords == cur_coord);
ncoord_idx = getappdata(gcf, 'ncoord_idx');
neighbor_numbers = length(ncoord_idx);
CallBackFig = getappdata(gcf,'CallBackFig');
dims = getappdata(CallBackFig,'STDims');
ncoord = getappdata(gcf, 'ncoord');
xyz = rri_coord2xyz(ncoord,dims);
% get all the file names
%
selected_files = get_selected_filename;
% extract the time course data of the selected voxel
%
st_datamat = getappdata(gcf,'STDatamat');
[nr,nc] = size(st_datamat);
cols = nc / st_win_size;
st_data = reshape(st_datamat,[nr,st_win_size,cols]);
% st_data = squeeze(st_data(:,(lag+1),coord_idx));
% st_data = squeeze(st_data(:,[1:st_win_size],coord_idx));
standard_deviation = std(st_data(:,[1:st_win_size],ncoord_idx),0,3);
st_data = mean(st_data(:,[1:st_win_size],ncoord_idx),3);
[a1 b1]=sort(st_evt_list);
c1 = length(unique(st_evt_list));
b2 = reshape(b1, [length(st_evt_list)/c1, c1]);
b2 = b2';
b2 = b2(:)';
st_evt_list = st_evt_list(b2);
st_data = st_data(b2, :);
standard_deviation = standard_deviation(b2, :);
st_data_mean = ones(c1, size(st_data,2));
for i = 1:c1
st_data_mean(i,:) = mean(st_data(find(st_evt_list==i),:),1);
end
fn = getappdata(gcf,'STFiles');
fn = fn{1}.name;
if findstr('BfMRIsession.mat', fn)
[filename, pathname] = ...
uiputfile('*_BfMRI_rf_plot.mat','Save the Response Functions');
if ischar(filename) & isempty(findstr(lower(filename),'_bfmri_rf_plot'))
[tmp filename] = fileparts(filename);
filename = [filename, '_BfMRI_rf_plot.mat'];
end
else
[filename, pathname] = ...
uiputfile('*_fMRI_rf_plot.mat','Save the Response Functions');
if ischar(filename) & isempty(findstr(lower(filename),'_fmri_rf_plot'))
[tmp filename] = fileparts(filename);
filename = [filename, '_fMRI_rf_plot.mat'];
end
end
if isequal(filename,0)
return;
end;
rf_plot_file = fullfile(pathname,filename);
xyz_str = 'xyz';
sa = getappdata(gcf, 'sa');
if ~isempty(sa) & sa == 1
yzx = xyz;
xyz_str = 'yzx';
elseif ~isempty(sa) & sa == 0
xzy = xyz;
xyz_str = 'xzy';
end
try
save (rf_plot_file, 'selected_files', 'st_data', 'st_data_mean', 'standard_deviation', 'st_evt_list', 'xyz', 'neighbor_size', 'neighbor_numbers' );
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()
% data_option = 1 - plot individual ST datamat
% data_option = 2 - plot group data
% data_option = 3 - plot all data
lag = getappdata(gcf,'lag');
popup_h = findobj(gcf,'Tag','STDatamatPopup');
selected_idx = get(popup_h,'value');
data_option = get(popup_h,'Userdata');
st_filenames = getappdata(gcf,'STFiles');
st_data = getappdata(gcf,'ST_data');
% st_data = mean(st_data, 2); % export mean data for behav measure
[nr nc] = size(st_data);
num_cond = length(getappdata(gcf,'SelectedCondition'));
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');
% 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>*_fMRI_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;
% behavdata = behavdata(:,lag+1);
% write behav data to file
%
rf_plot_file = fullfile(pn, ...
sprintf('%s_fMRI_grp%d_subj%d_behavdata1.txt',fn,i,j));
behavdata = double(behavdata);
save (rf_plot_file, '-ascii', 'behavdata');
case {2} % plot group data
pattern = ...
['<ONLY INPUT PREFIX>*_fMRI_grp',num2str(selected_idx),'_subj1_behavdata2.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');
% 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;
i = selected_idx; % we know 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;
% behavdata = behavdata(:,lag+1);
% write behav data to file
%
rf_plot_file = fullfile(pn, ...
sprintf('%s_fMRI_grp%d_subj%d_behavdata2.txt',fn,i,j));
behavdata = double(behavdata);
save (rf_plot_file, '-ascii', 'behavdata');
end
case {3} % plot all data
pattern = ...
['<ONLY INPUT PREFIX>*_fMRI_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');
% 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;
% behavdata = behavdata(:,lag+1);
% write behav data to file
%
rf_plot_file = fullfile(pn, ...
sprintf('%s_fMRI_grp%d_subj%d_behavdata3.txt',fn,i,j));
behavdata = double(behavdata);
save (rf_plot_file, '-ascii', 'behavdata');
end
end
end;
return; % save_response_fn2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -