📄 struct_plot_datamatcorrs.m
字号:
if ~isempty(contrast_fig) & ishandle(contrast_fig)
close(contrast_fig);
end;
return; % DeleteLinkedFigure
%---------------------------------------------------------------------------
%
function SetObjPosition(ObjName)
f_pos = get(gcf,'Position');
obj = getappdata(gcf,'ObjPosition');
% set the positions for all objects
%
if ~exist('ObjName','var') | isempty(ObjName)
for i=1:length(obj),
obj_pos = obj(i).pos;
obj_pos(2) = f_pos(4) - obj_pos(2);
set(findobj(gcf,'Tag',obj(i).name),'Position',obj_pos);
end;
return;
end;
% set the position for a specfic object
%
i = 1;
while i < length(obj),
if strcmp(ObjName,obj(i).name)
obj_pos = obj(i).pos;
obj_pos(2) = f_pos(4) - obj_pos(2);
set(findobj(gcf,'Tag',obj(i).name),'Position',obj_pos);
return;
end;
i = i + 1;
end;
return; % SetObjPosition
%---------------------------------------------------------------------------
%
function CreateObjPosRecord()
%
% set object location, notice that the y value is counted from the top
% of the figure, instead of bottom as default
%
obj(1).name = 'ResultFileLabel'; obj(1).pos = [19 40 70 16];
obj(2).name = 'ResultFile'; obj(2).pos = [90 40 144 16];
obj(3).name = 'LVIndexLabel'; obj(3).pos = [19 75 55 19];
obj(4).name = 'LVIndexEdit'; obj(4).pos = [77 75 38 23];
obj(5).name = 'LVNumberLabel'; obj(5).pos = [125 75 20 19];
obj(6).name = 'LVNumberEdit'; obj(6).pos = [145 75 38 19];
obj(7).name = 'SliceFrame'; obj(7).pos = [19 184 172 95];
obj(8).name = 'FirstSliceLabel'; obj(8).pos = [40 133 67 19];
obj(9).name = 'FirstSlice'; obj(9).pos = [115 133 57 22];
obj(10).name = 'LastSliceLabel'; obj(10).pos = [38 163 67 19];
obj(11).name = 'LastSlice'; obj(11).pos = [115 163 57 22];
obj(12).name = 'ThresholdFrame'; obj(12).pos = [19 325-111 172 125];
obj(13).name = 'BLVTitle'; obj(13).pos = [75 213-111 58 19];
obj(14).name = 'BLVValueLabel'; obj(14).pos = [28 240-111 76 19];
obj(15).name = 'BLVValue'; obj(15).pos = [110 240-111 67 19];
obj(16).name = 'ThresholdLabel'; obj(16).pos = [28 265-111 76 19];
obj(17).name = 'Threshold'; obj(17).pos = [110 265-111 67 22];
obj(18).name = 'MinValueLabel'; obj(18).pos = [28 290-111 76 19];
obj(19).name = 'MinValue'; obj(19).pos = [110 290-111 67 22];
obj(20).name = 'MaxValueLabel'; obj(20).pos = [28 315-111 76 19];
obj(21).name = 'MaxValue'; obj(21).pos = [110 315-111 67 22];
obj(22).name = 'BSRatioTitle'; obj(22).pos = [60 213-111 90 19];
obj(23).name = 'PValueLabel'; obj(23).pos = [30 240-111 105 19];
obj(24).name = 'PValue'; obj(24).pos = [132 240-111 56 19];
obj(25).name = 'BSThresholdLabel'; obj(25).pos = [28 260-111 76 19];
obj(26).name = 'BSThreshold'; obj(26).pos = [110 260-111 67 22];
obj(27).name = 'MinRatioLabel'; obj(27).pos = [28 290-111 76 19];
obj(28).name = 'MinRatio'; obj(28).pos = [110 290-111 67 22];
obj(29).name = 'MaxRatioLabel'; obj(29).pos = [28 315-111 76 19];
obj(30).name = 'MaxRatio'; obj(30).pos = [110 315-111 67 22];
obj(31).name = 'LocationFrame'; obj(31).pos = [19 420-111 172 85];
obj(32).name = 'XYZVoxelLabel'; obj(32).pos = [35 365-111 50 19];
obj(33).name = 'XYZVoxel'; obj(33).pos = [75 365-111 105 19];
obj(34).name = 'XYZmmLabel'; obj(34).pos = [35 390-111 70 19];
obj(35).name = 'XYZmm'; obj(35).pos = [35 408-111 145 19];
obj(36).name = 'RESCALECheckbox'; obj(36).pos = [19 347 172 28];
% obj(37).name = 'PLOTButton'; obj(37).pos = [50 410 110 40];
obj(37).name = 'CLOSEButton'; obj(37).pos = [19 460 172 40];
% obj(38).name = 'CLOSEButton'; obj(38).pos = [50 460 110 40];
% obj(38).name = 'CLOSEButton'; obj(38).pos = [115 460 67 28];
setappdata(gcf,'ObjPosition',obj);
return; % CreateObjPosRecord
%---------------------------------------------------------------------------
%
function rot_amount = load_pls_result()
% wait message
old_pointer = get(gcf,'Pointer');
set(gcf,'Pointer','watch');
msg = 'Loading PLS result ... please wait';
set(findobj(gcf,'Tag','MessageLine'),'String',msg);
h = findobj(gcf,'Tag','ResultFile');
PLSresultFile = get(h,'UserData');
load(PLSresultFile);
if exist('bscan','var') & ~isempty(bscan)
num_conditions = length(bscan);
else
num_conditions = num_cond_lst(1);
end
setting = getappdata(gcf,'setting');
bsr = [];
if exist('boot_result','var') & ~isempty(boot_result)
bsr = boot_result.compare;
end
if ~isempty(setting) & isfield(setting,'orient')
dims = setting.orient.dims;
origin_pattern = setting.orient.pattern;
old_coord = newcoords;
new_coord = setting.orient.coords;
if exist('datamatcorrs_lst','var') & ~isempty(datamatcorrs_lst)
for i=1:length(datamatcorrs_lst)
blv = [datamatcorrs_lst{i}]';
blv = rri_xy_orient_data(blv,old_coord,new_coord,dims,origin_pattern);
datamatcorrs_lst{i} = blv';
end
end
if ~isempty(bsr)
bsr =rri_xy_orient_data(bsr,old_coord,new_coord,dims,origin_pattern);
end
end
if isempty(setting)
grp_idx = 1; % group idx
lv_idx = 1; % condition idx
bs_lv_idx = 1;
behav_idx = 1; % behavior idx
rot_amount = 1;
else
grp_idx = setting.grp_idx;
lv_idx = setting.lv_idx;
if isfield(setting, 'bs_lv_idx')
bs_lv_idx = setting.bs_lv_idx;
else
bs_lv_idx = 1;
end
behav_idx = setting.behav_idx;
rot_amount = setting.rot_amount;
end;
num_grp = length(num_subj_lst);
num_lv = num_conditions;
bs_num_lv = size(brainlv,2);
brainlv = datamatcorrs_lst{grp_idx};
num_behav = size(brainlv, 1) / num_conditions;
if exist('behavlv','var')
set(gcf,'Name', ...
sprintf('PET Behavioral PLS Brain LV Plot: %s',PLSresultFile));
set(findobj(gcf,'Tag','OpenBrainPlot'), 'Visible', 'On');
set(findobj(gcf,'Tag','OpenBehavPlot'), 'Visible', 'Off');
set(findobj(gcf,'Tag','OpenDesignPlot'), 'Visible', 'Off');
set(findobj(gcf,'Tag','OpenRFPlot'), 'Visible', 'Off');
set(findobj(gcf,'Tag','OpenRF1Plot'), 'Visible', 'On');
set(findobj(gcf,'tag','OpenDatamatcorrsPlot'), 'visible', 'on');
setappdata(gcf,'isbehav',1);
setappdata(gcf,'datamatcorrs_lst',datamatcorrs_lst);
elseif exist('designlv','var')
set(gcf,'Name', ...
sprintf('PET Task PLS Brain LV Plot: %s',PLSresultFile));
set(findobj(gcf,'Tag','OpenBrainPlot'), 'Visible', 'Off');
set(findobj(gcf,'Tag','OpenBehavPlot'), 'Visible', 'Off');
set(findobj(gcf,'Tag','OpenDesignPlot'), 'Visible', 'On');
set(findobj(gcf,'Tag','OpenRFPlot'), 'Visible', 'On');
set(findobj(gcf,'Tag','OpenRF1Plot'), 'Visible', 'Off');
set(findobj(gcf,'tag','OpenDatamatcorrsPlot'), 'visible', 'off');
setappdata(gcf,'isbehav',0);
end
h = findobj(gcf,'Tag','GroupIndexEdit');
set(h,'String',num2str(grp_idx),'Userdata',grp_idx);
h = findobj(gcf,'Tag','GroupNumberEdit');
set(h,'String',num2str(num_grp),'Userdata',num_grp);
h = findobj(gcf,'Tag','LVIndexEdit');
set(h,'String',num2str(lv_idx),'Userdata',lv_idx);
h = findobj(gcf,'Tag','LVNumberEdit');
set(h,'String',num2str(num_lv),'Userdata',num_lv);
h = findobj(gcf,'Tag','BSLVIndexEdit');
set(h,'String',num2str(bs_lv_idx),'Userdata',bs_lv_idx);
h = findobj(gcf,'Tag','BSLVNumberEdit');
set(h,'String',num2str(bs_num_lv),'Userdata',bs_num_lv);
h = findobj(gcf,'Tag','BehavIndexEdit');
set(h,'String',num2str(behav_idx),'Userdata',behav_idx);
h = findobj(gcf,'Tag','BehavNumberEdit');
set(h,'String',num2str(num_behav),'Userdata',num_behav);
brainlv_lst = {};
for g = 1:num_grp
brainlv = datamatcorrs_lst{g}; % borrow 'blv' name to reuse code
r = size(brainlv, 1) / num_conditions;
c = size(brainlv, 2);
for b = 1:num_behav
mask = [0:(num_conditions-1)]*num_behav + b;
tmp = brainlv(mask, :);
tmp = tmp';
brainlv_lst{g,b} = tmp;
% for i = 1:num_conditions
% tmp{i} = brainlv(r*(i-1)+1:r*i, :);
% end
%
% brainlv = ones(num_conditions, c);
%
% for i = 1:num_conditions
% brainlv(i,:) = mean(tmp{i},1);
% end
%
% brainlv = brainlv';
% brainlv_lst{g} = brainlv;
end
end
setappdata(gcf,'brainlv',brainlv_lst);
setappdata(gcf, 's', s);
set_blv_fields(grp_idx,behav_idx,lv_idx);
if ~exist('boot_result','var') | isempty(boot_result)
ToggleView(0);
set(findobj(gcf,'Tag','ViewMenu'),'Visible','off');
else % show bootstrap ratio if exist
ToggleView(1);
set(findobj(gcf,'Tag','ViewMenu'),'Visible','on');
% set the bootstrap ratio field values
%
setappdata(gcf,'BSRatio',bsr);
set_bs_fields(bs_lv_idx);
UpdatePValue;
end;
set(gcf,'Pointer',old_pointer);
set(findobj(gcf,'Tag','MessageLine'),'String','');
setappdata(gcf,'DatamatFileList', datamat_files);
setappdata(gcf,'RotateAmount',rot_amount);
setappdata(gcf,'CurrGroupIdx',grp_idx);
setappdata(gcf,'CurrBehavIdx',behav_idx);
setappdata(gcf,'NumGroup',num_grp);
setappdata(gcf,'CurrLVIdx',lv_idx);
setappdata(gcf,'CurrBSLVIdx',bs_lv_idx);
% setappdata(gcf,'Dims',dims);
setappdata(gcf,'NumBSLVs',bs_num_lv)
return; % load_pls_result
%-------------------------------------------------------------------------
%
function OpenBrainPlot()
h = findobj(gcf,'Tag','ResultFile');
PLSresultFile = get(h,'UserData');
brain_plot = getappdata(gcf,'brain_plot');
if ~isempty(brain_plot)
msg = 'ERROR: Brain scores plot is already been opened';
set(findobj(gcf,'Tag','MessageLine'),'String',msg);
return;
end;
brain_plot = struct_plot_brain_scores('STARTUP',PLSresultFile);
link_info.hdl = gcbf;
link_info.name = 'brain_plot';
setappdata(brain_plot,'LinkFigureInfo',link_info);
setappdata(gcbf,'brain_plot',brain_plot);
return; % OpenBrainPlot
%-------------------------------------------------------------------------
%
function OpenResponseFnPlot()
DatamatFileList = getappdata(gcbf,'DatamatFileList');
rf_plot = getappdata(gcf,'RFPlotHdl');
if ~isempty(rf_plot)
msg = 'ERROR: Response function plot is already been opened';
set(findobj(gcf,'Tag','MessageLine'),'String',msg);
return;
end;
rf_plot = pet_plot_rf('LINK',DatamatFileList);
link_info.hdl = gcbf;
link_info.name = 'RFPlotHdl';
setappdata(rf_plot,'LinkFigureInfo',link_info);
setappdata(gcbf,'RFPlotHdl',rf_plot);
% make sure the Coord of the Response Function Plot contains
% the current point in the Response
%
cur_coord = getappdata(gcf,'Coord');
setappdata(rf_plot,'Coord',cur_coord);
return; % OpenResponseFnPlot
%-------------------------------------------------------------------------
%
function SetClusterReportOptions()
st_origin = getappdata(gcbf,'Origin');
dims = getappdata(gcbf,'Dims');
cluster_min_size = getappdata(gcbf,'ClusterMinSize');
cluster_min_dist = getappdata(gcbf,'ClusterMinDist');
if isempty(st_origin)
st_origin = round(dims([1 2 4])/2);
end;
prompt = {'Minimum cluster size (in voxels)', ...
'Minimum distance (in mm) between cluster peaks', ...
'Origin location (in voxels)' };
defValues = { num2str(cluster_min_size), ...
num2str(cluster_min_dist), ...
num2str(st_origin)};
dlgTitle='Cluster Report Options';
lineNo = 1;
answer = inputdlg(prompt,dlgTitle,lineNo,defValues);
if isempty(answer),
return;
end;
invalid_options = 0;
min_size = str2num(answer{1});
min_dist = str2num(answer{2});
origin_xyz = str2num(answer{3});
if isempty(min_size) | isempty(min_dist) | isempty(origin_xyz)
invalid_options = 1;
elseif (min_size <= 0) | (min_dist <= 0) | (sum(origin_xyz<= 0) ~= 0)
invalid_options = 1;
end;
if (invalid_options)
msg = 'Invalid cluster report options. Options do not changed';
set(findobj(gcbf,'Tag','MessageLine'),'String',msg);
return;
end;
setappdata(gcbf,'Origin',origin_xyz);
setappdata(gcbf,'ClusterMinSize',min_size);
setappdata(gcbf,'ClusterMinDist',min_dist);
return; % SetClusterReportOptions
%-------------------------------------------------------------------------
%
function OpenClusterReport()
% wait message
old_pointer = get(gcbf,'Pointer');
set(gcbf,'Pointer','watch');
msg = 'Generating Cluster Report ... please wait';
h = rri_wait_box(msg,[0.5 0.1]);
cluster_min_size = getappdata(gcbf,'ClusterMinSize');
cluster_min_dist = getappdata(gcbf,'ClusterMinDist');
struct_cluster_report(cluster_min_size,cluster_min_dist);
set(gcbf,'Pointer',old_pointer);
set(findobj(gcbf,'Tag','MessageLine'),'String','');
delete(h);
return; % OpenClusterReport
%-------------------------------------------------------------------------
function OpenContrastWindow()
contrast_fig = getappdata(gcbf,'ContrastFigHdl');
if ~isempty(contrast_fig)
msg = 'ERROR: Constrasts information has already been dispalyed.';
set(findobj(gcf,'Tag','MessageLine'),'String',msg);
return;
end
h = findobj(gcbf,'Tag','ResultFile');
PLSresultFile = get(h,'UserData');
load(PLSresultFile,'contrast_file','datamat_files');
if isequal(contrast_file,'NONE'),
msg = 'No contrast was used for this PLS analysis.';
set(findobj(gcf,'Tag','MessageLine'),'String',msg);
return;
end;
if isequal(contrast_file,'HELMERT'), % using Helmert matrix for contrasts
load(datamat_files{1});
conditions = session_info.condition;
num_conditions = length(conditions);
helmert_contrasts = rri_helmert_matrix(num_conditions);
for i=1:num_conditions-1,
pls_contrasts(i).name = sprintf('Contrast #%d',i);
pls_contrasts(i).value = helmert_contrasts(:,i)';
end;
else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -