def plot_brainrsa_regions(img, threshold=None, background=get_bg_ch2(), type='r'): """ Plot the RSA-result regions by 3 cuts (frontal, axial & lateral) Parameters ---------- img : string The file path of the .nii file of the RSA results. threshold : None or int. Default is None. The threshold of the number of voxels used in correction. If threshold=n, only the similarity clusters consisting more than threshold voxels will be visible. If it is None, the threshold-correction will not work. background : Niimg-like object or string. Default is stuff.get_bg_ch2() The background image that the RSA results will be plotted on top of. type : string 'r' or 't' The type of result (r-values or t-values). """ imgarray = nib.load(img).get_fdata() if (imgarray == np.nan).all() == True: print("No Valid Results") else: if threshold != None: imgarray = nib.load(img).get_fdata() affine = get_affine(img) imgarray = correct_by_threshold(imgarray, threshold) img = nib.Nifti1Image(imgarray, affine) if type == 'r': plotting.plot_roi(roi_img=img, bg_img=background, threshold=0, vmin=0.1, vmax=1, title="Similarity", resampling_interpolation="continuous") if type == 't': plotting.plot_roi(roi_img=img, bg_img=background, threshold=0, vmin=-7, vmax=7, title="Similarity", resampling_interpolation="continuous") plt.show() return 0
def plot_brainrsa_rlts(img, threshold=None, slice=[6, 6, 6], background=None, type='r'): """ Plot the RSA-result by a set of images Parameters ---------- img : string The file path of the .nii file of the RSA results. threshold : None or int. Default is None. The threshold of the number of voxels used in correction. If threshold=n, only the similarity clusters consisting more than threshold voxels will be visible. If it is None, the threshold-correction will not work. background : Niimg-like object or string. Default is None. The background image that the RSA results will be plotted on top of. type : string 'r' or 't' The type of result (r-values or t-values). """ imgarray = nib.load(img).get_data() if (imgarray == np.nan).all() == True: print("No Valid Results") else: if threshold != None: imgarray = nib.load(img).get_data() affine = get_affine(img) imgarray = correct_by_threshold(imgarray, threshold) img = nib.Nifti1Image(imgarray, affine) if background == None: plot_brainrsa_regions(img, threshold=threshold, type=type) plot_brainrsa_montage(img, threshold=threshold, slice=slice, type=type) plot_brainrsa_glass(img, threshold=threshold, type=type) plot_brainrsa_surface(img, threshold=threshold, type=type) else: plot_brainrsa_regions(img, threshold=threshold, background=background, type=type) plot_brainrsa_montage(img, threshold=threshold, slice=slice, background=background, type=type) plot_brainrsa_surface(img, threshold=threshold, type=type)
def plot_brainrsa_glass(img, threshold=None, type='r'): """ Plot the 2-D projection of the RSA-result Parameters ---------- img : string The file path of the .nii file of the RSA results. threshold : None or int. Default is None. The threshold of the number of voxels used in correction. If threshold=n, only the similarity clusters consisting more than threshold voxels will be visible. If it is None, the threshold-correction will not work. type : string 'r' or 't' The type of result (r-values or t-values). """ imgarray = nib.load(img).get_fdata() if (imgarray == np.nan).all() == True: print("No Valid Results") else: if threshold != None: imgarray = nib.load(img).get_fdata() affine = get_affine(img) imgarray = correct_by_threshold(imgarray, threshold) img = nib.Nifti1Image(imgarray, affine) if type == 'r': plotting.plot_glass_brain(img, colorbar=True, title="Similarity", black_bg=True, draw_cross=True, vmax=1) if type == 't': plotting.plot_glass_brain(img, colorbar=True, title="Similarity", black_bg=True, draw_cross=True, vmax=7) plt.show() return 0
def plot_brainrsa_surface(img, threshold=None, type='r'): """ Plot the RSA-result into a brain surface Parameters ---------- img : string The file path of the .nii file of the RSA results. threshold : None or int. Default is None. The threshold of the number of voxels used in correction. If threshold=n, only the similarity clusters consisting more than threshold voxels will be visible. If it is None, the threshold-correction will not work. type : string 'r' or 't' The type of result (r-values or t-values). """ imgarray = nib.load(img).get_data() if (imgarray == np.nan).all() == True: print("No Valid Results") else: if threshold != None: imgarray = nib.load(img).get_data() affine = get_affine(img) imgarray = correct_by_threshold(imgarray, threshold) img = nib.Nifti1Image(imgarray, affine) fsaverage = datasets.fetch_surf_fsaverage(mesh='fsaverage') texture_left = surface.vol_to_surf(img, fsaverage.pial_left) texture_right = surface.vol_to_surf(img, fsaverage.pial_right) # type='r' if type == 'r': plotting.plot_surf_stat_map(fsaverage.pial_left, texture_left, hemi='left', threshold=0.1, bg_map=fsaverage.sulc_right, colorbar=False, vmax=0.8, darkness=0.7) plotting.plot_surf_stat_map(fsaverage.pial_right, texture_right, hemi='right', threshold=0.1, bg_map=fsaverage.sulc_right, colorbar=True, vmax=0.8, darkness=0.7) plotting.plot_surf_stat_map(fsaverage.pial_right, texture_left, hemi='left', threshold=0.1, bg_map=fsaverage.sulc_right, colorbar=False, vmax=0.8, darkness=0.7) plotting.plot_surf_stat_map(fsaverage.pial_left, texture_right, hemi='right', threshold=0.1, bg_map=fsaverage.sulc_right, colorbar=True, vmax=0.8, darkness=0.7) plt.show() # type='t' if type == 't': plotting.plot_surf_stat_map(fsaverage.pial_left, texture_left, hemi='left', threshold=0.8, bg_map=fsaverage.sulc_right, colorbar=False, darkness=0.7) plotting.plot_surf_stat_map(fsaverage.pial_right, texture_right, hemi='right', threshold=0.8, bg_map=fsaverage.sulc_right, colorbar=True, darkness=0.7) plotting.plot_surf_stat_map(fsaverage.pial_right, texture_left, hemi='left', threshold=0.8, bg_map=fsaverage.sulc_right, colorbar=False, darkness=0.7) plotting.plot_surf_stat_map(fsaverage.pial_left, texture_right, hemi='right', threshold=0.8, bg_map=fsaverage.sulc_right, colorbar=True, darkness=0.7) plt.show()
def plot_brainrsa_montage(img, threshold=None, slice=[6, 6, 6], background=get_bg_ch2bet(), type='r'): """ Plot the RSA-result by different cuts Parameters ---------- img : string The file path of the .nii file of the RSA results. threshold : None or int. Default is None. The threshold of the number of voxels used in correction. If threshold=n, only the similarity clusters consisting more than threshold voxels will be visible. If it is None, the threshold-correction will not work. slice : array The point where the cut is performed. If slice=[slice_x, slice_y, slice_z], slice_x, slice_y, slice_z represent the coordinates of each cut in the x, y, z direction. If slice=[[slice_x1, slice_x2], [slice_y1, slice_y2], [slice_z1, slice_z2]], slice_x1 & slice_x2 represent the coordinates of each cut in the x direction, slice_y1 & slice_y2 represent the coordinates of each cut in the y direction, slice_z1 & slice_z2 represent the coordinates of each cut in the z direction. background : Niimg-like object or string. Default is stuff.get_bg_ch2bet() The background image that the RSA results will be plotted on top of. type : string 'r' or 't' The type of result (r-values or t-values). """ imgarray = nib.load(img).get_data() if (imgarray == np.nan).all() == True: print("No Valid Results") else: if threshold != None: imgarray = nib.load(img).get_data() affine = get_affine(img) imgarray = correct_by_threshold(imgarray, threshold) img = nib.Nifti1Image(imgarray, affine) slice_x = slice[0] slice_y = slice[1] slice_z = slice[2] if type == 'r': vmax = 1 if type == 't': vmax = 7 if slice_x != 0: plotting.plot_stat_map(stat_map_img=img, bg_img=background, display_mode='x', cut_coords=slice_x, title="Similarity -sagittal", draw_cross=True, vmax=vmax) if slice_y != 0: plotting.plot_stat_map(stat_map_img=img, bg_img=background, display_mode='y', cut_coords=slice_y, title="Similarity -coronal", draw_cross=True, vmax=vmax) if slice_z != 0: plotting.plot_stat_map(stat_map_img=img, bg_img=background, display_mode='z', cut_coords=slice_z, title="Similarity -axial", draw_cross=True, vmax=vmax) plt.show()
def test_correct_by_threshold(self): img = np.random.rand(20, 22, 21) threshold = 25 output = correct_by_threshold(img, threshold) self.assertEqual(output.shape[0], 20)