Skip to content

Commit

Permalink
bugfix and added test for acquisition scheme
Browse files Browse the repository at this point in the history
  • Loading branch information
rutgerfick committed Oct 17, 2018
1 parent e3c83e3 commit b043032
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 10 deletions.
18 changes: 11 additions & 7 deletions dmipy/core/acquisition_scheme.py
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ def __init__(self, bvalues, gradient_directions, qvalues,
if self.qvalues is not None:
self.shell_qvalues = self.qvalues[first_indices]
self.shell_gradient_strengths = None
if self.shell_gradient_strengths is not None:
if self.gradient_strengths is not None:
self.shell_gradient_strengths = (
self.gradient_strengths[first_indices])
self.shell_delta = None
Expand Down Expand Up @@ -895,18 +895,22 @@ def gtab_dmipy2dipy(dmipy_gradient_table):
delta = dmipy_gradient_table.delta
Delta = dmipy_gradient_table.Delta

if len(np.unique(delta)) == 1:
delta = delta[0]
elif len(np.unique(delta)) > 1:
if len(np.unique(delta)) > 1:
msg = "Cannot create Dipy GradientTable for Acquisition schemes with "
msg += "multiple delta (pulse duration) values, due to current "
msg += "limitations of Dipy GradientTables."
if len(np.unique(Delta)) == 1:
Delta = Delta[0]
elif len(np.unique(Delta)) > 1:
raise ValueError(msg)
elif len(np.unique(delta)) == 1:
delta = delta[0]

if len(np.unique(Delta)) > 1:
msg = "Cannot create Dipy GradientTable for Acquisition schemes with "
msg += "multiple Delta (pulse sepration) values, due to current "
msg += "limitations of Dipy GradientTables."
raise ValueError(msg)
elif len(np.unique(Delta)) == 1:
Delta = Delta[0]

dipy_gradient_table = gradient_table(
bvals=bvals, bvecs=bvecs, small_delta=delta, big_delta=Delta)
return dipy_gradient_table
13 changes: 10 additions & 3 deletions dmipy/core/tests/test_acquisition_scheme.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import numpy as np
from dmipy.data.saved_acquisition_schemes import (
duval_cat_spinal_cord_2d_acquisition_scheme)
from dmipy.core.acquisition_scheme import (
acquisition_scheme_from_bvalues,
acquisition_scheme_from_qvalues,
Expand Down Expand Up @@ -143,7 +145,7 @@ def test_estimate_shell_indices():
assert_array_equal(shell_indices, bvalues)


def test_shell_indices_with_vayring_diffusion_times(Nsamples=10):
def test_shell_indices_with_varying_diffusion_times(Nsamples=10):
# tests whether measurements with the same bvalue but different diffusion
# time are correctly classified in different shells
bvalues = np.tile(1e9, Nsamples)
Expand All @@ -156,7 +158,7 @@ def test_shell_indices_with_vayring_diffusion_times(Nsamples=10):
assert_equal(len(np.unique(scheme.shell_indices)), 2)


def test_dipy2mipy_acquisition_converter(Nsamples=10):
def test_dipy2dmipy_acquisition_converter(Nsamples=10):
bvals = np.tile(1e3, Nsamples)
bvecs = np.tile(np.r_[1., 0., 0.], (Nsamples, 1))
big_delta = 0.03
Expand All @@ -170,7 +172,7 @@ def test_dipy2mipy_acquisition_converter(Nsamples=10):
assert_equal(np.unique(gtab_mipy.delta), gtab_dipy.small_delta)


def test_mipy2dipy_acquisition_converter(Nsamples=10):
def test_dmipy2dipy_acquisition_converter(Nsamples=10):
bvals = np.tile(1e9, Nsamples)
bvecs = np.tile(np.r_[1., 0., 0.], (Nsamples, 1))
big_delta = 0.03
Expand All @@ -194,3 +196,8 @@ def test_acquisition_scheme_summary(Nsamples=10):
bvalues=bvals, gradient_directions=bvecs,
delta=small_delta, Delta=big_delta)
gtab_mipy.print_acquisition_info


def test_raise_dmipy2dmipy_multiple_delta_Delta():
scheme = duval_cat_spinal_cord_2d_acquisition_scheme()
assert_raises(ValueError, gtab_dmipy2dipy, scheme)

0 comments on commit b043032

Please sign in to comment.