ei.fit()    

    ds=DiffusionSpectrum(dat,bvals,bvecs,
                         odf_sphere='symmetric642',
                         mask=None,
                         half_sphere_grads=True,
                         auto=True,
                         save_odfs=True)
    
    ten=Tensor(dat,bvals,bvecs)
    FA=ten.fa()

    #gq=GeneralizedQSampling(dat,bvals,bvecs,1.2,odf_sphere='symmetric642',squared=False,save_odfs=True)
    #gq2=GeneralizedQSampling(dat,bvals,bvecs,3.,odf_sphere='symmetric642',squared=True,save_odfs=True)    
    #show_blobs(ds.ODF,ds.odf_vertices,ds.odf_faces,FA.squeeze(),size=1.5,scale=1.)
    show_blobs(ei.ODF,ei.odf_vertices,ei.odf_faces,FA.squeeze(),size=1.5,scale=1.)

    """
    #dti reconstruction
    ten=Tensor(data,bvals,bvecs2,mask=mask)
    #generate tensor tracks with random seeds
    eu=EuDX(ten.fa(),ten.ind(),seeds=10000,a_low=0.2)
    tenT=[e for e in eu]
    #dsi reconstruction
    ds=DiffusionSpectrum(data,bvals,bvecs2,mask=mask)
    #generate dsi tracks with random seeds
    eu_fa=EuDX(ten.fa(),ds.ind()[...,0],seeds=10000,a_low=0.2)    
    dsTfa=[e for e in eu_fa]
    eu_gfa=EuDX(ds.gfa(),ds.ind()[...,0],seeds=10000,a_low=0.2)
    dsTgfa=[e for e in eu_gfa]
    eu_qa=EuDX(ds.qa(),ds.ind(),seeds=10000,a_low=0.001)
예제 #2
0
            ten = Tensor(100*data, bvals, bvecs)
            FA = ten.fa()
            #GQI
            gqs=GeneralizedQSampling(data,bvals,bvecs,smooth[i],
                            odf_sphere=odf_sphere,
                            mask=None,
                            squared=True,
                            auto=False,
                            save_odfs=True)
            gqs.peak_thr=0.5
            gqs.fit()
            gqs.ODF[gqs.ODF<0]=0.
            #manipulate
            qg=gqs
            #pack_results
            M,R=analyze_peaks(data,ten,qg)
            if test=='train':
                K=np.load('trainSF.npy')
                print 'SNR',snr, 'smooth',smooth[i],\
                    'Missed',np.sum(np.abs(M-K)>0), \
                    'Success',100*(np.float(np.prod(M.shape))-np.sum(np.abs(M-K)>0))/np.float(np.prod(M.shape)),'%'
            if save==True:
                save_for_mat(test,typ,snr,M,R)
            #show ODFs
            if show==True:
                ODFs=get_all_odfs(M,R,len(qg.odf_vertices))
                show_blobs(ODFs[:,:,0,:][:,:,None,:],qg.odf_vertices,qg.odf_faces,size=1.5,scale=1.,norm=True)



    
    #ds=DiffusionSpectrum(dat,bvals,bvecs2,odf_sphere='symmetric642',mask=None,auto=True,save_odfs=True)    
    ten=Tensor(dat,bvals,bvecs)
    FA=ten.fa()
   

    #gq=GeneralizedQSampling(dat,bvals,bvecs,1.2,odf_sphere='symmetric642',squared=False,save_odfs=True)
    gq2=GeneralizedQSampling(dat,bvals,bvecs,3.,odf_sphere='symmetric642',squared=True,save_odfs=True)
    #remove the minimum ODF
    #res=dn.ODF-np.min(dn.ODF,axis=-1)[:,:,:,None]
    
    #show_blobs(dn.ODF,dn.odf_vertices,dn.odf_faces,FA.squeeze(),size=1.5,scale=1.)
    #show_blobs(ei.ODF,ei.odf_vertices,ei.odf_faces,FA.squeeze(),size=1.5,scale=1.)
    #show_blobs(ds.ODF,ds.odf_vertices,ds.odf_faces,FA.squeeze(),size=1.5,scale=1.)
    #show_blobs(gq.ODF,gq.odf_vertices,gq.odf_faces,FA.squeeze(),size=1.5,scale=1.)
    show_blobs(gq2.ODF,gq2.odf_vertices,gq2.odf_faces,FA.squeeze(),size=1.5,scale=1.)
    #show_blobs(dn2.ODF,dn.odf_vertices,dn.odf_faces)
    #show_blobs(ds.ODF,dn.odf_vertices,dn.odf_faces)
    #show_blobs(gq.ODF,dn.odf_vertices,dn.odf_faces)
    #sodfs=botox_weighting(dn.ODF,0.1,0.1,dn.odf_vertices)
    """
    #dti reconstruction
    ten=Tensor(data,bvals,bvecs2,mask=mask)
    #generate tensor tracks with random seeds
    eu=EuDX(ten.fa(),ten.ind(),seeds=10000,a_low=0.2)
    tenT=[e for e in eu]

    #dsi reconstruction
    ds=DiffusionSpectrum(data,bvals,bvecs2,mask=mask)
    #generate dsi tracks with random seeds
    eu_fa=EuDX(ten.fa(),ds.ind()[...,0],seeds=10000,a_low=0.2)    
