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)
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)
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)