% With no arguments ViewRes opens the interactive window for viewing % the fMRI results saved earlier, or prodeced in batch jobs. % % % [out_image,tab_image,BigOutImage] = ViewRes(setup_name,pair_list,t_cutoff,cluster_number,... % slice_listVR,stat_nr,option) % % defaults : ViewRes(setup_name,[12 34 56],1.5,5,[1 2 3],2,'o',parameter1,parameter2,parameter3) % % to introduce different positive and negative cutoff enter cutoff = [cut_pos; cut_neg] % to introduce different cutoffs for each pair enter cutoff [t1 t2 t3] (for 3 pairs) % to introduce different cutoffs for each pair and slice enter % cutoff = [t11 t12 t13; t21 t22 t23] - for 3 pairs and 2 slices % % option is a string of characters : % if it contains : % n - no image is drawn (only variable out_image is returned % m - activation map is median filtered % l - no labels (x or y) are made % t - in plane talairach transformation is applied % this options performs Talairach transformation in plane ONLY % use ViewResTal to apply it in all 3 Dimensions % A - prints outline of the brain with green color for axial study % - changes the sign of t_tab1 % C - prints outline of the brain with green color for coronal study % a - prints outline of the brain with green color for autism study % b - only with one of: a,A,C options instead of outline it blacks out everything outisde % B - same as b but blacks out only activation maps - not anatomical image % digit N=(0:9) t_tab1 is replaced by t_tabN % + and digit, t_tab1 is replaced by t_tab(N+10) % M - use "median_image" (that is in fact mean of the whole data_base) % as anatomical image % y - surpress printing the Talairach grid on Talairach images % Y - surpress printing the Talairach grid on Talairach images, but leaves main AC-PC lines % H - create histogram image for the data distribution % p - slice by slice - sets variable thresholds to display t_cut percents of pixels positively activated % P -overall - sets variable thresholds to display t_cut percents of pixels positively activated % x - enhance gray scale contrast % c - displays the mass center for ROIs (parameter1 must be ROI data filename (string including the directory path % but NOT including the pair_name) % L - log (p2log) transform - to be used with probabilistcal SPMs % f - using fourier data % r - preserve the image ratio (the shape of the brain will not be squished or stretched) % z - shows green whenever the statistical map equals zero % ! - organizes all images in one column % _ - organizes all images in one raw % k - using mask defined by global variables % $ - will make color bars in corners of the image % R - create grean outline for talairach defined ROI as defined in global variable ROIfile_name % in global variables : ROIfile_name ROInumber_list % global MaskStatNr MaskCutPos MaskCutNeg MaskCluster % MaskPairName MaskWorkSlice MaskSetupName % % global variable do_after load, if defined, will be executed right after % loading data file, this can be used to further manipulate % data to be displayed function [out_image,tab_image,BigOutImage] = ViewRes(setup_name1,pair_list,t_cutoff1,cluster_number1, ... slice_listVR,stat_nr1,option,parameter1,parameter2,parameter3) out_image=[]; tab_image=[]; BigOutImage=[]; % globals global c_gray1 c_gray2 OutImage TabImage SetupNameVR global save_directory image_directory save_directory_tab global t_cutoff cluster_number tiff_name TiffImage col_map MatlabVersion global col_map bw_col_map tif_col_map hot_color_map cool_color_map add_color_map if isempty(col_map), colmap_setup; end if nargout == 0, out_image = [];end if nargin == 0 disp('WARNING : program changed to adapt to MATLAB5') disp('use ViewResOne to view data with interactive window wit fancy buttons'); end % fmri_initialization if isempty(MatlabVersion), MatlabVersion = version; end BigOutImage = []; if nargin <8, parameter1 = []; end; if nargin <9, parameter2 = []; end; if nargin <10, parameter3 = []; end; if nargin <7, option = []; end; if nargin <6, stat_nr1 = -1; end; if nargin <5, slice_listVR = [1 2 3] ; end; if nargin <4, cluster_number1 = 5, end; if nargin <3, t_cutoff1 = 1.5, end; if nargin <2, pair_list = [], end; if size(setup_name1,1) >1 [out_image,tab_image] = ViewResSetups1(setup_name1,pair_list,t_cutoff1,cluster_number1, ... slice_listVR,stat_nr1,option,parameter1,parameter2,parameter3); else if ~isempty(findstr('P',option)) option = option(find(option~='P')); percent_cutoff = t_cutoff1; disp(['(ViewRes)option P = ' num2str(percent_cutoff )]) [out_image,tab_image] = ViewRes(setup_name1,pair_list,0,0, ... slice_listVR,stat_nr1,[option 'n'],parameter1,parameter2,parameter3); tmp = tab_image(find(tab_image)); if ~isempty(tmp) tmp = tmp(find(tmp~=11)); t_cutoff1= my_prctile(tmp,100-percent_cutoff ); end disp(['(ViewRes)option P tcutoff1 = ' num2str(t_cutoff1)]) [out_image,tab_image,BigOutImage] = ViewRes(setup_name1,pair_list,t_cutoff1,cluster_number1, ... slice_listVR,stat_nr1,option,parameter1,parameter2,parameter3); if nargout == 0, out_image = [];end return end setup_name = setup_name1(find(setup_name1~=' ')); if look_for_data(setup_name) == 0 disp(['WARNING (ViewRes) cannot find the data for : ' setup_name]); end SetupNameVR = setup_name; % t_cutoff = t_cutoff1; cluster_number = cluster_number1; stat_nr = stat_nr1; if size(pair_list,1) ==1 if isstr(pair_list) ViewSize = 1; else ViewSize = size(pair_list,2); end else ViewSize = max(1,size(pair_list,1)); end SliceNumber = size(slice_listVR,2); stat_list = stat_nr; if SliceNumber ==1 & length(stat_nr)>1 SliceNumber = length(stat_nr); end name1 = [setup_name ' T-cutoff = ' num2str(t_cutoff1(1)) ' stat_nr = ' ... num2str(stat_nr) ' cluster_number = ' num2str(cluster_number)]; if strcmp(size(t_cutoff),[2 1]) cut_p = t_cutoff(1); cut_n = t_cutoff(2); end if SliceNumber>1 & ViewSize>1 my_sub1 = SliceNumber; my_sub2 = ViewSize; elseif isempty(findstr('!',option)) & isempty(findstr('_',option)) my_sub2 = min(ceil(sqrt(SliceNumber*ViewSize)),SliceNumber*ViewSize); my_sub1 = ceil(SliceNumber * ViewSize/my_sub2); elseif ~isempty(findstr('_',option)) my_sub2 = SliceNumber*ViewSize; my_sub1 = 1; elseif ~isempty(findstr('!',option)) my_sub1 = SliceNumber*ViewSize; my_sub2 = 1; end if MatlabVersion(1) ~='4' out_image = 11*ones(SliceNumber,ViewSize,2,2); TabImage = 11*zeros(SliceNumber,ViewSize,2,2); end if isempty(findstr('n',option)) figEPI = figure('Position',[10 20 min(1200,300*my_sub2), ... min(900,300*my_sub1)],'NumberTitle','off','Name',name1); end for pair_nr = 1:ViewSize pair_name = []; if isstr(pair_list) pair_name = pair_list(pair_nr,:); pair_name = pair_name(pair_name~=' '); elseif ~isempty(pair_list) pair_name = num2str(pair_list(pair_nr),20); end for is = 1:SliceNumber if (size(t_cutoff1,1)==SliceNumber) & (size(t_cutoff1,2)==ViewSize) cut_p = t_cutoff1(is,pair_nr); cut_n = -t_cutoff1(is,pair_nr); elseif (size(t_cutoff1,1)==1) & (size(t_cutoff1,2)==ViewSize) cut_p = t_cutoff1(pair_nr); cut_n = -t_cutoff1(pair_nr); elseif (size(t_cutoff1,1)==1) & (size(t_cutoff1,2)==1) cut_p = t_cutoff1; cut_n = -t_cutoff1; elseif (size(t_cutoff1,1)==2) & (size(t_cutoff1,2)==1) cut_p = t_cutoff1(1); cut_n = t_cutoff1(2); else error('(ViewRes) wrong dimension of t_cutoff') end if length(slice_listVR) > 1 work_slice = slice_listVR(is); else work_slice = slice_listVR; if ~isempty(stat_list) stat_nr = stat_list(is); else stat_nr = []; end end if work_slice ~= 0 if isempty(findstr('n',option)) if SliceNumber>1 & ViewSize>1 & isempty(findstr('!',option)) my_subplot(my_sub1,my_sub2,is,pair_nr); else my_subplot(my_sub1,my_sub2,is*pair_nr); end end if stat_nr1 == 21 & ~isempty(FreqList) & isempty(findstr('n',option)) if size(FreqList,2) == ViewSize freq = FreqList(pair_nr) phase_up = PhaseUpList(pair_nr); phase_down = PhaseDownList(pair_nr); elseif size(FreqList,2) == SliceNumber freq = FreqList(is); phase_up = PhaseUpList(is); phase_down = PhaseDownList(is); else error(['wrong size of FreqList ' ... num2str(size(FreqList))]); end end if stat_nr1 == 21 & ~isempty(parameter1) & isempty(findstr('n',option)) disp(['freq=' num2str(parameter1) ... ' phase_down=' num2str(parameter2) ... ' phase_up=' num2str(parameter3)]); [out_image1,out_image2] = ViewResTool(setup_name,work_slice,stat_nr, ... pair_name,cut_p,cut_n,cluster_number,option, ... parameter1,parameter2,parameter3); else if ((is == 1) & (pair_nr == 1)) | ((is == my_sub1) & (pair_nr == my_sub2)) [out_image1,out_image2] = ViewResTool(setup_name,work_slice,stat_nr, ... pair_name,cut_p,cut_n,cluster_number,option,parameter1,parameter2,parameter3); else [out_image1,out_image2] = ViewResTool(setup_name,work_slice,stat_nr, ... pair_name,cut_p,cut_n,cluster_number,[option 's'],parameter1,parameter2,parameter3); end end TiffImage = out_image1; if MatlabVersion(1) ~='4' if size(out_image1,1)>size(out_image,3) | size(out_image1,2)>size(out_image,4) tmp = 11*ones(SliceNumber,ViewSize,max(size(out_image1,1),size(out_image,3)), ... max(size(out_image1,2),size(out_image,4))); tmp2 = 11*ones(SliceNumber,ViewSize,max(size(out_image2,1),size(out_image,3)), ... max(size(out_image2,2),size(out_image,4))); for i=1:SliceNumber for j=1:ViewSize tmp(i,j,1:size(out_image,3),1:size(out_image,4)) = ... out_image(i,j,1:size(out_image,3),1:size(out_image,4)); tmp2(i,j,1:size(out_image1,3),1:size(out_image1,4)) = ... TabImage(i,j,1:size(out_image1,3),1:size(out_image1,4)); end end tmp(is,pair_nr,1:size(out_image1,1),1:size(out_image1,2)) = ... out_image1; tmp2(is,pair_nr,1:size(out_image2,1),1:size(out_image2,2)) = ... out_image2; out_image = tmp; TabImage = tmp2; elseif ~isempty(out_image1) if size(out_image,3) == size(out_image1,1) & size(out_image,4) == size(out_image1,2) out_image(is,pair_nr,:,:) = out_image1; end if ~isempty(out_image2) TabImage(is,pair_nr,:,:) = out_image2; end end else % if MatlabVersion(1) ~='4' out_image = out_image1; TabImage = out_image2; end % if MatlabVersion(1) ~='4' end end end if isempty(findstr('n',option)) c_gray1 = uicontrol('Style','Slider','Position',[5 11 300 8],... 'Min',1,'Max',200,'Value',10, 'Callback','set_gray_scale'); c_gray2 = uicontrol('Style','Slider','Position',[5 1 300 8],... 'Min',1,'Max',200,'Value',190, 'Callback','set_gray_scale'); set_gray_scale; % c_spyglass = uicontrol('Style','Pushbutton','Position',[325 22 200 15],... % 'String','make Spyglass directory', 'Callback',' SaveSpyGlassFolder'); c_ps = uicontrol('Style','Pushbutton','String','PostScript save',... 'Position',[325 1 100 8],'Callback','ViewResPsSave'); tiff_name = [image_directory setup_name '.tiff']; c_tiff = uicontrol('Style','Pushbutton','String','TIFF save',... 'Position',[325 11 100 8],'Callback','TiffSave'); end end OutImage = out_image; tab_image = TabImage; if MatlabVersion(1) =='4' tmp = 11*ones(SliceNumber*(1+size(out_image,4))-1,ViewSize*(1+size(out_image,3))-1); tmp2 = 11*ones(SliceNumber*(1+size(out_image,4))-1,ViewSize*(1+size(out_image,3))-1); for i=1:SliceNumber for j=1:ViewSize tmp((i-1)*(1+size(out_image,4))+(1:size(out_image,4)),(j-1)*(1+size(out_image,3))+(1:size(out_image,3))) = ... squeeze(out_image(i,j,1:size(out_image,3),1:size(out_image,4)))'; tmp2((i-1)*(1+size(out_image,4))+(1:size(out_image,4)),(j-1)*(1+size(out_image,3))+(1:size(out_image,3))) = ... squeeze(TabImage(i,j,1:size(out_image,3),1:size(out_image,4)))'; end end TabImage = tmp2; OutImage = out_image; TiffImage = out_image; end % if MatlabVersion(1) ~='4' TiffImage = out_image; if nargout < 2, tab_image = [];end if ~isempty(findstr('T',option)) plist = num2str(pair_list); plist = plist(find(plist~=' ')); tiff_name = [image_directory setup_name1 plist 'BIG.tiff']; size_list = size(out_image); if length(size_list)==3, size_list = [1 size_list]; end if length(size(out_image))==3, out_image = reshape(out_image,1,size(out_image,1),size(out_image,2),size(out_image,3)); end big_image = 11*ones(5*(size_list(1)-1)+size_list(1)*size_list(3),5*(size_list(2)-1)+size_list(2)*size_list(4)); for i=1:size_list(1) for j=1:size_list(2) big_image((i-1)*(5+size_list(3))+1:i*(5+size_list(3))-5,(j-1)*(5+size_list(4))+1:j*(5+size_list(4))-5) = ... squeeze(out_image(i,j,:,:)); end % for j=1:size_list(2) end % for i=1:size_list(1) if ~isempty(findstr('$',option)) [bi_sizeY,bi_sizeX] = size(big_image); big_image_colorbar = 11*ones(bi_sizeY,floor(bi_sizeX/50)); cb_skip = floor(bi_sizeY/25); for i=1:10 big_image_colorbar(bi_sizeY-i*cb_skip:bi_sizeY-(i-1)*cb_skip,:) = ... (11-i)+0*big_image_colorbar(bi_sizeY-i*cb_skip:bi_sizeY-(i-1)*cb_skip,:); end for i=1:10 big_image_colorbar(1+(i-1)*cb_skip:i*cb_skip,:) = ... 221-i+0*big_image_colorbar(1+(i-1)*cb_skip:i*cb_skip,:); end big_image = [big_image big_image_colorbar]; end big_image = min(big_image,224); if ~isempty(findstr('w',option)) tiff_out = TiffSave(big_image',bw_col_map,tiff_name,'n'); else tiff_out = TiffSave(big_image',col_map,tiff_name,'n'); end end if nargout == 0, out_image = [];end BigOutImage = zeros(size(OutImage,3)*size(OutImage,2),size(OutImage,1)*size(OutImage,4)); for i=1:size(OutImage,1) for j=1:size(OutImage,2) counter1 = (i-1)*size(OutImage,4); counter2 = (j-1)*size(OutImage,3); BigOutImage(counter2+1:counter2+size(OutImage,3),counter1+1:counter1+size(OutImage,4)) = squeeze(OutImage(i,j,:,:)); end end