def plot_fmri_subject(lst): sdir = ['_RL', '_LR'] scan_type = ['left', 'right'] session_type = [1, 2] data_file = 'validation' class sc: pass for sub in lst: for hemi in range(0, 2): left = np.load(data_file + str(sub) + '_' + scan_type[hemi] + sdir[0] + '_' + str(session_type[0]) + '.npz') sc.labels = left['labels'] sc.vertices = left['vertices'] sc.faces = left['faces'] sc.vColor = np.zeros([sc.vertices.shape[0]]) sc = patch_color_labels(sc, cmap='Paired', shuffle=True) view_patch(sc, show=1, colormap='Paired', colorbar=0)
s = r s.vColor = sp.zeros(s.vertices.shape) label_vert, lab_count = sp.stats.mode(labs_all.T) colr = get_cmap(nClusters + 1) lab_count = sp.float32(lab_count.squeeze()) s.vColor = s.vColor + 1 for i in range(len(s.vertices)): # print i, (lab_count[i]/sp.amax(lab_count)), colr(label_vert[0,i])[:3], (lab_count[i]/sp.amax(lab_count)), 0.55*sp.array(colr(label_vert[0,i])[:3]) if label_vert[0, i] > 0: freq = ((lab_count[i] / sp.amax(lab_count)) - 1.0 / nClusters) * (sp.float32(nClusters) / (nClusters - 1.0)) s.vColor[i, ] = (1 - freq) + freq * sp.array(colr(label_vert[0, i])[:3]) view_patch(s) view_patch_vtk(s) writedfs('outclustering_pc.dfs', s) # view_patch(r,r.labels) #mesh = mlab.triangular_mesh(r.vertices[:,0], r.vertices[:,1], r.vertices[:,2], r.faces, representation='surface', # opacity=1,scalars=np.float64(r.labels)) # #mlab.pipeline.surface(mesh) #mlab.gcf().scene.parallel_projection = True #mlab.view(azimuth=0, elevation=-90) #mlab.show() #mlab.savefig(filename = 'dict_learning_1.png') #mlab.view(azimuth=0, elevation=90) #mlab.savefig(filename = 'dict_learning_2.png') #mlab.close()
s2 = sp.load('labs_all_split2_data1.npz') l = s2['lab_sub2'] l2 = sp.reshape(l, (l.shape[0] * l.shape[1]), order='F') l12 = sp.concatenate((l1[:, None], l2[:, None]), axis=1) print sp.sum(sp.absolute(l12[:, 1] - l12[:, 0])) l12 = reorder_labels(l12) print sp.sum(sp.absolute(l12[:, 1] - l12[:, 0])) l1 = sp.reshape(l12[:, 0], (l.shape[0], l.shape[1]), order='F') l2 = sp.reshape(l12[:, 1], (l.shape[0], l.shape[1]), order='F') # for ind in range(l.shape[1]): lab1 = l1[:, ind] view_patch(dfs_left_sm, lab1, show=0, outfile=lst[ind] + 'labs_all_split1_2_data1.png') view_patch(dfs_left_sm, lab1, show=0, outfile=lst[ind + l.shape[1]] + 'labs_all_split2_2_data1.png') # lab1=l2[:,ind] # view_patch(dfs_left_sm,lab1,show=0,outfile=lst[ind]+'_individual_rot_data2.png') #
arr1_view = arr1.view([('',arr1.dtype)]*arr1.shape[1]) arr2_view = arr2.view([('',arr2.dtype)]*arr2.shape[1]) intersected = sp.intersect1d(arr1_view, arr2_view) return intersected.view(arr1.dtype).reshape(-1, arr1.shape[1]) inputfile='/home/ajoshi/data/Yeo_JNeurophysiol11_FreeSurfer/fsaverage/label/lh.Yeo2011_17Networks_N1000.annot' fsavesurf='/home/ajoshi/data/Yeo_JNeurophysiol11_FreeSurfer/fsaverage/surf/lh.sphere.reg.avg' yeomap,_,_=fsio.read_annot(inputfile) vert,faces=fsaverage_surf=fsio.read_geometry(fsavesurf) class s: pass s.vertices=vert; s.faces=faces;s.labels=yeomap view_patch(s,yeomap) #g_surf = gread('/home/ajoshi/data/HCP_data/reference/100307/MNINonLinear/fsaverage_LR32k/100307.L.sphere.32k_fs_LR.surf.gii') g_surf = gread('/home/ajoshi/data/HCP_data/reference/100307/MNINonLinear/Native/100307.L.sphere.reg.native.surf.gii') vert = g_surf.darrays[0].data face = g_surf.darrays[1].data class hcp32k: pass hcp32k.vertices=vert; hcp32k.faces=face view_patch(hcp32k,vert[:,1]) from scipy.spatial import cKDTree
# brain=smooth_patch(brain,10) # skull = readdfs(skull_name) # skull = reducepatch(skull,.9,0) brain = add_normals(brain) # brain.normals=brain.vertices/5.0 skull = add_normals(skull) # view_patch(brain) # view_patch(skull) writedfs('brain.dfs', brain) writedfs('skull.dfs', skull) print "# vertices in Brain: " + str(brain.vertices.shape[0]) print "# vertices in Skull: " + str(skull.vertices.shape[0]) m = mean_curvature(brain) # m = smooth_surf_function(brain, m, 10, 100) br = view_patch(brain, attrib=m, opacity=1, show=0) view_patch(skull, opacity=.1, fig=br, show=1) Tri = face_v_conn(brain) Q = 1.0 + sp.zeros((brain.faces.shape[0], 1)) Q = (1.0 / 3.0) * Tri * Q Q = Q[:, 0] br_face_area = face_areas(brain) Q = 1.0 + sp.zeros(brain.vertices.shape[0]) # Q=0.0*Q # Q[1800]=1 # Q=smooth_surf_function(brain,Q,10,10) area_v = (1.0 / 3.0) * Tri * br_face_area v = sp.zeros(skull.vertices.shape[0]) # eq 8 from Sarvas v_aaj = sp.zeros(skull.vertices.shape[0]) # joshi view_patch(brain, attrib=Q, opacity=1)
for ind in range(len(roilist)): msk_roi = np.in1d(dfs_left.labels, roilist[ind]) mlab.points3d(sub2_rot[msk_roi, 0], sub2_rot[msk_roi, 1], sub2_rot[msk_roi, 2], scale_factor=0.05, color=tuple(clr[ind])) # # mlab.points3d(sub2[:,0], sub2[:,1], sub2[:,2], scale_factor=0.05, color=(0, 1, 0)) mlab.draw() mlab.savefig('sph3.png') mlab.show() dfs_left_sm.vColor = sp.zeros(dfs_left_sm.vertices.shape) + 0.5 view_patch(dfs_left_sm, close=0) sub_vert = dfs_left_sm.vertices for ind in range(len(roilist)): msk_roi = np.in1d(dfs_left.labels, roilist[ind]) mlab.points3d(sub_vert[msk_roi, 0], sub_vert[msk_roi, 1], sub_vert[msk_roi, 2], scale_factor=5, color=tuple(clr[ind])) # # ## msk_small_region = (dfs_left.labels == 30) | (dfs_left.labels == 72) | (dfs_left.labels == 9) | (dfs_left.labels == 47) # % motor #d = sub1 # [msk_small_region, :] # #ref_mean_pc = sp.mean(d,axis=0)
sub_data[:,:,count1] = d count1+=1 print count1, nSub=sub_data.shape[2] cat_data=sp.zeros((nSub*sub_data.shape[0],sub_data.shape[1])) for ind in range(nSub): sub_data[:,:,ind] = rot_sub_data(ref=sub_data[:,:,0],sub=sub_data[:,:,ind]) cat_data[sub_data.shape[0]*ind:sub_data.shape[0]*(ind+1),:] = sub_data[:,:,ind] print ind, sub_data.shape, cat_data.shape rho=sp.corrcoef(cat_data) rho[~np.isfinite(rho)] = 1 dist_mtx=abs(sp.arccos(rho)) SC = AgglomerativeClustering(n_clusters=nClusters, affinity='precomputed', linkage='complete') #SC = DBSCAN(eps=sp.pi/102.0, metric='precomputed') labs_all = SC.fit_predict(dist_mtx)+1 lab_sub=labs_all.reshape((sub_data.shape[0],nSub),order='F') lab1=sp.zeros(dfs_left_sm.vertices.shape[0]) for ind in range(nSub): # lab1[msk_small_region]=lab_sub[:,ind] lab1=lab_sub[:,ind] view_patch(dfs_left_sm,lab1)
l1 = sp.reshape(l12[:, 0], (l.shape[0], l.shape[1] / 2.0), order='F') l2 = sp.reshape(l12[:, 1], (l.shape[0], l.shape[1] / 2.0), order='F') perm1 = sp.mod(17 * sp.arange(max(l1.flatten()) + 1), max(l1.flatten()) + 1) # for ind in range(5): #range(l1.shape[1]): lab1 = sp.zeros(dfs_left_sm.vertices.shape[0], dtype=sp.int16) lab2 = lab1.copy() lab1[msk_small_region] = l1[:, ind] counts1 = itemfreq(lab1) lab2[msk_small_region] = l2[:, ind] counts2 = itemfreq(lab2) view_patch(dfs_left_sm, perm1[lab1], colorbar=0, show=0, elevation=-90, colormap='Paired', outfile=lst[ind] + '_joint_both_session1_view1_8_clusters_precuneus.png') view_patch(dfs_left_sm, perm1[lab1], colorbar=0, show=0, elevation=90, colormap='Paired', outfile=lst[ind] + '_joint_both_session1_view2_8_clusters_precuneus.png') view_patch(dfs_left_sm, perm1[lab2], colorbar=0, show=0,
sub_data[:, :, count1] = d count1 += 1 print count1, nSub = sub_data.shape[2] cat_data = sp.zeros((nSub * sub_data.shape[0], sub_data.shape[1])) for ind in range(nSub): sub_data[:, :, ind] = rot_sub_data(ref=sub_data[:, :, 0], sub=sub_data[:, :, ind]) cat_data[sub_data.shape[0] * ind:sub_data.shape[0] * (ind + 1), :] = sub_data[:, :, ind] print ind, sub_data.shape, cat_data.shape rho = sp.corrcoef(cat_data) rho[~np.isfinite(rho)] = 1 simil_mtx = sp.pi / 2.0 + sp.arcsin(rho) SC = SpectralClustering(n_clusters=nClusters, affinity='precomputed') labs_all = SC.fit_predict(simil_mtx) + 1 lab_sub = labs_all.reshape((sub_data.shape[0], nSub), order='F') lab1 = sp.zeros(dfs_left_sm.vertices.shape[0]) for ind in range(nSub): # lab1[msk_small_region]=lab_sub[:,ind] lab1 = lab_sub[:, ind] view_patch(dfs_left_sm, lab1, outfile='')
l2 = sp.reshape(l[:, 40:80], (l.shape[0]*40), order='F') l12 = sp.concatenate((l1[:, None], l2[:, None]), axis=1) print sp.sum(sp.absolute(l12[:, 1]-l12[:, 0])) print sp.sum(sp.absolute(l12[:, 1]-l12[:, 0])) l1 = sp.reshape(l12[:, 0], (l.shape[0], 40), order='F') l2 = sp.reshape(l12[:, 1], (l.shape[0], 40), order='F') # for ind in range(l12.shape[1]): lab1 = sp.int32(l12[:, ind]) dfs_left_sm.labels = lab1 s = silhouette_samples(cat_data[nVert*(ind):nVert*(ind+1), :], dfs_left_sm.labels) s[s < 0] = 0 s = s/sp.median(s) s[s > 1.0] = 1.0 s1 = patch_color_labels(dfs_left_sm, freq=s) # view_patch(s1) view_patch(s1, elevation=90, colorbar=0, show=0, outfile=lst[ind]+'_\ individual_view1_nclusters30_sil_modulated.png', colormap='Paired') view_patch(s1, elevation=-90, colorbar=0, show=0, outfile=lst[ind]+'_\ individual_view2_nclusters30_sil_modulated.png', colormap='Paired')
LR_flag = msk['LR_flag'] LR_flag = np.squeeze(LR_flag) > 0 data = data['ftdata_NLM'] #data = sp.squeeze(vrest.get_data()).T vrest = data[LR_flag,:] m = np.mean(vrest, 1) vrest = vrest - m[:,None] s = np.std(vrest, 1)+1e-16 vrest2 = vrest/s[:,None] vrest2=rot_sub_data(ref=vrest1,sub=vrest2) rho_rot = sp.dot(vrest1,vrest2.T)/vrest1.shape[1] dist_mat = sp.absolute(sp.arccos(rho_rot)) ind = sp.argmin(dist_mat,axis=0) #ind = linear_assignment(dist_mat) view_patch(dfs_left_sm,outfile='before_registered_surf.png',show=1) dfs_left_sm.faces=ind[dfs_left_sm.faces] view_patch(dfs_left_sm,outfile='registered_surf1.png',show=1) #rho1=smooth_surf_function(dfs_left_sm,rho1) #rho2=smooth_surf_function(dfs_left_sm,rho2) #view_patch(dfs_left_sm,rho_orig,clim=[0,1]) #view_patch(dfs_left_sm,rho_rot,clim=[0,1],show=1)
labels = np.squeeze(labs.get_data()) g_surf = nib.load('/home/ajoshi/data/HCP_data/reference/100307/MNINonL\ inear/fsaverage_LR32k/100307.L.very_inflated.32k_fs_LR.surf.gii') s.vertices = g_surf.darrays[0].data s.faces = g_surf.darrays[1].data s.labels = np.zeros(s.vertices.shape[0]) s.labels[idxs] = labels '''h32k to full res FS''' g_surf = nib.load('/home/ajoshi/data/HCP_data/reference/100307/MNINonLinear/N\ ative/100307.L.very_inflated.native.surf.gii') h.vertices = g_surf.darrays[0].data h.faces = g_surf.darrays[1].data h = interpolate_labels(s, h) h = patch_color_labels(h) view_patch(h) ''' native FS ref to native FS BCI''' g_surf = nib.load('/home/ajoshi/data/HCP_data/reference/100307/MNINon\ Linear/Native/100307.L.sphere.reg.native.surf.gii') s.vertices = g_surf.darrays[0].data s.faces = g_surf.darrays[1].data s.labels = h.labels ''' map to bc sphere''' bs.vertices, bs.faces = fsio.read_geometry('/home/ajoshi/data/BCI_DNI_Atlas/su\ rf/lh.sphere.reg') bs = interpolate_labels(s, bs) bci.vertices, bci.faces = fsio.read_geometry('/home/ajoshi/data/BCI_DNI_A\ tlas/surf/lh.white') bci.labels = bs.labels writedfs('BCI_orig_lh.dfs', bci)
rho1 += sp.sum(vrest1 * vlang1, axis=1) / vrest1.shape[1] rho2 += sp.sum(vrest2 * vlang2, axis=1) / vlang1.shape[1] vlang1, _ = rot_sub_data(ref=vrest1, sub=vlang1) vlang2, _ = rot_sub_data(ref=vrest2, sub=vlang2) rho1rot += sp.sum(vrest1 * vlang1, axis=1) / vrest1.shape[1] rho2rot += sp.sum(vrest2 * vlang2, axis=1) / vlang1.shape[1] rho1 = smooth_surf_function(dfs_left_sm, rho1, a1=0, a2=1) rho1rot = smooth_surf_function(dfs_left_sm, rho1rot, a1=0, a2=1) view_patch(dfs_left_sm, rho1 / len(lst), clim=[0, 0.75], outfile='rest1lang_before_rot.png', show=0) view_patch(dfs_left_sm, rho1rot / len(lst), clim=[0, 0.75], outfile='rest1lang_after_rot.png', show=0) #rho2 = smooth_surf_function(dfs_left_sm, rho2, a1=0, a2=1) #rho2rot = smooth_surf_function(dfs_left_sm, rho2rot) view_patch(dfs_left_sm, rho2 / len(lst), clim=[0, 0.75], outfile='rest2lang_before_rot.png',
bci_bst.vertices[:, 1] -= 192 * 0.546875 bci_bst.vertices[:, 2] -= 192 * 0.546875 bci.vertices, bci.faces = fsio.read_geometry( '/home/ajoshi/data/BCI_DNI_Atlas/surf/rh.white') bci = interpolate_labels(bci_bst, bci) ''' FS_BCI to FS BCI Sphere''' bci.vertices, bci.faces = fsio.read_geometry( '/home/ajoshi/data/BCI_DNI_Atlas/surf/rh.sphere.reg') ''' FS BCI Sphere to ref FS Sphere''' g_surf = gread( '/big_disk/ajoshi/HCP_data/reference/100307/MNINonLinear/Native/100307.R.sphere.reg.native.surf.gii' ) s.vertices = g_surf.darrays[0].data s.faces = g_surf.darrays[1].data s = interpolate_labels(bci, s) ''' ref BCI Sphere to FS very inflated ''' g_surf = gread( '/big_disk/ajoshi/HCP_data/reference/100307/MNINonLinear/Native/100307.R.very_inflated.native.surf.gii' ) bci.vertices = g_surf.darrays[0].data bci.faces = g_surf.darrays[1].data bci.labels = s.labels ''' FS very inflated to reduce3 ''' dfs = readdfs( '/big_disk/ajoshi/HCP_data/reference/100307.aparc.a2009s.32k_fs.reduce3.very_smooth.right.dfs' ) dfs = interpolate_labels(bci, dfs, skipzero=1) view_patch(dfs, dfs.labels, colormap='prism') writedfs('100307.reduce3.very_smooth.right.refined.dfs', dfs)
rho1 += sp.sum(vrest1 * vrest2, axis=1) / vrest1.shape[1] rho1lang += sp.sum(vlang1 * vlang2, axis=1) / vlang1.shape[1] vrest2, _ = rot_sub_data(ref=vrest1, sub=vrest2) vlang2, _ = rot_sub_data(ref=vlang1, sub=vlang2) rho2 += sp.sum(vrest2 * vrest2, axis=1) / vrest1.shape[1] rho2lang += sp.sum(vlang1 * vlang2, axis=1) / vlang1.shape[1] rho1 = smooth_surf_function(dfs_left_sm, rho1, a1=0, a2=1) rho2 = smooth_surf_function(dfs_left_sm, rho2, a1=0, a2=1) view_patch(dfs_left_sm, rho1 / len(lst), clim=[0, 1], outfile='rest_before_rot.png', show=0) view_patch(dfs_left_sm, rho2 / len(lst), clim=[0, 1], outfile='rest_after_rot.png', show=0) rho1lang = smooth_surf_function(dfs_left_sm, rho1lang, a1=0, a2=1) rho2lang = smooth_surf_function(dfs_left_sm, rho2lang, a1=0, a2=1) view_patch(dfs_left_sm, rho1lang / len(lst), clim=[0, 1], outfile='lang_before_rot.png',
lab2 = l2[:, ind2] nVert = dfs_left_sm.vertices.shape[0] cat_data1 = s1['cat_data1'] dfs_left_sm.labels = lab1 s = silhouette_samples(cat_data1[nVert * (ind):nVert * (ind + 1), :], dfs_left_sm.labels) s[s < 0] = 0 s = s / sp.median(s) s[s > 1.0] = 1.0 dfs_left_sm = patch_color_labels(dfs_left_sm, freq=s) view_patch(dfs_left_sm, colorbar=0, colormap='Paired', elevation=90, show=0, outfile=lst[ind] + '_view1_split1_30clusters_1common_modulated.png') view_patch(dfs_left_sm, colorbar=0, colormap='Paired', elevation=-90, show=0, outfile=lst[ind] + '_view2_split1_30clusters_1common_modulated.png') cat_data2 = s1['cat_data2'] dfs_left_sm.labels = lab2 s = silhouette_samples(cat_data2[nVert * (ind2):nVert * (ind2 + 1), :], dfs_left_sm.labels) s[s < 0] = 0 s = s / sp.median(s)
pass class r: pass ''' HCP32k data''' labs = nib.load('/home/ajoshi/data/Glasser_et_al_2016_HCP_MMP1.0_RVVG/HCP_PhaseTwo/Q1-Q6_RelatedParcellation210/MNINonLinear/fsaverage_LR32k/Q1-Q6_RelatedParcellation210.R.CorticalAreas_dil_Colors.32k_fs_LR.dlabel.nii') cifti = etree.XML(labs.header.extensions[0].get_content()) idxs=np.array(cifti[0][2][0][0].text.split(' ')).astype(np.int) labels = sp.squeeze(labs.get_data()) g_surf = nib.load('/home/ajoshi/data/Glasser_et_al_2016_HCP_MMP1.0_RVVG/HCP_PhaseTwo/Q1-Q6_RelatedParcellation210/MNINonLinear/fsaverage_LR32k/Q1-Q6_RelatedParcellation210.R.inflated_MSMAll_2_d41_WRN_DeDrift.32k_fs_LR.surf.gii') s.vertices = g_surf.darrays[0].data; s.faces = g_surf.darrays[1].data s.labels=sp.zeros(s.vertices.shape[0]) s.labels[idxs] = labels view_patch(s, s.labels,colormap='Paired') ''' ref BCI Sphere to FS very inflated ''' g_surf = nib.load('/home/ajoshi/data/HCP_data/reference/100307/MNINonLinear/fsaverage_LR32k/100307.R.very_inflated.32k_fs_LR.surf.gii') r.vertices = g_surf.darrays[0].data; r.faces = g_surf.darrays[1].data r.labels=s.labels ''' FS very inflated to reduce3 ''' dfs = readdfs('/home/ajoshi/data/HCP_data/reference/100307.aparc.a2009s.32k_fs.reduce3.very_smooth.right.dfs') dfs = interpolate_labels(r,dfs, skipzero=1) view_patch(dfs,dfs.labels, colormap='Paired') writedfs('100307.reduce3.Glasser.right.dfs', dfs)
s.faces = g_surf.darrays[1].data s.labels = h.labels ''' map to bc sphere''' bs.vertices, bs.faces = fsio.read_geometry('/home/ajoshi/data/BCI_DNI_Atlas/su\ rf/rh.sphere.reg') bs = interpolate_labels(s, bs) bci.vertices, bci.faces = fsio.read_geometry('/home/ajoshi/data/BCI_DNI_A\ tlas/surf/rh.white') bci.labels = bs.labels writedfs('BCI_orig_rh.dfs', bci) bci.vertices, bci.faces = fsio.read_geometry('/home/ajoshi/data/BCI_DNI_A\ tlas/surf/rh.inflated') view_patch(bci, bci.labels) writedfs('BCI_pial_rh.dfs.', bci) bci.vertices, bci.faces = fsio.read_geometry('/home/ajoshi/data/BCI_DNI_Atla\ s/surf/rh.white') writedfs('BCI_white_rh.dfs.', bci) bci.vertices[:, 0] += 96*0.8 bci.vertices[:, 1] += 192*0.546875 bci.vertices[:, 2] += 192*0.546875 bci_bst = readdfs('/home/ajoshi/data/BCI-DNI_brain_atlas/BCI-DNI_brain.right.\ inner.cortex.dfs') bci_bst = interpolate_labels(bci, bci_bst)
print sp.sum(sp.absolute(l12[:, 1] - l12[:, 0])) l1 = sp.reshape(l12[:, 0], (l.shape[0], l.shape[1]), order='F') l2 = sp.reshape(l12[:, 1], (l.shape[0], l.shape[1]), order='F') perm1 = sp.mod(17 * sp.arange(max(l1.flatten()) + 1), max(l1.flatten()) + 1) # Plot labels for ind in range(4): #range(l.shape[1]): lab1 = l1[:, ind] lab2 = l2[:, ind] view_patch(dfs_left_sm, perm1[lab1], colorbar=0, colormap='Paired', elevation=90, show=0, outfile=lst[ind] + '_view1_split1_60clusters.png') view_patch(dfs_left_sm, perm1[lab1], colorbar=0, colormap='Paired', elevation=-90, show=0, outfile=lst[ind] + '_view2_split1_60clusters.png') view_patch(dfs_left_sm, perm1[lab2], colorbar=0, colormap='Paired', elevation=90,