def test_dni_eit(): btable = np.loadtxt(get_data('dsi515btable')) bvals = btable[:, 0] bvecs = btable[:, 1:] data, descr = sim_data(bvals, bvecs) #load odf sphere vertices, faces = sphere_vf_from('symmetric724') edges = unique_edges(faces) half_vertices, half_edges, half_faces = reduce_antipodal(vertices, faces) #create the sphere odf_sphere = (vertices, faces) dn = DiffusionNablaModel(bvals, bvecs, odf_sphere) dn.relative_peak_threshold = 0.5 dn.angular_distance_threshold = 20 dnfit = dn.fit(data) print('DiffusionNablaModel') for i, d in enumerate(data): print descr[i], np.sum(dnfit.peak_values[i] > 0) ei = EquatorialInversionModel(bvals, bvecs, odf_sphere) ei.relative_peak_threshold = 0.3 ei.angular_distance_threshold = 15 ei.set_operator('laplacian') eifit = ei.fit(data, return_odf=True) print('EquatorialInversionModel') for i, d in enumerate(data): print descr[i], np.sum(eifit.peak_values[i] > 0) assert_equal(descr[i][1], np.sum(eifit.peak_values[i] > 0)) from dipy.viz import show_odfs show_odfs(eifit.odf[None, None, :, :], (vertices, faces), scale=2)
def test_dni_eit(): btable=np.loadtxt(get_data('dsi515btable')) bvals=btable[:,0] bvecs=btable[:,1:] data,descr=sim_data(bvals,bvecs) #load odf sphere vertices,faces = sphere_vf_from('symmetric724') edges = unique_edges(faces) half_vertices,half_edges,half_faces=reduce_antipodal(vertices,faces) #create the sphere odf_sphere=(vertices,faces) dn=DiffusionNablaModel(bvals,bvecs,odf_sphere) dn.relative_peak_threshold = 0.5 dn.angular_distance_threshold = 20 dnfit=dn.fit(data) print('DiffusionNablaModel') for i,d in enumerate(data): print descr[i], np.sum(dnfit.peak_values[i]>0) ei=EquatorialInversionModel(bvals,bvecs,odf_sphere) ei.relative_peak_threshold = 0.3 ei.angular_distance_threshold = 15 ei.set_operator('laplacian') eifit = ei.fit(data,return_odf=True) print('EquatorialInversionModel') for i,d in enumerate(data): print descr[i], np.sum(eifit.peak_values[i]>0) assert_equal(descr[i][1], np.sum(eifit.peak_values[i]>0)) from dipy.viz import show_odfs show_odfs(eifit.odf[None,None,:,:], (vertices,faces), scale=2)
'odf_coeffs_*.npz')))): data = sph_io.load(os.path.basename(fn)) print "Dipy model..." odf = m.evaluate_odf(data['signal']) ODFs.append(odf) separation_from_odf(odf) print "Quadrature model..." odf = kernel_reconstruct(coords['odf_theta'], coords['odf_phi'], data['beta'], theta, phi, kernel=even_kernel, N=data['kernel_N']) odf[odf < 0] = 0 ODFs.append(odf) print "Actual angle:", np.rad2deg(data['separation']) separation_from_odf(odf) ODFs.append(multi_tensor_odf(verts, data['weights'], mevals=[[1700e-6, 300e-6, 300e-6]] * len(data['weights']), mevecs=data['mevecs'])) N = 3 ODFs = np.array([[ODFs]]).reshape(len(ODFs) // N, 1, N, -1) from dipy.viz import show_odfs show_odfs(ODFs, (verts, faces), scale=2, radial_scale=True)
"""Visualize kernel in ODF and signal space. """ from sphdif.kernel import even_kernel, inv_funk_radon_even_kernel from dipy.viz import show_odfs from dipy.core.subdivide_octahedron import create_unit_sphere sphere = create_unit_sphere(6) # sphere.z = np.dot([0, 0, 1], [x, y, z]) = cos(mu) kernel_odf = even_kernel(sphere.z, N=8) kernel_signal = inv_funk_radon_even_kernel(sphere.z, N=8) show_odfs([[[kernel_odf, kernel_signal]]], (sphere.vertices, sphere.faces))
print "Signal mean:", E.mean() if visualize_signal: from dipy.core.triangle_subdivide import create_unit_sphere sphere = create_unit_sphere(6) bb = np.ones(len(sphere.vertices)) * b.mean() E_ = w[0] * single_tensor(gradients=sphere.vertices, bvals=bb, S0=1, rotation=R0, SNR=SNR) E_ += w[1] * single_tensor(gradients=sphere.vertices, bvals=bb, S0=1, rotation=R1, SNR=SNR) ODF = w[0] * single_tensor_ODF(sphere.vertices, rotation=R0) ODF += w[1] * single_tensor_ODF(sphere.vertices, rotation=R1) from dipy.viz import show_odfs show_odfs([[[E_, ODF]]], (sphere.vertices, sphere.faces)) if visualize_odf: plot_ODF(grid_density=D) mlab = plot.get_mlab() mlab.show() # ===========================-===== # ODF-domain: Sparse reconstruction # ================================= # Minimising the L1 penalized system # # ||Xb - y||_2^2 + lambda ||x||_1 subject to x_i >= 0. #
"""Visualize kernel in ODF and signal space. """ from sphdif.kernel import even_kernel, inv_funk_radon_even_kernel from dipy.viz import show_odfs from dipy.core.subdivide_octahedron import create_unit_sphere sphere = create_unit_sphere(6) # sphere.z = np.dot([0, 0, 1], [x, y, z]) = cos(mu) kernel_odf = even_kernel(sphere.z, N=8) kernel_signal = inv_funk_radon_even_kernel(sphere.z, N=8) # show_odfs([[[kernel_odf, kernel_signal]]], (sphere.vertices, sphere.faces)) show_odfs([[[kernel_odf]]], (sphere.vertices, sphere.faces))