Esempio n. 1
0
def skeletonize_both():
    from dipy.viz import fos
    from dipy.core.track_metrics import downsample
    from dipy.core.track_performance import local_skeleton_clustering, most_similar_track_mam
    
    froi='/home/eg309/Data/ICBM_Wmpm/ICBM_WMPM.nii'
    wI=get_roi(froi,9,0) #4 is genu    
    fname='/home/eg309/Data/PROC_MR10032/subj_03/101/1312211075232351192010092217244332311282470ep2dadvdiffDSI10125x25x25STs004a001_QA_warp.dpy'
    #fname='/home/eg309/Data/PROC_MR10032/subj_03/101/1312211075232351192010092217244332311282470ep2dadvdiffDSI10125x25x25STs004a001_QA_native.dpy'
    #fname='/home/eg309/Data/PROC_MR10032/subj_06/101/13122110752323511930000010092916083910900000227ep2dadvdiffDSI10125x25x25STs004a001_QA_native.dpy'
    fname2='/home/eg309/Data/PROC_MR10032/subj_06/101/13122110752323511930000010092916083910900000227ep2dadvdiffDSI10125x25x25STs004a001_QA_warp.dpy'
    r=fos.ren()
    #'''
    dpr=Dpy(fname,'r')    
    T=dpr.read_indexed(range(2*10**4))
    dpr.close()    
    print len(T)    
    Td=[downsample(t,3) for t in T if length(t)>40]
    C=local_skeleton_clustering(Td,d_thr=20.)
    
    for c in C:
        #color=np.random.rand(3)
        color=fos.red
        if C[c]['N']>0:
            Ttmp=[]
            for i in C[c]['indices']:
                Ttmp.append(T[i])
            si,s=most_similar_track_mam(Ttmp,'avg')
            print si,C[c]['N']                
            fos.add(r,fos.line(Ttmp[si],color))                

    dpr=Dpy(fname2,'r')    
    T=dpr.read_indexed(range(2*10**4))
    dpr.close()    
    print len(T)    
    Td=[downsample(t,3) for t in T if length(t)>40]
    C=local_skeleton_clustering(Td,d_thr=20.)
    #r=fos.ren()
    for c in C:
        #color=np.random.rand(3)
        color=fos.yellow
        if C[c]['N']>0:
            Ttmp=[]
            for i in C[c]['indices']:
                Ttmp.append(T[i])
            si,s=most_similar_track_mam(Ttmp,'avg')
            print si,C[c]['N']                
            fos.add(r,fos.line(Ttmp[si],color))            
    #'''
    fos.add(r,fos.point(wI,fos.green))
    fos.show(r)
Esempio n. 2
0
    def bloat_bundle(self,tracks):

        tracksn=[]

        #c=np.array([0,0,0],np.float32)

        import dipy.core.track_performance as pf

        #c=tracks[0][-4]

        ct=tracks[pf.most_similar_track_mam(tracks,'avg')[0]]
        
        c=ct[len(ct)/2]

        #tracks2=[tm.downsample(t,200) for t in tracks]

        for X in tracks2:

            Xn = X + np.multiply(10/np.sum((X-c)**2,axis=1).reshape(len(X),1),X-c)
            #Xn = X + 2*(X-c)

            tracksn.append(Xn)


        from dipy.io import pickles as pkl

        pkl.save_pickle('bundles.pkl',{'init':tracks[10],'after':tracksn[10]})

        
        
        

        return tracksn
Esempio n. 3
0
def skeletonize():
    
    froi='/home/eg309/Data/ICBM_Wmpm/ICBM_WMPM.nii'
    wI=get_roi(froi,35,1) #4 is genu    
    #fname='/home/eg309/Data/PROC_MR10032/subj_03/101/1312211075232351192010092217244332311282470ep2dadvdiffDSI10125x25x25STs004a001_QA_warp.dpy'
    #fname='/home/eg309/Data/PROC_MR10032/subj_03/101/1312211075232351192010092217244332311282470ep2dadvdiffDSI10125x25x25STs004a001_QA_native.dpy'
    #fname='/home/eg309/Data/PROC_MR10032/subj_06/101/13122110752323511930000010092916083910900000227ep2dadvdiffDSI10125x25x25STs004a001_QA_native.dpy'
    fname='/home/eg309/Data/PROC_MR10032/subj_06/101/13122110752323511930000010092916083910900000227ep2dadvdiffDSI10125x25x25STs004a001_QA_warp.dpy'
    
    dpr=Dpy(fname,'r')    
    T=dpr.read_indexed(range(2*10**4))
    dpr.close()
    
    print len(T)    
    from dipy.core.track_metrics import downsample
    from dipy.core.track_performance import local_skeleton_clustering, most_similar_track_mam
    Td=[downsample(t,3) for t in T]
    C=local_skeleton_clustering(Td,d_thr=20.)
    
    #Tobject=np.array(T,dtype=np.object)
    
    from dipy.viz import fos
    r=fos.ren()
    
    #skeleton=[]
    
    for c in C:
        color=np.random.rand(3)
        if C[c]['N']>0:
            Ttmp=[]
            for i in C[c]['indices']:
                Ttmp.append(T[i])
            si,s=most_similar_track_mam(Ttmp,'avg')
            print si,C[c]['N']                
            fos.add(r,fos.line(Ttmp[si],color))
            
    #print len(skeleton)
    #fos.add(r,fos.line(skeleton,color))    
    #fos.add(r,fos.line(T,fos.red))    
    fos.show(r)
colors2 = len(data)*[None]
colors_sk = []#len(C.keys())*[None]

for c in C:

    color=np.random.rand(3)    
    r,g,b = color
    bundle=[]

    for i in C[c]['indices']:
        
        colors2[i]=np.tile(np.array([r,g,b,opacity],'f'),(len(data[i]),1))    
        bundle.append(data[i])

    
    bi=pf.most_similar_track_mam(bundle)[0]
    C[c]['skeletal']=bundle[bi]
    

    if len(C[c]['indices'])>100 and tm.length(bundle[bi])>30.:        
        colors_sk.append( np.tile(np.array([r,g,b,opacity],'f'),(len(bundle[bi]),1)) )
        skeletals.append(bundle[bi])

        

print 'len_data', len(data)
print 'len_skeletals', len(skeletals)
print 'len_colors2', len(colors2)
print 'len_colors_sk', len(colors_sk)
    
t2=Tracks(data,colors2,line_width=1.)
colors2 = len(data) * [None]
colors_sk = []  #len(C.keys())*[None]

for c in C:

    color = np.random.rand(3)
    r, g, b = color
    bundle = []

    for i in C[c]['indices']:

        colors2[i] = np.tile(np.array([r, g, b, opacity], 'f'),
                             (len(data[i]), 1))
        bundle.append(data[i])

    bi = pf.most_similar_track_mam(bundle)[0]
    C[c]['skeletal'] = bundle[bi]

    if len(C[c]['indices']) > 100 and tm.length(bundle[bi]) > 30.:
        colors_sk.append(
            np.tile(np.array([r, g, b, opacity], 'f'), (len(bundle[bi]), 1)))
        skeletals.append(bundle[bi])

print 'len_data', len(data)
print 'len_skeletals', len(skeletals)
print 'len_colors2', len(colors2)
print 'len_colors_sk', len(colors_sk)

t2 = Tracks(data, colors2, line_width=1.)
t2.position = (100, 0, 0)