Пример #1
0
def test_round_trip():
    sph_io.savez('__test.npz', y=1)
    data = sph_io.load('__test.npz')
    assert_equal(data['y'], 1)
    sph_io.remove('__test.npz')
Пример #2
0
sys.path.insert(0, '..')

import numpy as np
import glob
import os

from sphdif import sph_io
from sphdif import plot
from sphdif.kernel import (kernel_matrix, std_kernel, even_kernel,
                           inv_funk_radon_even_kernel, kernel_reconstruct)
from sphdif.coord import car2sph, sph2car

from dipy.sims.voxel import multi_tensor_odf
from dipy.reconst.shm import SlowAdcOpdfModel, MonoExpOpdfModel, QballOdfModel

coords = sph_io.load('sphere_pts.npz')

#from dipy.data import get_sphere
#verts, faces = get_sphere('symmetric724')

## from dipy.core.triangle_subdivide import create_unit_sphere
## verts, edges, sides = create_unit_sphere(5)
## faces = edges[sides, 0]

from dipy.core.triangle_subdivide import create_unit_sphere
verts, edges, sides = create_unit_sphere(5)
faces = edges[sides, 0]

theta, phi, r = car2sph(*verts.T)

sampling_xyz = np.column_stack(
Пример #3
0
from __future__ import division
import sys
sys.path.insert(0, '..')

import numpy as np
eps = np.finfo(float).eps

from sphdif import sph_io, sphere, plot

data = sph_io.load('odf_coeffs.npz')

# unpack beta, theta, phi, separation
this_module = sys.modules[__name__]
for k, v in data.items():
    setattr(this_module, k, v)

# Initialize centroids
# TODO: Random intialization
N = 4
c_theta = np.pi * np.array([-1/3, 1/3, 2/3, -2/3])
#c_phi = 2 * np.pi * np.array([0, 1/4, 2/4, 3/4])
c_phi = np.ones(N)

def weighted_kmeans(c_theta, c_phi, p_theta, p_phi, v):
    D = 1 / (eps + sphere.arc_length(c_theta, c_phi,
                                     p_theta[:, None], p_phi[:, None]))**2
#    D = np.exp(-sphere.arc_length(c_theta, c_phi, p_theta[:, None], p_phi[:, None])**2)
    D *= v[:, None]
    D /= D.sum(axis=0)

    P = np.column_stack((p_theta, p_phi))