diff --git a/tests/test_fsl_convert_x5.py b/tests/test_fsl_convert_x5.py new file mode 100644 index 0000000000000000000000000000000000000000..aa3854f2c6a197cf4b8bce153d0c91d478d8cbb8 --- /dev/null +++ b/tests/test_fsl_convert_x5.py @@ -0,0 +1,55 @@ +#!/usr/bin/env python + + +import numpy as np + +import fsl.utils.tempdir as tempdir +import fsl.utils.transform as transform +import fsl.data.image as fslimage + +import fsl.scripts.fsl_convert_x5 as fsl_convert_x5 + + +def random_image(): + vx, vy, vz = np.random.randint(10, 50, 3) + dx, dy, dz = np.random.randint( 1, 10, 3) + data = (np.random.random((vx, vy, vz)) - 0.5) * 10 + aff = transform.compose( + (dx, dy, dz), + np.random.randint(1, 100, 3), + np.random.random(3) * np.pi / 2) + + return fslimage.Image(data, xform=aff) + + + +def test_convert_flirt(): + with tempdir.tempdir(): + src = random_image() + ref = random_image() + src.save('src') + ref.save('ref') + + xform = transform.compose( + np.random.randint(1, 10, 3), + np.random.randint(-100, 100, 3), + (np.random.random(3) - 0.5) * np.pi) + + np.savetxt('src2ref.mat', xform) + + fsl_convert_x5.main('flirt -s src -r ref ' + 'src2ref.mat src2ref.x5'.split()) + expxform = transform.concat( + ref.getAffine('fsl', 'world'), + xform, + src.getAffine('world', 'fsl')) + gotxform, gotsrc, gotref = transform.readFlirtX5('src2ref.x5') + assert np.all(np.isclose(gotxform, expxform)) + assert src.sameSpace(gotsrc) + assert ref.sameSpace(gotref) + + fsl_convert_x5.main('flirt -s src -r ref src2ref.x5 ' + 'src2ref_copy.mat'.split()) + + gotxform = transform.readFlirt('src2ref_copy.mat') + assert np.all(np.isclose(gotxform, xform)) diff --git a/tests/test_transform_nonlinear.py b/tests/test_transform_nonlinear.py index c90f343133d1e1040decefdbdb6efa6eb19492c3..7c24d90dadfa1eed102ff5380ca39c774d997fd0 100644 --- a/tests/test_transform_nonlinear.py +++ b/tests/test_transform_nonlinear.py @@ -6,7 +6,7 @@ import nibabel as nib import fsl.data.image as fslimage import fsl.utils.transform as transform -import fsl.utils.transform.dispfield as dispfield +import fsl.utils.transform.nonlinear as nonlinear def _random_field(): @@ -19,7 +19,7 @@ def _random_field(): np.random.randint(1, 100, 3), np.random.random(3) * np.pi / 2) - return dispfield.DisplacementField(field, xform=aff) + return nonlinear.DisplacementField(field, xform=aff) def _field_coords(field): @@ -33,29 +33,29 @@ def _field_coords(field): field.getAffine('voxel', 'fsl')).reshape(field.shape) -def test_detectType(): +def test_detectDisplacementType(): relfield = _random_field() coords = _field_coords(relfield) - absfield = dispfield.DisplacementField( + absfield = nonlinear.DisplacementField( relfield.data + coords, xform=relfield.voxToWorldMat) - assert dispfield.detectType(relfield) == 'relative' - assert dispfield.detectType(absfield) == 'absolute' + assert nonlinear.detectDisplacementType(relfield) == 'relative' + assert nonlinear.detectDisplacementType(absfield) == 'absolute' -def test_convertType(): - relfield = dispfield.DisplacementField(_random_field()) +def test_convertDisplacemenyType(): + relfield = nonlinear.DisplacementField(_random_field()) coords = _field_coords(relfield) absfield = fslimage.Image( relfield.data + coords, xform=relfield.voxToWorldMat) - relfield = dispfield.DisplacementField(relfield) - absfield = dispfield.DisplacementField(absfield) + relfield = nonlinear.DisplacementField(relfield) + absfield = nonlinear.DisplacementField(absfield) - gotconvrel1 = dispfield.convertType(relfield) - gotconvabs1 = dispfield.convertType(absfield) - gotconvrel2 = dispfield.convertType(relfield, 'absolute') - gotconvabs2 = dispfield.convertType(absfield, 'relative') + gotconvrel1 = nonlinear.convertDisplacementType(relfield) + gotconvabs1 = nonlinear.convertDisplacementType(absfield) + gotconvrel2 = nonlinear.convertDisplacementType(relfield, 'absolute') + gotconvabs2 = nonlinear.convertDisplacementType(absfield, 'relative') assert np.all(np.isclose(gotconvrel1, absfield.data)) assert np.all(np.isclose(gotconvabs1, relfield.data))