def dfs(filename): s1 = Surface() s1.vertices = coords s1.faces = faces s1.attributes = attributes # NFV.attributes = attributes dfsio.writedfs(filename, s1)
def save2surfgord(lsurf, rsurf, out_dir, surf_name, bfp_path='.', save_png=True): # if label is zero, black out surface, attribute should be nan num_vert = lsurf.vertices.shape[0] lab = spio.loadmat( os.path.join(bfp_path, 'supp_data/USCBrain_grayordinate_labels.mat')) labs = lab['labels'].squeeze() labs = sp.float64(labs) lsurf.attributes[labs[:num_vert] == 0] = sp.nan rsurf.attributes[labs[num_vert:2 * num_vert] == 0] = sp.nan lsurf.vColor[sp.isnan(lsurf.attributes), :] = 0 rsurf.vColor[sp.isnan(lsurf.attributes), :] = 0 writedfs(out_dir + '/Right_' + surf_name + '.dfs', rsurf) writedfs(out_dir + '/Left_' + surf_name + '.dfs', lsurf) if VTK_INSTALLED == 0: print('VTK is not installed, screenshots will not be saved.') save_png = False if save_png == True: # Visualize left hemisphere view_patch_vtk(lsurf, azimuth=100, elevation=180, roll=90, outfile=out_dir + '/LeftLateral_' + surf_name + '.png', show=0) view_patch_vtk(lsurf, azimuth=-100, elevation=180, roll=-90, outfile=out_dir + '/LeftMedial_' + surf_name + '.png', show=0) # Visualize right hemisphere view_patch_vtk(rsurf, azimuth=-100, elevation=180, roll=-90, outfile=out_dir + '/RightLateral_' + surf_name + '.png', show=0) view_patch_vtk(rsurf, azimuth=100, elevation=180, roll=90, outfile=out_dir + '/RightMedial_' + surf_name + '.png', show=0)
def save(self, outdir, outprefix, atlas_filename): sys.stdout.write('Saving output files...\n') self.adjust_for_multi_comparisons() s1 = dfsio.readdfs(atlas_filename) s1.attributes = self.pvalues # print s1.attributes if len(s1.attributes) == s1.vertices.shape[0]: # Also write color to the field s1.vColor = colormaps.Colormap.get_rgb_color_array('pvalue', s1.attributes) dfsio.writedfs(os.path.join(outdir, outprefix + '_atlas_pvalues.dfs'), s1) if len(self.pvalues_adjusted) > 0: s1.attributes = self.pvalues_adjusted # Also write color to the field s1.vColor = colormaps.Colormap.get_rgb_color_array('pvalue', s1.attributes) dfsio.writedfs(os.path.join(outdir, outprefix + '_atlas_pvalues_adjusted.dfs'), s1) else: sys.stdout.write('Error: Dimension mismatch between the p-values and the number of vertices. ' 'Quitting without saving.\n') if len(self.corrvalues) > 0: s1.attributes = self.corrvalues s1.vColor = colormaps.Colormap.get_rgb_color_array('corr', s1.attributes) dfsio.writedfs(os.path.join(outdir, outprefix + '_corr.dfs'), s1) self.corrvalues[np.abs(self.pvalues_adjusted) > 0.05] = 0 s1.attributes = self.corrvalues # Also write color to the field s1.vColor = colormaps.Colormap.get_rgb_color_array('corr', s1.attributes) dfsio.writedfs(os.path.join(outdir, outprefix + '_corr_adjusted.dfs'), s1) sys.stdout.write('Done.\n')
def image_to_shape(imagefile, shapefile, outputshapefile, resample): NimgDataio.validatetype(imagefile) NimgDataio.validatetype(shapefile) sys.stdout.write('Reading Image file ' + imagefile + '...') img = nii_io.readnii(imagefile) sys.stdout.write('Done.\n') sys.stdout.write('Reading Shape file ' + shapefile + '...') shape = NimgDataio.read_surface(shapefile) sys.stdout.write('Done.\n') # Scale shape coordinates to image according to pixdim pixdim = np.asarray(img.get_header().get_zooms()) vox_indices = np.rint(shape.vertices / pixdim) vox_indices = vox_indices.astype(int) imgdim = img.get_header().get_data_shape() validate_shape_dimensions(vox_indices, imgdim) img_data = img.get_data() img_data_ravel = np.ravel(img_data) sys.stdout.write('Resampling image values to shape...') # Iterate over all shape coordinates (voxel indices) to find the resampled value if resample == 'nearest': # Just use the voxel value idx = [np.ravel_multi_index(i, imgdim) for i in vox_indices] shape.attributes = img_data_ravel[idx] if resample == 'mean': # For each voxel index find the voxel neighborhood Nbr_list = np.zeros((len(shape.attributes), 18), dtype=np.int) for i, v_idx in enumerate(vox_indices): Nbr_list[i, :] = get_vox_neighborhood_ravel_index( v_idx[0], v_idx[1], v_idx[2], imgdim) shape.attributes[i] = np.mean(img_data_ravel[Nbr_list[i, :]]) if resample == 'max': # For each voxel index find the voxel neighborhood Nbr_list = np.zeros((len(shape.attributes), 18), dtype=np.int) for i, v_idx in enumerate(vox_indices): Nbr_list[i, :] = get_vox_neighborhood_ravel_index( v_idx[0], v_idx[1], v_idx[2], imgdim) shape.attributes[i] = np.max(img_data_ravel[Nbr_list[i, :]]) if outputshapefile: dfsio.writedfs(outputshapefile, shape) else: dfsio.writedfs(shapefile, shape) sys.stdout.write('Done.\n')
def sub(file1, file2, fileout): s1 = dfsio.readdfs(file1) s2 = dfsio.readdfs(file2) sout = s1 if not s1.attributes.any() and not s2.attributes.any(): raise excepts.AttributeMissingError( 'Missing attributes in {0:s} and/or {1:s}'.format( file1, file2)) # TODO: Change this to a custom exception in future if len(s1.attributes) != len(s2.attributes): raise excepts.AttributeLengthError( 'Attribute lengths of {0:s} and {1:s} do not match.\n'.format( file1, file2)) sout.attributes = s1.attributes - s2.attributes dfsio.writedfs(fileout, sout)
def write_attribute_to_surface(insurface, attribute_file, outsurface): s1 = NimgDataio.read_surface(insurface) filext = splitext(attribute_file)[1] attributes = [] if filext == '.txt': attributes = np.loadtxt(attribute_file) elif filext == '.mat': temp = loadmat(attribute_file) attributes = temp[temp.keys()[0]] # Just read the first variable in the .mat file else: raise ValueError('Error: Invalid attribute file' + attribute_file + '. Attribute file should have a .mat or a .txt format.\n') if s1.vertices.shape[0] != attributes.shape[1]: raise excepts.AttributeLengthError('Error: Attribute lengths of data in {0:s} and the surface {1:s} do not match.\n'.format(attribute_file, insurface)) s1.attributes = attributes dfsio.writedfs(outsurface, s1)
def save(self, outdir, outprefix, atlas_filename): sys.stdout.write('Saving output files...\n') self.statsresult.adjust_for_multi_comparisons() s1 = dfsio.readdfs(atlas_filename) s1.attributes = self.statsresult.pvalues # print s1.attributes if len(s1.attributes) == s1.vertices.shape[0]: # Also write color to the field s1.vColor = colormaps.Colormap.get_rgb_color_array( 'pvalue', s1.attributes) dfsio.writedfs( os.path.join(outdir, outprefix + '_atlas_pvalues.dfs'), s1) if len(self.statsresult.pvalues_adjusted) > 0: s1.attributes = self.statsresult.pvalues_adjusted # Also write color to the field s1.vColor = colormaps.Colormap.get_rgb_color_array( 'pvalue', s1.attributes) dfsio.writedfs( os.path.join(outdir, outprefix + '_atlas_pvalues_adjusted.dfs'), s1) else: sys.stdout.write( 'Error: Dimension mismatch between the p-values and the number of vertices. ' 'Quitting without saving.\n') if len(self.statsresult.corrvalues) > 0: s1.attributes = self.statsresult.corrvalues s1.vColor = colormaps.Colormap.get_rgb_color_array( 'corr', s1.attributes) dfsio.writedfs(os.path.join(outdir, outprefix + '_corr.dfs'), s1) self.statsresult.corrvalues[ np.abs(self.statsresult.pvalues_adjusted) > 0.05] = 0 s1.attributes = self.statsresult.corrvalues # Also write color to the field s1.vColor = colormaps.Colormap.get_rgb_color_array( 'corr', s1.attributes) dfsio.writedfs( os.path.join(outdir, outprefix + '_corr_adjusted.dfs'), s1) sys.stdout.write('Done.\n')
hemi = 'left' fshemi = 'lh' ''' BCI to FS processed BCI ''' bci_bsti = readdfs('/home/ajoshi/BrainSuite19b/svreg/BCI-DNI\ _brain_atlas/BCI-DNI_brain.' + hemi + '.mid.cortex.dfs') bci_bst = readdfs('/home/ajoshi/BrainSuite19b/svreg/BCI-DNI\ _brain_atlas/BCI-DNI_brain.' + hemi + '.inner.cortex.dfs') bci_bst.labels = bci_bsti.labels bci_bst.vertices[:, 0] -= 96 * 0.8 bci_bst.vertices[:, 1] -= 192 * 0.546875 bci_bst.vertices[:, 2] -= 192 * 0.546875 bci_fs.vertices, bci_fs.faces = fsio.read_geometry('/big_disk/ajoshi/data/BCI_\ DNI_Atlas/surf/' + fshemi + '.white') fslabels, _, _ = fsio.read_annot( '/big_disk/ajoshi/freesurfer/subjects/BCI_DNI_Atlas/label/' + fshemi + '.economo.annot') bci_fs.labels = fslabels bci_bst = interpolate_labels(bci_fs, bci_bst) bci_bsti.labels = bci_bst.labels bci_bsti = patch_color_labels(bci_bsti) view_patch_vtk(bci_bsti) bci_bsti = smooth_patch(bci_bsti, iterations=10000) view_patch_vtk(bci_bsti) writedfs('BCI_DNI_economo_' + hemi + '.dfs', bci_bsti)
bci_freq = reduce3_to_bci_rh(bci_bst.attributes) bci_bst = readdfs( '/big_disk/ajoshi/data/BCI-DNI_brain_atlas/BCI-DNI_brain.right.\ mid.cortex.dfs') bci_bst_sm = readdfs('/big_disk/ajoshi/data/BCI-DNI_brain_atlas/BCI-DNI_brain.\ right.mid.cortex_smooth10.dfs') bci_bst.vertices = bci_bst_sm.vertices bci_bst.labels = bci_labs bci_bst.attributes = bci_freq bci_bst = patch_color_labels(bci_bst, cmap='Paired') view_patch_vtk(bci_bst, show=1) writedfs( '/big_disk/ajoshi/data/BCI-DNI_brain_atlas/BCI-DNI_brain.right.\ mid.cortex_refined_labs_uncorr.dfs', bci_bst) bci_bst = patch_color_labels(bci_bst, freq=bci_bst.attributes, cmap='Paired') # bci_bst = smooth_patch(bci_bst, iterations=90, relaxation=10.8) view_patch_vtk(bci_bst, show=1) writedfs( '/big_disk/ajoshi/data/BCI-DNI_brain_atlas/BCI-DNI_brain.right.\ mid.cortex_refined_labs_mod_freq_uncorr.dfs', bci_bst) surfname = '/big_disk/ajoshi/data/BCI-DNI_brain_atlas/BCI-DNI_brain.right.\ mid.cortex_refined_labs_uncorr.dfs' sub_out = '/big_disk/ajoshi/data/BCI-DNI_brain_atlas/BCI-DNI_brain.right.\ mid.cortex_refined_labs_out.dfs'
USCBrainbaseLatest = '/ImagePTE1/ajoshi/code_farm/hybridatlas/USCBrain_9_8' eng = meng.start_matlab() eng.addpath(eng.genpath('/ImagePTE1/ajoshi/code_farm/svreg/MEX_Files')) eng.addpath(eng.genpath('/ImagePTE1/ajoshi/code_farm/svreg/3rdParty')) eng.addpath(eng.genpath('/ImagePTE1/ajoshi/code_farm/svreg/src')) xmlf = USCBrainbaseLatest + '/brainsuite_labeldescription.xml' for hemi in {'left', 'right'}: mid = USCBrainbaseLatest + '/BCI-DNI_brain.' + hemi + '.mid.cortex.dfs' eng.recolor_by_label(mid, '', xmlf, nargout=0) s = readdfs(mid) sin = readdfs(USCBrainbaseLatest + '/BCI-DNI_brain.' + hemi + '.inner.cortex.dfs') spial = readdfs(USCBrainbaseLatest + '/BCI-DNI_brain.' + hemi + '.pial.cortex.dfs') sin.vColor = s.vColor sin.labels = s.labels writedfs( USCBrainbaseLatest + '/BCI-DNI_brain.' + hemi + '.inner.cortex.dfs', sin) spial.vColor = s.vColor spial.labels = s.labels writedfs( USCBrainbaseLatest + '/BCI-DNI_brain.' + hemi + '.pial.cortex.dfs', spial)
vrest, _, _ = normalizeData(vrest) vrest, Rot = brainSync(X=vsub, Y=vrest) t = sp.sum(vrest*vsub, axis=0) # print('rho(%d)=%g' % (ind1, sp.mean(t)), end=' ') print 'rho(%d)=%g' % (ind1, sp.mean(t)) rho_sub[ind1, :] = t # %% # Hypothesis test rho_sub1 = sp.mean(rho_sub, axis=0) pval = sp.mean(rho_sub1 > rho_null, axis=0) r, corrPval,_,_ = multipletests(pvals=pval, alpha=0.05, method='fdr_bh') sl = readdfs(os.path.join(BFPPATH, 'bci32kleft.dfs')) sl.attributes = corrPval[:sl.vertices.shape[0]] sl = patch_color_attrib(sl, clim=[0, 1]) sr = readdfs(os.path.join(BFPPATH, 'bci32kright.dfs')) sr.attributes = corrPval[sl.vertices.shape[0]:2*sl.vertices.shape[0]] sr = patch_color_attrib(sr, clim=[0, 1]) writedfs('right_pval_sn7915.dfs',sr); writedfs('left_pval_sn7915.dfs',sl); view_patch_vtk(sl, azimuth=90, elevation=180, roll=90, show=1) view_patch_vtk(sl, azimuth=-90, elevation=180, roll=-90, show=1)
bci = readdfs(BCIbase + '/BCI-DNI_brain.left.mid.cortex.dfs') error_indicator1 = check_uscbrain_bci(uscbrain.labels.flatten(), uscbrain_dict, bci.labels.flatten(), bci_dict) error_indicator2 = check_bci_uscbrain(uscbrain.labels.flatten(), uscbrain_dict, bci.labels.flatten(), bci_dict) error_surf.vertices = bci.vertices error_surf.faces = bci.faces error_surf.attributes = 255.0 * error_indicator1 error_surf.labels = error_indicator1 writedfs('error_left.dfs', error_surf) out_surf = surf_lab_match_bci_uscbrain(uscbrain, uscbrain_dict, bci, bci_dict, error_indicator1) writedfs( USCBrainbaseLatest + '/BCI-DNI_brain.left.mid.cortex_bci_consistent.dfs', out_surf) print('Tiny region overlaps: %d or %d ' % (np.sum(error_indicator1), np.sum(error_indicator2))) # Right hemisphere surface print('=====Checking Right Hemisphere Surface=====') uscbrain = readdfs(USCBrainbaseLatest + '/BCI-DNI_brain.right.mid.cortex.dfs')
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()
view_patch_vtk(h) ''' native FS ref to native FS BCI''' g_surf = nib.load('/data_disk/HCP5-fMRI-NLM/reference/100307/MNINon\ Linear/Native/100307.R.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( '/big_disk/ajoshi/fs_sub/BCI_DNI_Atlas/surf/rh.sphere.reg') bs = interpolate_labels(s, bs) bci.vertices, bci.faces = fsio.read_geometry( '/big_disk/ajoshi/fs_sub/BCI_DNI_Atlas/surf/rh.white') bci.labels = bs.labels writedfs('BCI_orig_rh.dfs', bci) bci.vertices, bci.faces = fsio.read_geometry( '/big_disk/ajoshi/fs_sub/BCI_DNI_Atlas/surf/rh.inflated') bci = patch_color_labels(bci) view_patch_vtk(bci) writedfs('BCI_pial_rh.dfs.', bci) bci.vertices, bci.faces = fsio.read_geometry( '/big_disk/ajoshi/fs_sub/BCI_DNI_Atlas/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
''' native FS ref to native FS BCI''' g_surf = gread('/home/ajoshi/data/HCP_data/reference/100307/MNINonLinear/Nativ\ e/100307.R.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/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
xx = np.arange(vol_lab.shape[0]) * xres yy = np.arange(vol_lab.shape[1]) * yres zz = np.arange(vol_lab.shape[2]) * zres sl.labels = interpn((xx, yy, zz), vol_img, sl.vertices, method='nearest') sr.labels = interpn((xx, yy, zz), vol_img, sr.vertices, method='nearest') sl = smooth_patch(sl, iterations=3000, relaxation=.5) sr = smooth_patch(sr, iterations=3000, relaxation=.5) patch_color_labels(sl) view_patch_vtk(sl) patch_color_labels(sr) view_patch_vtk(sr) writedfs(outmidl, sl) writedfs(outmidr, sr) eng = matlab.engine.start_matlab() eng.addpath(eng.genpath('/ImagePTE1/ajoshi/code_farm/svreg/src')) eng.addpath(eng.genpath('/ImagePTE1/ajoshi/code_farm/svreg/3rdParty')) eng.addpath(eng.genpath('/ImagePTE1/ajoshi/code_farm/svreg/MEX_Files')) eng.mni152_to_bci(atlas_name, nargout=0) eng.exit() s = readdfs('BCI-' + atlas_name + '.left.mid.cortex.dfs') s = smooth_patch(s, iterations=3000, relaxation=.5) view_patch_vtk(s) writedfs('BCI-' + atlas_name + '.left.mid.cortex.dfs', s)
def main(argv): try: opts, args = getopt.getopt(argv, "hf:a:", ["ifile=", "ofile="]) except getopt.GetoptError: print('python freesurfer_label_USCBrain.py -f <freesurfer_sub>\ -a <USCBrain>') sys.exit(2) for opt, arg in opts: if opt == '-h': print('python freesurfer_label_USCBrain.py -f \ <freesurfer_sub> -a <USCBrain>') sys.exit() elif opt in ("-f", "--ffile"): subbasename = arg elif opt in ("-a", "--afile"): USCBrainpath = arg print('FreeSurfer subid is :' + subbasename) print('USCBrain dir is :' + USCBrainpath) hemi = 'right' fshemi = 'rh' class s: pass class bci: pass for hi in range(2): if hi == 0: hemi = 'right' fshemi = 'rh' else: hemi = 'left' fshemi = 'lh' ''' USCBrain to FS processed BCI ''' bci_bsti = readdfs(USCBrainpath + '/BCI-DNI_brain.' + hemi + '.mid.cortex.dfs') bci_bst = readdfs(USCBrainpath + '/BCI-DNI_brain.' + hemi + '.inner.cortex.dfs') bci_bst.labels = bci_bsti.labels bci_bst.vertices[:, 0] -= 96*0.8 bci_bst.vertices[:, 1] -= 192*0.546875 bci_bst.vertices[:, 2] -= 192*0.546875 bci.vertices, bci.faces = fsio.read_geometry(fshemi + '.white') bci = interpolate_labels_colors(bci_bst, bci) ''' FS_BCI to FS BCI Sphere''' bci.vertices, bci.faces = fsio.read_geometry(fshemi + '.sphere.reg') ''' FS BCI Sphere to SUB FS Sphere''' s.vertices, s.faces = fsio.read_geometry(subbasename + '/surf/' + fshemi + '.sphere.reg') s = interpolate_labels_colors(bci, s) fslabels, _, _ = fsio.read_annot(subbasename + '/label/' + fshemi + '.aparc.annot') s.labels = s.labels * sp.int16(fslabels > 0) s.vColor[fslabels <= 0, :] = 0.5 s.vertices, _ = fsio.read_geometry(subbasename + '/surf/' + fshemi + '.pial') so, _ = fsio.read_geometry(subbasename + '/surf/' + fshemi + '.white') s.vertices = (s.vertices + so)/2.0 s.faces = s.faces[:, (0, 2, 1)] outfilename = subbasename + '/' + hemi + '.mid.cortex.fs.dfs' writedfs(outfilename, s) print('output file is : ' + outfilename)
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)
bci_freq[ind] = 1 #maybe oldids = sp.floor(bci_bst.labels / 10) ind = ((oldids == 150) | (oldids == 151)) bci_bst.labels[ind] = bci_labs[ind] bci_freq1 = readdfs('/big_disk/ajoshi/coding_ground/hbci_atlas/BCI-DNI_brain_\ atlas_refined_4_11_2017/BCI-DNI_brain.left.mid.cortex.mod.dfs') bci_bst.attributes = bci_freq1.attributes bci_bst.attributes[ind] = bci_freq[ind] bci_bst = patch_color_labels(bci_bst, cmap='Paired') view_patch_vtk(bci_bst, show=1) writedfs('../tmp/BCI-DNI_brain.left.\ mid.cortex_refined_labs_uncorr.dfs', bci_bst) bci_bst = patch_color_labels(bci_bst, freq=bci_bst.attributes, cmap='Paired') # bci_bst = smooth_patch(bci_bst, iterations=90, relaxation=10.8) view_patch_vtk(bci_bst, show=1) writedfs( '../tmp/BCI-DNI_brain.left.\ mid.cortex_refined_labs_mod_freq_uncorr.dfs', bci_bst) surfname = '../tmp/BCI-DNI_brain.left.\ mid.cortex_refined_labs_uncorr.dfs' sub_out = '../tmp/BCI-DNI_brain.left.\ mid.cortex_refined_labs_corr.dfs' eng = meng.start_matlab()
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)
_brain_atlas_refined/BCI-DNI_brain.right.inner.cortex.dfs') bci_bst.labels = bci_bsti.labels bci_bst.vertices[:, 0] -= 96 * 0.8 bci_bst.vertices[:, 1] -= 192 * 0.546875 bci_bst.vertices[:, 2] -= 192 * 0.546875 bci.vertices, bci.faces = fsio.read_geometry('/big_disk/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('/big_disk/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/MNINon\ Linear/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/MNINon\ Linear/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.a\ 2009s.32k_fs.reduce3.very_smooth.right.dfs') dfs = interpolate_labels(bci, dfs, skipzero=1) # view_patch(dfs, dfs.labels, colormap='prism') writedfs('BCI_refined_reduce3.very_smooth.right.dfs', dfs)
g_surf = gread('/home/ajoshi/data/HCP_data/reference/100307/MNINonLinear/fsaverage_LR32k/100307.L.very_inflated.32k_fs_LR.surf.gii') vert = g_surf.darrays[0].data face = g_surf.darrays[1].data hcp32k.vertices = vert; hcp32k.faces=face a = s.vertices; b = hcp32k.vertices tree = cKDTree(a) d, ind = tree.query(b) hcp32k.labels=s.labels[ind] view_patch(hcp32k,hcp32k.labels) writedfs('lh.Yeo2011_17Networks_N1000.dfs',hcp32k) #ind = sp.logical_or.reduce(sp.logical_and.reduce(a == b[:,None], axis=2)) #vert2=a[ind] #g_surf = gread('/home/ajoshi/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 #s.faces= #hcp32k = gread('/home/ajoshi/HCP_data/reference/100307/MNINonLinear/fsaverage_LR32k/100307.L.sphere.32k_fs_LR.surf.gii') #vert = hcp32k.darrays[0].data #face = hcp32k.darrays[1].data #hcp32k.vertices=vert; hcp32k.faces=face
data2[data1 == rois1[ids]] = rois2[ids] data2[data1 == rois2[ids]] = rois1[ids] left_labs[sp.where(left_mid.labels == rois1[ids])] = rois2[ids] left_labs[sp.where(left_mid.labels == rois2[ids])] = rois1[ids] right_labs[sp.where(right_mid.labels == rois1[ids])] = rois2[ids] right_labs[sp.where(right_mid.labels == rois2[ids])] = rois1[ids] vm = image.new_img_like(v_lab, data2) vm.to_filename('/big_disk/ajoshi/coding_ground/svreg-matlab/\ BCI-DNI_brain_atlas_refined/BCI-DNI_brain.label.corr.nii.gz') left_mid.labels = left_labs right_mid.labels = right_labs writedfs( '/big_disk/ajoshi/coding_ground/svreg-matlab/BCI-DNI_brain_atlas_\ refined/BCI-DNI_brain.left.mid.cortex.corr.dfs', left_mid) writedfs( '/big_disk/ajoshi/coding_ground/svreg-matlab/BCI-DNI_brain_atlas_\ refined/BCI-DNI_brain.right.mid.cortex.corr.dfs', right_mid) left_inner = readdfs('/big_disk/ajoshi/coding_ground/svreg-matlab/\ /BCI-DNI_brain_atlas_refined/BCI-DNI_brain.left.inner.cortex.dfs') left_inner.labels = left_labs writedfs( '/big_disk/ajoshi/coding_ground/svreg-matlab/BCI-DNI_brain_atlas_\ refined/BCI-DNI_brain.left.inner.cortex.corr.dfs', left_inner) left_pial = readdfs('/big_disk/ajoshi/coding_ground/svreg-matlab/\ /BCI-DNI_brain_atlas_refined/BCI-DNI_brain.left.pial.cortex.dfs') left_pial.labels = left_labs
outfile = 'BCI-DNI_Perirhinal' + '.' + hemi + '.mid.cortex.dfs' ''' BCI to FS processed BCI ''' bci_bsti = readdfs( '/home/ajoshi/BrainSuite19b/svreg/BCI-DNI_brain_atlas/BCI-DNI_brain.' + hemi + '.inner.cortex.dfs') bci_bst_mid = readdfs( '/home/ajoshi/BrainSuite19b/svreg/BCI-DNI_brain_atlas/BCI-DNI_brain.' + hemi + '.mid.cortex.dfs') bci_bsti.vertices[:, 0] -= 96 * 0.8 bci_bsti.vertices[:, 1] -= 192 * 0.546875 bci_bsti.vertices[:, 2] -= 192 * 0.546875 bci.vertices, bci.faces = fsio.read_geometry( '/big_disk/ajoshi/data/BCI_DNI_Atlas/surf/' + fshemi + '.white') bci.labels = np.zeros(bci.vertices.shape[0]) for i in range(len(broadmann)): labind = fsio.read_label('/big_disk/ajoshi/data/BCI_DNI_Atlas/label/' + fshemi + '.' + broadmann[i] + '.label') bci.labels[labind] = i + 1 bci = patch_color_labels(bci) view_patch_vtk(bci) bci_bsti = interpolate_labels(bci, bci_bsti) bci_bst_mid.labels = bci_bsti.labels bci_bst_mid = smooth_patch(bci_bst_mid, iterations=3000, relaxation=.5) bci_bst_labels = patch_color_labels(bci_bst_mid) view_patch_vtk(bci_bst_labels) writedfs(outfile, bci_bst_labels)
brain = get_sphere([0, 0, 0], radius=.06000, res=150) skull = get_sphere([0, 0, 0], radius=.12000, res=50) # brain = readdfs(brain_name) # brain=smooth_patch(brain,100) # brain = reducepatch(brain,.9,0) # 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
g32k.faces = g32ktmp.get_arrays_from_intent('NIFTI_INTENT_TRIANGLE')[0].data g32k.vColor = sp.ones(g32k.vertices.shape) bci.vertices, bci.faces = fsio.read_geometry('/big_disk/ajoshi/data/BCI_\ DNI_Atlas/surf/rh.sphere.reg') bci.labels = fsio.read_annot('/big_disk/ajoshi/data/BCI_DNI_Atlas/label/rh\ .BA.thresh.annot')[0] g32k = interpolate_labels(fromsurf=bci, tosurf=g32k) g32ktmp = gread('/big_disk/ajoshi/HCP_data/32k_ConteAtlas_v2/Conte69.R\ .very_inflated.32k_fs_LR.surf.gii') g32k.vertices = g32ktmp.get_arrays_from_intent('NIFTI_INTENT_POINTSET')[0].data g32k = patch_color_labels(g32k) view_patch_vtk(g32k) writedfs('Boradmann_32k_right.dfs', g32k) ''' Left Hemisphere ''' g32ktmp = gread('/big_disk/ajoshi/data/standard_mesh_atlases/resample\ _fsaverage/fs_LR-deformed_to-fsaverage.L.sphere.32k_fs_LR.surf.gii') g32k.vertices = g32ktmp.get_arrays_from_intent('NIFTI_INTENT_POINTSET')[0].data g32k.faces = g32ktmp.get_arrays_from_intent('NIFTI_INTENT_TRIANGLE')[0].data g32k.vColor = sp.ones(g32k.vertices.shape) bci.vertices, bci.faces = fsio.read_geometry('/big_disk/ajoshi/data/BCI_\ DNI_Atlas/surf/lh.sphere.reg') bci.labels = fsio.read_annot('/big_disk/ajoshi/data/BCI_DNI_Atlas/label/lh\ .BA.thresh.annot')[0] g32k = interpolate_labels(fromsurf=bci, tosurf=g32k) g32ktmp = gread('/big_disk/ajoshi/HCP_data/32k_ConteAtlas_v2/Conte69.L\
# -*- coding: utf-8 -*- """ Created on Fri May 12 17:35:03 2017 @author: ajoshi """ from dfsio import readdfs, writedfs so = readdfs( '/big_disk/ajoshi/coding_ground/svreg/BCI-DNI_brain_atlas/BCI-DNI_brain.right.pial.cortex.dfs' ) s = readdfs( '/big_disk/ajoshi/coding_ground/svreg/USCBrain/BCI-DNI_brain.right.pial.cortex.dfs' ) s.vertices = so.vertices writedfs( '/big_disk/ajoshi/coding_ground/svreg/USCBrain/BCI-DNI_brain.right.pial.cortex.corr.dfs', s) so = readdfs( '/big_disk/ajoshi/coding_ground/svreg/BCI-DNI_brain_atlas/BCI-DNI_brain.left.pial.cortex.dfs' ) s = readdfs( '/big_disk/ajoshi/coding_ground/svreg/USCBrain/BCI-DNI_brain.left.pial.cortex.dfs' ) s.vertices = so.vertices writedfs( '/big_disk/ajoshi/coding_ground/svreg/USCBrain/BCI-DNI_brain.left.pial.cortex.corr.dfs', s)
vol_lab = image.load_img(outvol) vol_lab = image.new_img_like(vol_lab, np.int16(vol_lab.get_fdata())) vol_lab.to_filename(outvol) vol_img = vol_lab.get_fdata() xres = vol_lab.header['pixdim'][1] yres = vol_lab.header['pixdim'][2] zres = vol_lab.header['pixdim'][3] sl = readdfs(lmid) sr = readdfs(rmid) xx = np.arange(vol_lab.shape[0]) * xres yy = np.arange(vol_lab.shape[1]) * yres zz = np.arange(vol_lab.shape[2]) * zres sl.labels = interpn((xx, yy, zz), vol_img, sl.vertices, method='nearest') sr.labels = interpn((xx, yy, zz), vol_img, sr.vertices, method='nearest') sl = smooth_patch(sl, iterations=3000, relaxation=.5) sr = smooth_patch(sr, iterations=3000, relaxation=.5) patch_color_labels(sl) view_patch_vtk(sl) patch_color_labels(sr) view_patch_vtk(sr) writedfs(outmidl, sl) writedfs(outmidr, sr)
elevation=180, roll=90, outfile='before2_seg1to2_1.png') view_patch_vtk(dfs_ref, azimuth=-90, elevation=180, roll=-90, outfile='before2_seg1to2_2.png') _, Rot12 = rot_sub_data(ref=sub2seg2, sub=sub1seg1) sub1seg1rot = sp.dot(sub1seg1, Rot12.T) rho_after = sp.sum(sub1seg1rot * sub1seg2, axis=1) / sub2seg2.shape[1] dfs_ref = patch_color_attrib(dfs_ref, rho_after, clim=[0, .7]) writedfs('temp.dfs', dfs_ref) view_patch_vtk(dfs_ref, azimuth=90, elevation=180, roll=90, outfile='after2_seg1to2_1.png') view_patch_vtk(dfs_ref, azimuth=-90, elevation=180, roll=-90, outfile='after2_seg1to2_2.png') rho_direct22 = sp.sum(sub1seg2 * sub2seg2, axis=1) / sub2seg2.shape[1] dfs_ref = patch_color_attrib(dfs_ref, rho_direct22, clim=[0, .7]) view_patch_vtk(dfs_ref, azimuth=90,
def save_surface(self, atlas_filename): s1 = dfsio.readdfs(atlas_filename) if self.mask_idx.any(): pvalues = np.ones(s1.vertices.shape[0]) pvalues[self.mask_idx] = self.statsresult.pvalues self.statsresult.pvalues = pvalues tvalues = np.zeros(s1.vertices.shape[0]) tvalues[self.mask_idx] = self.statsresult.tvalues self.statsresult.tvalues = tvalues s1.attributes = self.statsresult.pvalues # print s1.attributes if len(s1.attributes) == s1.vertices.shape[0]: # Also write color to the field self.statsresult.pvalues = log10_transform( self.statsresult.pvalues) s1.vColor, pex, cmap = colormaps.Colormap.log_pvalues_to_rgb( self.statsresult.pvalues) s1.attributes = self.statsresult.pvalues dfsio.writedfs( os.path.join(self.outdir, self.outprefix + '_atlas_log_pvalues.dfs'), s1) colormaps.Colormap.save_colorbar(file=os.path.join( self.outdir, self.outprefix + '_atlas_log_pvalues_cbar.pdf'), cmap=cmap, vmin=-1 * pex, vmax=pex, labeltxt='Unadjusted p-values') s1.attributes = self.statsresult.tvalues s1.vColor, tmin, tmax, cmap_tvalues = colormaps.Colormap.tvalues_to_rgb( self.statsresult.tvalues) dfsio.writedfs( os.path.join(self.outdir, self.outprefix + '_atlas_tvalues_all.dfs'), s1) colormaps.Colormap.save_colorbar(file=os.path.join( self.outdir, self.outprefix + '_atlas_tvalues_all_cbar.pdf'), cmap=cmap_tvalues, vmin=tmin, vmax=tmax, labeltxt='t-values (all)') self.statsresult.tvalues[np.abs(self.statsresult.pvalues) <= -1 * np.log10(0.05)] = 0 s1.vColor, tmin, tmax, cmap_tvalues = colormaps.Colormap.tvalues_to_rgb( self.statsresult.tvalues) s1.attributes = self.statsresult.tvalues dfsio.writedfs( os.path.join(self.outdir, self.outprefix + '_atlas_tvalues.dfs'), s1) colormaps.Colormap.save_colorbar(file=os.path.join( self.outdir, self.outprefix + '_atlas_tvalues_cbar.pdf'), cmap=cmap_tvalues, vmin=tmin, vmax=tmax, labeltxt='t-values (unadjusted)') LUT = cmap_tvalues._lut[0:256, 0:3] colormaps.Colormap.exportBrainSuiteLUT( os.path.join(self.outdir, self.outprefix + '_atlas_tvalues_cbar.lut'), LUT) with open( os.path.join( self.outdir, self.outprefix + '_unadjusted_pvalue_range.txt'), "wt") as text_file: text_file.write("Log P-value range: -{0:s} to +{1:s}\n".format( str(pex), str(pex))) text_file.write("P-value range: {0:s} to +{1:s}\n".format( str(-1 * 10**(-1 * pex)), str(10**(-1 * pex)))) if len(self.statsresult.pvalues_adjusted) > 0: if self.mask_idx.any(): pvalues = np.ones(s1.vertices.shape[0]) pvalues[self.mask_idx] = self.statsresult.pvalues_adjusted self.statsresult.pvalues_adjusted = pvalues s1.attributes = self.statsresult.pvalues_adjusted self.statsresult.pvalues_adjusted = log10_transform( self.statsresult.pvalues_adjusted) s1.vColor, pex, cmap = colormaps.Colormap.log_pvalues_to_rgb( self.statsresult.pvalues_adjusted) s1.attributes = self.statsresult.pvalues_adjusted dfsio.writedfs( os.path.join( self.outdir, self.outprefix + '_atlas_log_pvalues_adjusted.dfs'), s1) colormaps.Colormap.save_colorbar(file=os.path.join( self.outdir, self.outprefix + '_atlas_log_pvalues_adjusted_cbar.pdf'), cmap=cmap, vmin=-1 * pex, vmax=pex, labeltxt='Adjusted p-values') self.statsresult.tvalues[ np.abs(self.statsresult.pvalues_adjusted) < -1 * np.log10(0.05)] = 0 s1.vColor, tmin, tmax, cmap_tvalues = colormaps.Colormap.tvalues_to_rgb( self.statsresult.tvalues) s1.attributes = self.statsresult.tvalues dfsio.writedfs( os.path.join( self.outdir, self.outprefix + '_atlas_tvalues_adjusted.dfs'), s1) colormaps.Colormap.save_colorbar( file=os.path.join( self.outdir, self.outprefix + '_atlas_tvalues_adjusted_cbar.pdf'), cmap=cmap_tvalues, vmin=tmin, vmax=tmax, labeltxt='t-values (adjusted)') LUT = cmap_tvalues._lut[0:256, 0:3] colormaps.Colormap.exportBrainSuiteLUT( os.path.join( self.outdir, self.outprefix + '_atlas_tvalues_adjusted_cbar.lut'), LUT) with open( os.path.join( self.outdir, self.outprefix + '_adjusted_pvalue_range.txt'), "wt") as text_file: text_file.write( "Log P-value range: -{0:s} to +{1:s}\n".format( str(pex), str(abs(pex)))) text_file.write("P-value range: {0:s} to +{1:s}\n".format( str(-1 * 10**(-1 * pex)), str(10**(-1 * pex)))) else: sys.stdout.write( 'Error: Dimension mismatch between the p-values and the number of vertices. ' 'Quitting without saving.\n') if len(self.statsresult.corrvalues) > 0: if self.mask_idx.any(): corrvalues = np.zeros(s1.vertices.shape[0]) corrvalues[self.mask_idx] = self.statsresult.corrvalues self.statsresult.corrvalues = corrvalues s1.attributes = self.statsresult.corrvalues s1.vColor, cex, cmap = colormaps.Colormap.correlation_to_rgb( self.statsresult.corrvalues) dfsio.writedfs( os.path.join(self.outdir, self.outprefix + '_corr.dfs'), s1) colormaps.Colormap.save_colorbar( file=os.path.join(self.outdir, self.outprefix + '_corr_cbar.pdf'), cmap=cmap, vmin=-1 * cex, vmax=cex, labeltxt='Correlations (unadjusted)') with open( os.path.join(self.outdir, self.outprefix + '_corr_range.txt'), "wt") as text_file: text_file.write( "Correlation values range: -{0:s} to +{1:s}\n".format( str(cex), str(cex))) # Also write color to the field self.statsresult.corrvalues[np.abs( self.statsresult.pvalues_adjusted) < -1 * np.log10(0.05)] = 0 s1.attributes = self.statsresult.corrvalues s1.vColor, cex, cmap = colormaps.Colormap.correlation_to_rgb( self.statsresult.corrvalues) dfsio.writedfs( os.path.join(self.outdir, self.outprefix + '_corr_adjusted.dfs'), s1) colormaps.Colormap.save_colorbar( file=os.path.join(self.outdir, self.outprefix + '_corr_adjusted_cbar.pdf'), cmap=cmap, vmin=-1 * cex, vmax=cex, labeltxt='Correlations (adjusted)') with open( os.path.join(self.outdir, self.outprefix + '_adjusted_corr_range.txt'), "wt") as text_file: text_file.write( "Adjusted Correlation values range: {0:s} to +{1:s}\n". format(str(cex), str(cex))) sys.stdout.write('Done.\n')
view_patch_vtk(h) ''' native FS ref to native FS BCI''' g_surf = nib.load('/data_disk/HCP5-fMRI-NLM/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( '/big_disk/ajoshi/fs_sub/BCI_DNI_Atlas/surf/lh.sphere.reg') bs = interpolate_labels(s, bs) bci.vertices, bci.faces = fsio.read_geometry( '/big_disk/ajoshi/fs_sub/BCI_DNI_Atlas/surf/lh.white') bci.labels = bs.labels writedfs('BCI_orig_lh.dfs', bci) bci.vertices, bci.faces = fsio.read_geometry( '/big_disk/ajoshi/fs_sub/BCI_DNI_Atlas/surf/lh.inflated') bci = patch_color_labels(bci) view_patch_vtk(bci) writedfs('BCI_pial_lh.dfs.', bci) bci.vertices, bci.faces = fsio.read_geometry( '/big_disk/ajoshi/fs_sub/BCI_DNI_Atlas/surf/lh.white') writedfs('BCI_white_lh.dfs.', bci) bci.vertices[:, 0] += 96 * 0.8 bci.vertices[:, 1] += 192 * 0.546875 bci.vertices[:, 2] += 192 * 0.546875