예제 #4
0
 print 'ds',t2-t1,'secs.'
 gq=GeneralizedQSampling(data,bvals,bvecs,1.2,odf_sphere='symmetric642',mask=famask,squared=False,save_odfs=save_odfs)
 t3=time()
 print 'gq',t3-t2,'secs.'    
 ei=EquatorialInversion(data,bvals,bvecs,odf_sphere='symmetric642',mask=famask,half_sphere_grads=True,auto=False,save_odfs=save_odfs,fast=True)
 ei.radius=np.arange(0,5,0.4)
 ei.gaussian_weight=0.05
 ei.set_operator('laplacian')
 ei.update()
 ei.fit()
 t4=time()
 print 'ei',t4-t3,'secs.'
 if visual:
     #print 'Showing data'
     #show_blobs(ds.ODF[:,:,0,:][:,:,None,:],ds.odf_vertices,ds.odf_faces,size=1.5,scale=1.)    
     show_blobs(ds.ODF[:20,20:40,6,:][:,:,None,:],ds.odf_vertices,ds.odf_faces,size=1.5,scale=1.,norm=True)
     show_blobs(ei.ODF[:20,20:40,6,:][:,:,None,:],ds.odf_vertices,ds.odf_faces,size=1.5,scale=1.,norm=True)
     show_blobs(gq.ODF[:20,20:40,6,:][:,:,None,:],ds.odf_vertices,ds.odf_faces,size=1.5,scale=1.,norm=True)
 #create tensors
 tensors = Tensor(data, bvals, bvecs, thresh=50)
 FA = tensors.fa()
 #MASK=np.zeros(FA.shape)
 #MASK=(FA>.5)&(FA<.8)
 #cleanup background
 ds.PK[FA<.2]=np.zeros(5)
 ei.PK[FA<.2]=np.zeros(5)
 gq.PK[FA<.2]=np.zeros(5)
 
 """!Random seeds everywhere
 #create random seeds    
 x,y,z,g=ei.PK.shape
    
    t1=time()
    
    #"""
    dn=DiffusionNabla(dat,bvals,bvecs,odf_sphere='symmetric362',
                      auto=True,save_odfs=True,fast=True)
    """
    dn.radius=np.arange(0,6,.2)
    dn.radiusn=len(dn.radius)
    dn.create_qspace(bvals,bvecs,16,8)    
    dn.peak_thr=.4
    dn.iso_thr=.7
    dn.radon_params(64)
    dn.precompute_interp_coords()
    dn.fit()
    """
    
    #from dipy.reconst.dsi import DiffusionSpectrum
    #mask=dat[...,0]>0
    #dn=DiffusionSpectrum(dat,bvals,bvecs,save_odfs=True)
        
    t2=time()
    print t2-t1,'.sec'
    show_blobs(dn.odfs(),dn.odf_vertices,dn.odf_faces)
        
    #r=fvtk.ren()
    #fvtk.add(r,fvtk.volume(dat[...,0]))
    #fvtk.show(r)