def calc_mean(data_dir, seg_file, label_file, sessid_file=None): if sessid_file == None: sessid_list = [] sess_dir_list = glob.glob(os.path.join(data_dir, '*')) for sess_dir in sess_dir_list: sessid_list.append(os.path.split(sess_dir)[-1]) else: sessid_list = readsessid(sessid_file) vmin = 0 vmax = 1 label_img = nib.load(seg_file) label_dat = label_img.get_data() label_list = np.unique(label_dat) label_name_file = label_file label_name_list = readsessid(label_name_file)[:-1] figname = 'meants.png' dataname = 'meants' for sess in sessid_list: print sess sess_dir = os.path.join(data_dir, sess) outfig = os.path.join(sess_dir, figname) outdata = os.path.join(sess_dir, dataname) data_file = os.path.join(sess_dir, 'smwc1'+sess+'_anat.nii') img = nib.load(data_file) dat = img.get_data() #meants = [] meants = np.zeros(len(label_list[1:])) for label in label_list[1:]: label_voxel = (label_dat == label) label_voxel_index = label_voxel.nonzero() #label_size.append(len(label_voxel_index)) dat_tmp = dat[label_voxel_index] #dens = stats.kde.gaussian_kde(dat_tmp) #x_tmp = np.linspace(vmin, vmax, n_pdf) #freq = dens(x_tmp) #databank[:, label-1] = freq meants[label-1] = dat_tmp.mean() # For plotting each meants plot plt.plot(range(len(meants)), meants) plt.title('Mean Measure for Each Node') #('Distributions for Each Node') plt.xlabel('#Node') plt.ylabel('Gray matter Volume') plt.savefig(outfig, dpi=600) np.savez(outdata, meants=meants)
def calc_pdfs(data_dir, seg_file, label_file, sessid_file=None): if sessid_file == None: sessid_list = [] sess_dir_list = glob.glob(os.path.join(data_dir, '*')) for sess_dir in sess_dir_list: sessid_list.append(os.path.split(sess_dir)[-1]) else: sessid_list = readsessid(sessid_file) vmin = 0 vmax = 1 n_pdf = 100 label_img = nib.load(seg_file) label_dat = label_img.get_data() label_list = np.unique(label_dat) label_name_file = label_file label_name_list = readsessid(label_name_file)[:-1] figname = 'pdfs.png' dataname = 'databank' for sess in sessid_list: print sess sess_dir = os.path.join(data_dir, sess) outfig = os.path.join(sess_dir, figname) outdata = os.path.join(sess_dir, dataname) data_file = os.path.join(sess_dir, 'smwc1'+sess+'_anat.nii') img = nib.load(data_file) dat = img.get_data() databank = np.zeros((n_pdf, len(label_list[1:]))) for label in label_list[1:]: label_voxel = (label_dat == label) label_voxel_index = label_voxel.nonzero() #label_size.append(len(label_voxel_index)) dat_tmp = dat[label_voxel_index] dens = stats.kde.gaussian_kde(dat_tmp) x_tmp = np.linspace(vmin, vmax, n_pdf) freq = dens(x_tmp) databank[:, label-1] = freq # For plotting each freq plot plt.plot(np.linspace(0,1,100), databank) plt.title('Distributions for Each Node') ('Distributions for Each Node') plt.xlabel('Gray Matter Volume') plt.ylabel('Probability') plt.savefig(outfig, dpi=600) np.savez(outdata, databank=databank)
def calc_kls_mat(data_dir, sessid_file=None): """ """ if sessid_file == None: sessid_list = [] sess_dir_list = glob.glob(os.path.join(data_dir, '*')) for sess_dir in sess_dir_list: sessid_list.append(os.path.split(sess_dir)[-1]) else: sessid_list = readsessid(sessid_file) databank = 'databank.npz' mat_fig = 'skl_mat.png' mat_dat = 'skl_mat' rmat_fig = 'skl_mat_reordered.png' rmat_dat = 'skl_mat_reordered' for sess in sessid_list: print sess sessdir = os.path.join(data_dir, sess) mat_fig_file = os.path.join(sessdir, mat_fig) mat_dat_file = os.path.join(sessdir, mat_dat) rmat_fig_file = os.path.join(sessdir, rmat_fig) rmat_dat_file = os.path.join(sessdir, rmat_dat) data_file = os.path.join(sessdir, databank) dat = np.load(data_file) dat = dat['databank'] dat = np.where(dat == 0, dat[dat!=0].min(), dat) dat = dat.T n_roi = dat.shape[0] n_samp = dat.shape[1] im = np.zeros((n_roi, n_roi)) for i in range(n_roi): for j in range(n_roi): if i < j: dkl = get_dkl(dat, i, j, n_samp) skl = np.exp(-dkl) im[i,j] = skl im[j,i] = skl # Save mat np.savez(mat_dat_file, im=im) np.savetxt(mat_dat_file+'.txt', im, fmt='%.4e', delimiter=' ') plt.imshow(im, origin='lower',interpolation='nearest') plt.colorbar(ticks=[0, 0.5, 1]) plt.savefig(mat_fig_file, dpi=600) plt.close() # Reorder the mat im = reorder_mat(im) np.savez(rmat_dat_file, im=im) np.savetxt(rmat_dat_file+'.txt', im, fmt='%.4e', delimiter=' ') plt.imshow(im, origin='lower',interpolation='nearest') plt.colorbar(ticks=[0, 0.5, 1]) plt.savefig(rmat_fig_file, dpi=600) plt.close()
def mbnu_prep(sessid_file, src_dir, tgt_dir): sessid_list = readsessid(sessfile) if not os.path.exists(tgt_dir): os.mkdir(tgt_dir) for sessid in sessid_list: filename = 'smwc1' + sessid + '_anat.nii' src_file = os.path.join(src_dir, filename) sess_dir = os.path.join(tgt_dir, sessid) if not os.path.exists(sess_dir): os.mkdir(sess_dir) tgt_file = os.path.join(sess_dir, filename) cp_str = 'ln -s ' + srcfile + ' ' + tgtfile print cp_str os.system(cp_str)