📄 bfm_result_3v_ui.m
字号:
pls_contrasts(i).name = sprintf('Contrast #%d',i);
pls_contrasts(i).value = helmert_contrasts(:,i)';
end;
else
try
load(ContrastFile);
catch
msg = sprintf('ERROR: Cannot open contrast file "%s".',ContrastFile);
set(findobj(gcf,'Tag','MessageLine'),'String',msg);
return;
end;
end;
end
% contrast_fig = fmri_input_contrast_ui(pls_contrasts,conditions,1);
link_info.hdl = gcbf;
link_info.name = 'ContrastFigHdl';
setappdata(contrast_fig,'LinkFigureInfo',link_info);
setappdata(gcbf,'ContrastFigHdl',contrast_fig);
return; % OpenContrastWindow
%-------------------------------------------------------------------------
%
function OpenDesignPlot()
scores_fig = getappdata(gcbf,'ScorePlotHdl');
if ~isempty(scores_fig)
msg = 'ERROR: Design Scores Plot is already been opened';
set(findobj(gcf,'Tag','MessageLine'),'String',msg);
return;
end
h = findobj(gcbf,'Tag','ResultFile');
PLSresultFile = get(h,'UserData');
scores_fig = fmri_plot_scores('LINK',PLSresultFile);
lv_idx = getappdata(gcbf,'CurrLVIdx');
if (lv_idx ~= 1)
fmri_plot_scores('UPDATE_LV_SELECTION',scores_fig,lv_idx);
end;
link_info.hdl = gcbf;
link_info.name = 'ScorePlotHdl';
setappdata(scores_fig,'LinkFigureInfo',link_info);
setappdata(gcbf,'ScorePlotHdl',scores_fig);
return; % OpenDesignPlot
%-------------------------------------------------------------------------
%
function OpenBrainScoresPlot()
bs_plot = getappdata(gcf,'BSPlotHdl');
if ~isempty(bs_plot)
msg = 'ERROR: Brain score plot is already been opened';
set(findobj(gcf,'Tag','MessageLine'),'String',msg);
return;
end;
sessionFileList = getappdata(gcbf,'SessionFileList');
h = findobj(gcbf,'Tag','ResultFile');
PLSresultFile = get(h,'UserData');
bs_plot = fmri_plot_brain_scores('LINK',sessionFileList,PLSresultFile);
link_info.hdl = gcbf;
link_info.name = 'BSPlotHdl';
setappdata(bs_plot,'LinkFigureInfo',link_info);
setappdata(gcbf,'BSPlotHdl',bs_plot);
return; % OpenBrainScoresPlot
%-------------------------------------------------------------------------
%
function SaveResultToIMG(is_disp)
%
h = findobj(gcf,'Tag','ResultFile'); PLSresultFile = get(h,'Userdata');
try % load the dimension info of the st_datamat
load(PLSresultFile,'st_dims'),
catch
msg =sprintf('ERROR: Cannot load the PLS result file "%s".',PLSresultFile);
set(findobj(gcf,'Tag','MessageLine'),'String',msg);
return;
end;
h = findobj(gcf,'Tag','LVIndexEdit'); lv_idx = get(h,'Userdata');
curr_lv_idx = getappdata(gcf,'CurrLVIdx');
if (lv_idx ~= curr_lv_idx),
lv_idx = curr_lv_idx;
set(h,'String',num2str(lv_idx));
end;
old_pointer = get(gcf,'Pointer');
fig_hdl = gcf;
set(fig_hdl,'Pointer','watch');
win_size = getappdata(gcf,'WinSize');
cluster_mask_state = get(findobj(gcf,'tag','ClusterMask'),'Userdata');
isbsr = getappdata(gcf,'ViewBootstrapRatio');
if isbsr
cluster_info = getappdata(gcf, 'cluster_bsr');
coords = getappdata(gcf,'BSRatioCoords');
else
cluster_info = getappdata(gcf, 'cluster_blv');
coords = getappdata(gcf,'BLVCoords');
end
if length(cluster_info) < curr_lv_idx
cluster_info = [];
else
cluster_info = cluster_info{curr_lv_idx};
end
if cluster_mask_state
cluster_info = [];
end
for i = 1:win_size
if isempty(cluster_info)
cluster_idx{i} = coords;
else
cluster_idx{i} = cluster_info.data{i}.idx;
end
if isequal(coords, cluster_idx{i})
non_cluster_coords{i} = [];
else
[tmp cluster_coords] = intersect(coords,cluster_idx{i});
non_cluster_coords{i} = ones(1,length(coords));
non_cluster_coords{i}(cluster_coords) = 0;
non_cluster_coords{i} = find(non_cluster_coords{i});
end
end
if (getappdata(gcf,'ViewBootstrapRatio') == 0), % save brain lv
thresh = getappdata(gcf,'BLVThreshold');
if is_disp
create_st_brainlv_disp(PLSresultFile,lv_idx,thresh,non_cluster_coords);
else
create_st_brainlv_img(PLSresultFile,lv_idx,thresh,non_cluster_coords);
end
else % save bootstrap ratio
thresh_ratio = getappdata(gcf,'BSThreshold');
if is_disp
create_bs_ratio_disp(PLSresultFile,lv_idx,thresh_ratio,non_cluster_coords);
else
create_bs_ratio_img(PLSresultFile,lv_idx,thresh_ratio,non_cluster_coords);
end
end;
set(fig_hdl,'Pointer',old_pointer);
return; % SaveResultToIMG
%--------------------------------------------------------------------------
function create_st_brainlv_disp(PLSresultFile,lv_idx,thresh_ratio,non_cluster_coords);
% get the output IMG filename first
%
[pn fn] = fileparts(PLSresultFile);
resultfile_prefix = fn(1:end-11);
image_fn = [resultfile_prefix, sprintf('BfMRIblv_disp_lv%d.img',lv_idx)];
[filename, pathname] = uiputfile(image_fn,'Brain LV IMG file');
img_file = [pathname, filesep, filename];
if isequal(filename,0)
return;
end;
% load the result file
%
load(PLSresultFile,'brainlv','s','st_dims','st_win_size','st_coords', ...
'st_voxel_size','st_origin');
is_rescale = get(findobj(gcf,'Tag','RESCALECheckbox'),'value');
if is_rescale
for i=1:length(s)
brainlv(:,i) = brainlv(:,i).*s(i);
end
end
newcoords = st_coords;
voxel_size = st_voxel_size;
origin = st_origin;
dims = st_dims([1 2 4]);
% save background to img
%
brainlv = brainlv(:,lv_idx);
bg_img = getappdata(gcf,'BackgroundImg');
cmap = getappdata(gcf,'cmap');
num_blv_colors = 25;
brain_region_color_idx = 51;
first_lower_color_idx = 101;
first_upper_color_idx = 126;
h = findobj(gcf,'Tag','MaxValue'); max_blv = str2num(get(h,'String'));
h = findobj(gcf,'Tag','MinValue'); min_blv = str2num(get(h,'String'));
brainlv(non_cluster_coords{1}) = 0;
too_large = find(brainlv > max_blv); brainlv(too_large) = max_blv;
too_small = find(brainlv < min_blv); brainlv(too_small) = min_blv;
% Create the image slices in which voxels are set to be within certain range
%
lower_interval = (abs(min_blv) - thresh_ratio) / (num_blv_colors-1);
upper_interval = (max_blv - thresh_ratio) / (num_blv_colors-1);
blv = zeros(1,length(newcoords)) + brain_region_color_idx;
lower_idx = find(brainlv <= -thresh_ratio);
blv_offset = brainlv(lower_idx) - min_blv;
lower_color_idx = round(blv_offset/lower_interval)+first_lower_color_idx;
blv(lower_idx) = lower_color_idx;
upper_idx = find(brainlv >= thresh_ratio);
blv_offset = max_blv - brainlv(upper_idx);
upper_color_idx = num_blv_colors - round(blv_offset/upper_interval);
upper_color_idx = upper_color_idx + first_upper_color_idx - 1;
blv(upper_idx) = upper_color_idx;
if isempty(bg_img)
non_brain_region_color_idx = size(cmap,1);
img = zeros(1,dims(1)*dims(2)*dims(3)) + non_brain_region_color_idx;
img(newcoords) = blv;
img = reshape(img,dims);
else
max_bg = max(bg_img(:));
min_bg = min(bg_img(:));
img = (bg_img - min_bg) / (max_bg - min_bg) * 100;
img(newcoords(lower_idx)) = blv(lower_idx);
img(newcoords(upper_idx)) = blv(upper_idx);
img = reshape(img,dims);
end
% img = zeros(dims);
% blv = brainlv(:,lv_idx);
% blv(abs(blv) < thresh_ratio) = 0;
% img(st_coords) = blv;
descrip = sprintf('BrainLV from %s, LV: %d, Threshold: %8.5f', ...
PLSresultFile,lv_idx,thresh_ratio);
rri_write_img(img_file,img,0,dims,st_voxel_size,16,st_origin,descrip);
% save background to img
%
[tmp filename] = fileparts(filename);
filename=fullfile(pathname, filename);
save(filename,'cmap');
return; % create_st_brainlv_disp
%--------------------------------------------------------------------------
function create_bs_ratio_disp(PLSresultFile,lv_idx,thresh_ratio,non_cluster_coords);
% get the output IMG filename first
%
[pn fn] = fileparts(PLSresultFile);
resultfile_prefix = fn(1:end-11);
image_fn = [resultfile_prefix, sprintf('BfMRIbsr_disp_lv%d.img',lv_idx)];
[filename, pathname] = uiputfile(image_fn,'Bootstrap Result IMG file');
img_file = [pathname, filesep, filename];
if isequal(filename,0)
return;
end;
% load the result file
%
load(PLSresultFile,'boot_result','st_dims','st_win_size','st_coords', ...
'st_voxel_size','st_origin');
if isfield(boot_result,'compare')
boot_result.compare_brain = boot_result.compare;
end
bs_ratio = boot_result.compare_brain;
newcoords = st_coords;
voxel_size = st_voxel_size;
origin = st_origin;
dims = st_dims([1 2 4]);
% save background to img
%
brainlv = bs_ratio(:,lv_idx);
bg_img = getappdata(gcf,'BackgroundImg');
cmap = getappdata(gcf,'cmap');
num_blv_colors = 25;
brain_region_color_idx = 51;
first_lower_color_idx = 101;
first_upper_color_idx = 126;
h = findobj(gcf,'Tag','MaxRatio'); max_blv = str2num(get(h,'String'));
h = findobj(gcf,'Tag','MinRatio'); min_blv = str2num(get(h,'String'));
brainlv(non_cluster_coords{1}) = 0;
too_large = find(brainlv > max_blv); brainlv(too_large) = max_blv;
too_small = find(brainlv < min_blv); brainlv(too_small) = min_blv;
% Create the image slices in which voxels are set to be within certain range
%
lower_interval = (abs(min_blv) - thresh_ratio) / (num_blv_colors-1);
upper_interval = (max_blv - thresh_ratio) / (num_blv_colors-1);
blv = zeros(1,length(newcoords)) + brain_region_color_idx;
lower_idx = find(brainlv <= -thresh_ratio);
blv_offset = brainlv(lower_idx) - min_blv;
lower_color_idx = round(blv_offset/lower_interval)+first_lower_color_idx;
blv(lower_idx) = lower_color_idx;
upper_idx = find(brainlv >= thresh_ratio);
blv_offset = max_blv - brainlv(upper_idx);
upper_color_idx = num_blv_colors - round(blv_offset/upper_interval);
upper_color_idx = upper_color_idx + first_upper_color_idx - 1;
blv(upper_idx) = upper_color_idx;
if isempty(bg_img)
non_brain_region_color_idx = size(cmap,1);
img = zeros(1,dims(1)*dims(2)*dims(3)) + non_brain_region_color_idx;
img(newcoords) = blv;
img = reshape(img,dims);
else
max_bg = max(bg_img(:));
min_bg = min(bg_img(:));
img = (bg_img - min_bg) / (max_bg - min_bg) * 100;
img(newcoords(lower_idx)) = blv(lower_idx);
img(newcoords(upper_idx)) = blv(upper_idx);
img = reshape(img,dims);
end
% img = zeros(dims);
% bsr = bs_ratio(:,lv_idx);
% bsr(abs(bsr) < thresh_ratio) = 0;
% img(st_coords) = bsr;
descrip = sprintf('Bootstrap ratio from %s, LV: %d, Threshold: %8.5f', ...
PLSresultFile,lv_idx,thresh_ratio);
rri_write_img(img_file,img,0,dims,st_voxel_size,16,st_origin,descrip);
% save background to img
%
[tmp filename] = fileparts(filename);
filename=fullfile(pathname, filename);
save(filename,'cmap');
return; % create_bs_ratio_disp
%--------------------------------------------------------------------------
function create_st_brainlv_img(PLSresultFile,lv_idx,thresh_ratio,non_cluster_coords);
% get the output IMG filename first
%
[pn fn] = fileparts(PLSresultFile);
resultfile_prefix = fn(1:end-11);
image_fn = [resultfile_prefix, sprintf('BfMRIblv_lv%d.img',lv_idx)];
[filename, pathname] = uiputfile(image_fn,'Brain LV IMG file');
img_file = [pathname, filesep, filename];
if isequal(filename,0)
return;
end;
% load the result file
%
load(PLSresultFile,'brainlv','s','st_dims','st_win_size','st_coords', ...
'st_voxel_size','st_origin');
is_rescale = get(findobj(gcf,'Tag','RESCALECheckbox'),'value');
if is_rescale
for i=1:length(s)
brainlv(:,i) = brainlv(:,i).*s(i);
end
end
dims = st_dims([1 2 4]);
img = zeros(dims);
blv = brainlv(:,lv_idx);
blv(abs(blv) < thresh_ratio) = 0;
img(st_coords) = blv;
img(st_coords(non_cluster_coords{1})) = 0;
descrip = sprintf('BrainLV from %s, LV: %d, Threshold: %8.5f', ...
PLSresultFile,lv_idx,thresh_ratio);
rri_write_img(img_file,img,0,dims,st_voxel_size,16,st_origin,descrip);
return; % create_st_brainlv_img
%--------------------------------------------------------------------------
function create_bs_ratio_img(PLSresultFile,lv_idx,thresh_ratio,non_cluster_coords);
% get the output IMG filename first
%
[pn fn] = fileparts(PLSresultFile);
resultfile_prefix = fn(1:end-11);
image_fn = [resultfile_prefix, sprintf('BfMRIbsr_lv%d.img',lv_idx)];
[filename, pathname] = uiputfile(image_fn,'Bootstrap Result IMG file');
img_file = [pathname, filesep, filename];
if isequal(filename,0)
return;
end;
% load the result file
%
load(PLSresultFile,'boot_result','st_dims','st_win_size','st_coords', ...
'st_voxel_size','st_origin');
if isfield(boot_result,'compare')
boot_result.compare_brain = boot_result.compare;
end
bs_ratio = boot_result.compare_brain;
dims = st_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -