def test_dsi(): btable=np.loadtxt(get_data('dsi515btable')) bvals=btable[:,0] bvecs=btable[:,1:] S,stics=SticksAndBall(bvals, bvecs, d=0.0015, S0=100, angles=[(0, 0),(90,0),(90,90)], fractions=[50,50,0], snr=None) pdf0,odf0,peaks0=standard_dsi_algorithm(S,bvals,bvecs) S2=S.copy() S2=S2.reshape(1,len(S)) ds=DiffusionSpectrum(S2,bvals,bvecs) assert_almost_equal(np.sum(ds.pdf(S)-pdf0),0) assert_almost_equal(np.sum(ds.odf(ds.pdf(S))-odf0),0) #compare gfa psi=odf0/odf0.max() numer=len(psi)*np.sum((psi-np.mean(psi))**2) denom=(len(psi)-1)*np.sum(psi**2) GFA=np.sqrt(numer/denom) assert_almost_equal(ds.gfa()[0],GFA) #compare indices #print ds.ind() #print peak_finding(odf0,odf_faces) #print peaks0 data=np.zeros((3,3,3,515)) data[:,:,:]=S ds=DiffusionSpectrum(data,bvals,bvecs) ds2=DiffusionSpectrum(data,bvals,bvecs,auto=False) r = np.sqrt(ds2.qtable[:,0]**2+ds2.qtable[:,1]**2+ds2.qtable[:,2]**2) ds2.filter=.5*np.cos(2*np.pi*r/32) ds2.fit() assert_almost_equal(np.sum(ds2.qa()-ds.qa()),0) #1 fiber S,stics=SticksAndBall(bvals, bvecs, d=0.0015, S0=100, angles=[(0, 0),(90,0),(90,90)], fractions=[100,0,0], snr=None) ds=DiffusionSpectrum(S.reshape(1,len(S)),bvals,bvecs) QA=ds.qa() assert_equal(np.sum(QA>0),1) #2 fibers S,stics=SticksAndBall(bvals, bvecs, d=0.0015, S0=100, angles=[(0, 0),(90,0),(90,90)], fractions=[50,50,0], snr=None) ds=DiffusionSpectrum(S.reshape(1,len(S)),bvals,bvecs) QA=ds.qa() assert_equal(np.sum(QA>0),2) #3 fibers S,stics=SticksAndBall(bvals, bvecs, d=0.0015, S0=100, angles=[(0, 0),(90,0),(90,90)], fractions=[33,33,33], snr=None) ds=DiffusionSpectrum(S.reshape(1,len(S)),bvals,bvecs) QA=ds.qa() assert_equal(np.sum(QA>0),3) #isotropic S,stics=SticksAndBall(bvals, bvecs, d=0.0015, S0=100, angles=[(0, 0),(90,0),(90,90)], fractions=[0,0,0], snr=None) ds=DiffusionSpectrum(S.reshape(1,len(S)),bvals,bvecs) QA=ds.qa() assert_equal(np.sum(QA>0),0)
print data.shape mask=data[:,:,:,0]>50 #D=data[20:90,20:90,18:22] #D=data[40:44,40:44,18:22] #del data D=data from time import time t0=time() ds=DiffusionSpectrum(D,bvals,bvecs,mask=mask) t1=time() print t1-t0,' secs' GFA=ds.gfa() t2=time() ten=Tensor(D,bvals,bvecs,mask=mask) t3=time() print t3-t2,' secs' FA=ten.fa() from dipy.tracking.propagation import EuDX IN=ds.ind() eu=EuDX(ten.fa(),IN[:,:,:,0],seeds=10000,a_low=0.2) tracks=[e for e in eu]
print data.shape mask = data[:, :, :, 0] > 50 #D=data[20:90,20:90,18:22] #D=data[40:44,40:44,18:22] #del data D = data from time import time t0 = time() ds = DiffusionSpectrum(D, bvals, bvecs, mask=mask) t1 = time() print t1 - t0, ' secs' GFA = ds.gfa() t2 = time() ten = Tensor(D, bvals, bvecs, mask=mask) t3 = time() print t3 - t2, ' secs' FA = ten.fa() from dipy.tracking.propagation import EuDX IN = ds.ind() eu = EuDX(ten.fa(), IN[:, :, :, 0], seeds=10000, a_low=0.2) tracks = [e for e in eu]
def test_dsi(): btable = np.loadtxt(get_data('dsi515btable')) bvals = btable[:, 0] bvecs = btable[:, 1:] S, stics = SticksAndBall(bvals, bvecs, d=0.0015, S0=100, angles=[(0, 0), (90, 0), (90, 90)], fractions=[50, 50, 0], snr=None) pdf0, odf0, peaks0 = standard_dsi_algorithm(S, bvals, bvecs) S2 = S.copy() S2 = S2.reshape(1, len(S)) ds = DiffusionSpectrum(S2, bvals, bvecs) assert_almost_equal(np.sum(ds.pdf(S) - pdf0), 0) assert_almost_equal(np.sum(ds.odf(ds.pdf(S)) - odf0), 0) #compare gfa psi = odf0 / odf0.max() numer = len(psi) * np.sum((psi - np.mean(psi))**2) denom = (len(psi) - 1) * np.sum(psi**2) GFA = np.sqrt(numer / denom) assert_almost_equal(ds.gfa()[0], GFA) #compare indices #print ds.ind() #print peak_finding(odf0,odf_faces) #print peaks0 data = np.zeros((3, 3, 3, 515)) data[:, :, :] = S ds = DiffusionSpectrum(data, bvals, bvecs) ds2 = DiffusionSpectrum(data, bvals, bvecs, auto=False) r = np.sqrt(ds2.qtable[:, 0]**2 + ds2.qtable[:, 1]**2 + ds2.qtable[:, 2]**2) ds2.filter = .5 * np.cos(2 * np.pi * r / 32) ds2.fit() assert_almost_equal(np.sum(ds2.qa() - ds.qa()), 0) #1 fiber S, stics = SticksAndBall(bvals, bvecs, d=0.0015, S0=100, angles=[(0, 0), (90, 0), (90, 90)], fractions=[100, 0, 0], snr=None) ds = DiffusionSpectrum(S.reshape(1, len(S)), bvals, bvecs) QA = ds.qa() assert_equal(np.sum(QA > 0), 1) #2 fibers S, stics = SticksAndBall(bvals, bvecs, d=0.0015, S0=100, angles=[(0, 0), (90, 0), (90, 90)], fractions=[50, 50, 0], snr=None) ds = DiffusionSpectrum(S.reshape(1, len(S)), bvals, bvecs) QA = ds.qa() assert_equal(np.sum(QA > 0), 2) #3 fibers S, stics = SticksAndBall(bvals, bvecs, d=0.0015, S0=100, angles=[(0, 0), (90, 0), (90, 90)], fractions=[33, 33, 33], snr=None) ds = DiffusionSpectrum(S.reshape(1, len(S)), bvals, bvecs) QA = ds.qa() assert_equal(np.sum(QA > 0), 3) #isotropic S, stics = SticksAndBall(bvals, bvecs, d=0.0015, S0=100, angles=[(0, 0), (90, 0), (90, 90)], fractions=[0, 0, 0], snr=None) ds = DiffusionSpectrum(S.reshape(1, len(S)), bvals, bvecs) QA = ds.qa() assert_equal(np.sum(QA > 0), 0)
FA[np.isnan(FA)]=0 eu=EuDX(FA,ten.ind(),seeds=10**4,a_low=fa_thr,length_thr=length_thr) T =[e for e in eu] #show(T,FA,ten.ind(),eu.odf_vertices,scale=1) #r=fvtk.ren() #fvtk.add(r,fvtk.point(eu.odf_vertices,cm.orient2rgb(eu.odf_vertices),point_radius=.5,theta=30,phi=30)) #fvtk.show(r) gqs=GeneralizedQSampling(data,bvals,bvecs,Lambda=1.,mask=mask,squared=False) eu2=EuDX(gqs.qa(),gqs.ind(),seeds=10**4,a_low=0,length_thr=length_thr) T2=[e for e in eu2] show(T2,gqs.qa(),gqs.ind(),eu2.odf_vertices,scale=1) ds=DiffusionSpectrum(data,bvals,bvecs,mask=mask) eu3=EuDX(ds.gfa(),ds.ind()[...,0],seeds=10**4,a_low=0,length_thr=length_thr) T3=[e for e in eu3] #show(T3,ds.gfa(),ds.ind()[...,0],eu3.odf_vertices,scale=1) eu4=EuDX(ds.nfa(),ds.ind(),seeds=10**4,a_low=0,length_thr=length_thr) T4=[e for e in eu4] #show(T4,ds.nfa(),ds.ind(),eu4.odf_vertices,scale=1) eu5=EuDX(ds.qa(),ds.ind(),seeds=10**4,a_low=0,length_thr=length_thr) T5=[e for e in eu5] #show(T5,ds.qa(),ds.ind(),eu5.odf_vertices,scale=1) """ #data[mask == False]=0 #ind=np.zeros(data.shape)