Пример #1
0
def test_real_sph_harm_fibernav():
    # This test should do for now
    # The mrtrix basis should be the same as re-ordering and re-scaling the
    # fibernav basis
    new_order = [0, 5, 4, 3, 2, 1, 14, 13, 12, 11, 10, 9, 8, 7, 6]
    sphere = hemi_icosahedron.subdivide(2)
    basis, m, n = real_sph_harm_mrtrix(4, sphere.theta, sphere.phi)
    expected = basis[:, new_order]
    expected *= np.where(m == 0, 1., np.sqrt(2))

    fibernav_basis, m, n = real_sph_harm_fibernav(4, sphere.theta, sphere.phi)
    assert_array_almost_equal(fibernav_basis, expected)
Пример #2
0
def gqi(training, category, snr, denoised, odeconv, tv, method, weight=0.1, sl=3.):

    data, affine, gtab, mask, evals, S0, prefix = prepare(training,
                                                          category,
                                                          snr,
                                                          denoised,
                                                          odeconv,
                                                          tv,
                                                          method)
    


    model = GeneralizedQSamplingModel(gtab,
                                      method='gqi2',
                                      sampling_length=sl,
                                      normalize_peaks=False)

    fit = model.fit(data, mask)

    sphere = get_sphere('symmetric724')   

    odf = fit.odf(sphere)

    if odeconv == True:

        odf_sh = sf_to_sh(odf, sphere, sh_order=8,
                          basis_type='mrtrix')

        # # nib.save(nib.Nifti1Image(odf_sh, affine), model_tag + 'odf_sh.nii.gz')

        reg_sphere = get_sphere('symmetric724')

        fodf_sh = odf_sh_to_sharp(odf_sh,
                                  reg_sphere, basis='mrtrix', ratio=3.8 / 16.6,
                                  sh_order=8, Lambda=1., tau=1.)

        # # nib.save(nib.Nifti1Image(odf_sh, affine), model_tag + 'fodf_sh.nii.gz')

        fodf_sh[np.isnan(fodf_sh)]=0

        r, theta, phi = cart2sphere(sphere.x, sphere.y, sphere.z)
        B_regul, m, n = real_sph_harm_mrtrix(8, theta[:, None], phi[:, None])

        fodf = np.dot(fodf_sh, B_regul.T)

        odf = fodf

    if tv == True:

        odf = tv_denoise_4d(odf, weight=weight)

    save_odfs_peaks(training, odf, affine, sphere, dres, prefix)
Пример #3
0
    from dipy.reconst.csdeconv import odf_sh_to_sharp

    reg_sphere = get_sphere('symmetric724')

    fodf_sh = odf_sh_to_sharp(odf_sh,
                              reg_sphere, basis='mrtrix', ratio=3.8 / 16.6,
                              sh_order=8, Lambda=1., tau=1.)

    # nib.save(nib.Nifti1Image(odf_sh, affine), model_tag + 'fodf_sh.nii.gz')

    from dipy.reconst.shm import real_sph_harm_mrtrix
    from dipy.data import get_sphere
    from dipy.core.geometry import cart2sphere

    r, theta, phi = cart2sphere(sphere.x, sphere.y, sphere.z)
    B_regul, m, n = real_sph_harm_mrtrix(8, theta[:, None], phi[:, None])

    fodf = np.dot(fodf_sh, B_regul.T)

    from dipy.viz import fvtk

    #odf = odf[25 - 10:25 + 10, 25 - 10:25 + 10, 25]
    r = fvtk.ren()
    fvtk.add(r, fvtk.sphere_funcs(odf, sphere))
    fvtk.show(r)
    fvtk.clear(r)

    # odf_var = tv_denoise_4d(odf, weight=0.1)
    # fvtk.add(r, fvtk.sphere_funcs(odf_var, sphere))
    # fvtk.show(r)
    # fvtk.clear(r)
Пример #4
0
def test_real_sph_harm_mrtrix():
    coef, expected, sphere = mrtrix_spherical_functions()
    basis, m, n = real_sph_harm_mrtrix(8, sphere.theta, sphere.phi)
    func = np.dot(coef, basis.T)
    assert_array_almost_equal(func, expected, 4)