sphere = unit_icosahedron.subdivide(5) angles_mean = [] angles_std = [] mask = np.zeros_like(bvals, dtype=bool) mask[:discarded] = True #------------------------------------------------------------------------------ recovered_angle = [] SNR = None sk = SparseKernelModel(gtab, sh_order=8, l1_ratio=0.5, alpha=0.0001) sk.direction_finder.config(sphere=sphere, min_separation_angle=10) recovered_angle = np.zeros((len(angles), realizations)) for n, angle in enumerate(angles): print "Angle %.2f, %d realizations, discarding %d measurements" % \ (angle, realizations, discarded) # MC simulation loop for kk in range(0, realizations): E = two_fiber_signal(bvals, bvecs, angle, SNR=SNR) ## Create and add in Rician noise noiseR = np.random.random(E.shape)
Reconstruct with Sparse Model (adapted from DiPy example) ========================================================= """ import numpy as np from dipy.data import fetch_stanford_hardi, read_stanford_hardi, get_sphere from dipy.reconst.shm import CsaOdfModel from dipy.reconst.csdeconv import ConstrainedSphericalDeconvModel from kernel_model import SparseKernelModel # Download Stanford data fetch_stanford_hardi() img, gtab = read_stanford_hardi() # Construct model model = SparseKernelModel(gtab, sh_order=6, loglog_tf=False, l1_ratio=0.99, alpha=0.0005) #model = CsaOdfModel(gtab, 4) #model = ConstrainedSphericalDeconvModel(gtab, None) """ img contains a nibabel Nifti1Image object (data) and gtab contains a GradientTable object (gradient information e.g. b-values). For example to read the b-values it is possible to write print(gtab.bvals). Load the raw diffusion data and the affine. """ data = img.get_data() print('data.shape (%d, %d, %d, %d)' % data.shape) """