def test_picking_trajectories(): curves=[100*np.random.rand(10,3),100*np.random.rand(5,3),100*np.random.rand(3,3)] #curves=[100*np.array([[0,0,0],[1,0,0]]), 100*np.array([[0,1,0],[0,1,3]]),100*np.array([[0,2,0],[0,2,3]])] ''' from nibabel import trackvis as tv #fname='/home/eg309/Data/PROC_MR10032/subj_01/101/1312211075232351192010091419011391228126452ep2dadvdiffDSI25x25x25b4000s003a001_FA_warp.trk' fname='/home/eg309/Data/fibers.trk' streams,hdr=tv.read(fname) T=[s[0] for s in streams] curves=T[:200000] fname='/home/eg309/Data/PROC_MR10032/subj_02/101/1312211075232351192010091708112071055601107ep2dadvdiffDSI10125x25x25STs002a001_QA_native.dpy' from dipy.io.dpy import Dpy dpr=Dpy(fname,'r') T=dpr.read_indexed(range(20000)) from dipy.core.track_metrics import length curves=[t for t in T if length(t) > 20] dpr.close() ''' #colors=np.random.rand(len(curves),4).astype('f4') colors=0.5*np.ones((len(curves),4)).astype('f4') for (i,c) in enumerate(curves): orient=c[0]-c[-1] orient=np.abs(orient/np.linalg.norm(orient)) colors[i,:3]=orient c=InteractiveCurves(curves,colors=colors) w=World() w.add(c) wi=Window() wi.attach(w)
def show_tracks(tracks,alpha=1.,lw=2.,bg=(1.,1.,1.,1)): colors=compute_colors(tracks,alpha=alpha) ax = Line(tracks,colors,line_width=lw) w=World() w.add(ax) wi = Window(caption=" Curve plotting (fos.me)",\ bgcolor=bg,width=1200,height=1000) #(0,0.,0.2,1) wi.attach(w) wm = WindowManager() wm.add(wi) wm.run()
def load_tracks(method="pmt"): from nibabel import trackvis as tv dname = "/home/eg309/Data/orbital_phantoms/dwi_dir/subject1/" if method == "pmt": fname = "/home/eg309/Data/orbital_phantoms/dwi_dir/workflow/tractography/_subject_id_subject1/cam2trk_pico_twoten/data_fit_pdfs_tracked.trk" streams, hdr = tv.read(fname, points_space="voxel") tracks = [s[0] for s in streams] if method == "dti": fname = dname + "dti_tracks.dpy" if method == "dsi": fname = dname + "dsi_tracks.dpy" if method == "gqs": fname = dname + "gqi_tracks.dpy" if method == "eit": fname = dname + "eit_tracks.dpy" if method in ["dti", "dsi", "gqs", "eit"]: dpr_linear = Dpy(fname, "r") tracks = dpr_linear.read_tracks() dpr_linear.close() if method != "pmt": tracks = [t - np.array([96 / 2.0, 96 / 2.0, 55 / 2.0]) for t in tracks if track_range(t, 100 / 2.5, 150 / 2.5)] tracks = [t for t in tracks if track_range(t, 100 / 2.5, 150 / 2.5)] print "final no of tracks ", len(tracks) qb = QuickBundles(tracks, 25.0 / 2.5, 18) # from dipy.viz import fvtk # r=fvtk.ren() # fvtk.add(r,fvtk.line(qb.virtuals(),fvtk.red)) # fvtk.show(r) # show_tracks(tracks)#qb.exemplars()[0]) # qb.remove_small_clusters(40) del tracks # load tl = TrackLabeler(qb, qb.downsampled_tracks(), vol_shape=None, tracks_line_width=3.0, tracks_alpha=1) # return tracks w = World() w.add(tl) # create window wi = Window(caption="Fos", bgcolor=(1.0, 1.0, 1.0, 1.0), width=1600, height=900) wi.attach(w) # create window manager wm = WindowManager() wm.add(wi) wm.run()
def load_PX_tracks(): roi = "LH_premotor" dn = "/home/hadron/from_John_mon12thmarch" dname = "/extra_probtrackX_analyses/_subject_id_subj05_101_32/particle2trackvis_" + roi + "_native/" fname = dn + dname + "tract_samples.trk" from nibabel import trackvis as tv points_space = [None, "voxel", "rasmm"] streamlines, hdr = tv.read(fname, as_generator=True, points_space="voxel") tracks = [s[0] for s in streamlines] del streamlines # return tracks qb = QuickBundles(tracks, 25.0 / 2.5, 18) # tl=Line(qb.exemplars()[0],line_width=1) del tracks qb.remove_small_clusters(20) tl = TrackLabeler(qb, qb.downsampled_tracks(), vol_shape=None, tracks_line_width=3.0, tracks_alpha=1) # put the seeds together # seeds=np.vstack((seeds,seeds2)) # shif the seeds # seeds=np.dot(mat[:3,:3],seeds.T).T + mat[:3,3] # seeds=seeds-shift # seeds2=np.dot(mat[:3,:3],seeds2.T).T + mat[:3,3] # seeds2=seeds2-shift # msk = Point(seeds,colors=(1,0,0,1.),pointsize=2.) # msk2 = Point(seeds2,colors=(1,0,.ppppp2,1.),pointsize=2.) w = World() w.add(tl) # w.add(msk) # w.add(msk2) # w.add(sl) # create window wi = Window(caption="Fos", bgcolor=(0.3, 0.3, 0.6, 1.0), width=1600, height=900) wi.attach(w) # create window manager wm = WindowManager() wm.add(wi) wm.run()
def test_picking_trajectories(): curves = [ 100 * np.random.rand(10, 3), 100 * np.random.rand(5, 3), 100 * np.random.rand(3, 3) ] #curves=[100*np.array([[0,0,0],[1,0,0]]), 100*np.array([[0,1,0],[0,1,3]]),100*np.array([[0,2,0],[0,2,3]])] ''' from nibabel import trackvis as tv #fname='/home/eg309/Data/PROC_MR10032/subj_01/101/1312211075232351192010091419011391228126452ep2dadvdiffDSI25x25x25b4000s003a001_FA_warp.trk' fname='/home/eg309/Data/fibers.trk' streams,hdr=tv.read(fname) T=[s[0] for s in streams] curves=T[:200000] fname='/home/eg309/Data/PROC_MR10032/subj_02/101/1312211075232351192010091708112071055601107ep2dadvdiffDSI10125x25x25STs002a001_QA_native.dpy' from dipy.io.dpy import Dpy dpr=Dpy(fname,'r') T=dpr.read_indexed(range(20000)) from dipy.core.track_metrics import length curves=[t for t in T if length(t) > 20] dpr.close() ''' #colors=np.random.rand(len(curves),4).astype('f4') colors = 0.5 * np.ones((len(curves), 4)).astype('f4') for (i, c) in enumerate(curves): orient = c[0] - c[-1] orient = np.abs(orient / np.linalg.norm(orient)) colors[i, :3] = orient c = InteractiveCurves(curves, colors=colors) w = World() w.add(c) wi = Window() wi.attach(w)
if __name__ == '__main__': tracks=[100*np.random.rand(100,3),100*np.random.rand(20,3)] colors=np.ones((120,4)) colors[0:100,:3]=np.array([1,0,0.]) colors[100:120,:3]=np.array([0,1,0]) import nibabel as nib from os import path as op a=nib.trackvis.read( op.join(op.dirname(fos.__file__), "data", "tracks300.trk") ) g=np.array(a[0], dtype=np.object) tracks = [tr[0] for tr in a[0]] #tracks = tracks-np.concatenate(tracks,axis=0) lentra = [len(t) for t in tracks] colors = np.ones((np.sum(lentra),4)) #colors[:,3]=0.9 ax = Line(tracks,colors,line_width=2) w=World() w.add(ax) wi = Window(caption=" Line plotting (fos.me)",\ bgcolor=(0,0.,0.2,1),width=800,height=600) wi.attach(w) wm = WindowManager() wm.add(wi) wm.run()
except pyglet.window.NoSuchConfigException: # Fall back to no multisampling for old hardware window = Window(resizable=True, caption = mycpt) # sample tree data # #### vert = np.array( [ [0,0,0], [5,5,0], [5,10,0], [10,5,0]], dtype = np.float32 ) conn = np.array( [ 0, 1, 1, 2, 1, 3 ], dtype = np.uint32 ) cols = np.array( [ [0, 0, 1, 1], [1, 0, 1, 1], [0, 0, 1, 0.5] ] , dtype = np.float32 ) vert_width = np.array( [1, 5, 5, 1, 5, 1], dtype = np.float32 ) ax = Axes() act = TreeRegion(vertices = vert, connectivity = conn, colors = cols, radius = vert_width) w = World() w.add(ax) w.add(act) window.attach(w) wm = WindowManager() wm.add(window) wm.run()
import scipy.ndimage as nd import nibabel as ni from fos.actor.volslicer import ConnectedSlices from fos import World, Window # your nifti volume f1 = 'raw_t1_image.nii.gz' img = ni.load(f1) data = img.get_data() affine = img.get_affine() cds = ConnectedSlices(affine, data) w = World() w.add(cds) wi = Window() wi.attach(w)
""" Create an empty Fos world and attach a window to it """ from fos import World, Window, DefaultCamera, WindowManager # create the first window wi = Window(caption = "My Window 1", bgcolor = (1,1,1,1) ) # return the default empty world of this window w = World() # add a new camera to this world cam2 = DefaultCamera() w.add(cam2) # create the second window wi2 = Window(caption = "My Window 2", bgcolor = (0,0,0,1) ) # we want to look at the same world as window 1, thus drop # the default world and attach the window to our world with the second camera wi2.attach(w) # set the camera for the second window to the second camera wi2.set_current_camera(cam2) # Create the window manager, add the windows, and go! wm = WindowManager() wm.add(wi) wm.add(wi2) wm.run()
caption=mycpt) # "vsync=False" to check the framerate except pyglet.window.NoSuchConfigException: # Fall back to no multisampling for old hardware window = Window(resizable=True, caption=mycpt) # sample tree data # #### vert = np.array([[0, 0, 0], [5, 5, 0], [5, 10, 0], [10, 5, 0]], dtype=np.float32) conn = np.array([0, 1, 1, 2, 1, 3], dtype=np.uint32) cols = np.array([[0, 0, 1, 1], [1, 0, 1, 1], [0, 0, 1, 0.5]], dtype=np.float32) vert_width = np.array([1, 5, 5, 1, 5, 1], dtype=np.float32) ax = Axes() act = TreeRegion(vertices=vert, connectivity=conn, colors=cols, radius=vert_width) w = World() w.add(ax) w.add(act) window.attach(w) wm = WindowManager() wm.add(window) wm.run()
""" Create an empty Fos world and attach a window to it """ from fos import World, Window, DefaultCamera, WindowManager # create the first window wi = Window(caption="My Window 1", bgcolor=(1, 1, 1, 1)) # return the default empty world of this window w = wi.get_world() # add a new camera to this world cam2 = DefaultCamera() w.add(cam2) # create the second window wi2 = Window(caption="My Window 2", bgcolor=(0, 0, 0, 1)) # we want to look at the same world as window 1, thus drop # the default world and attach the window to our world with the second camera wi2.attach(w) # set the camera for the second window to the second camera wi2.set_current_camera(cam2) # Create the window manager, add the windows, and go! wm = WindowManager() wm.add(wi) wm.add(wi2) wm.run()