diff --git a/tests/test_transform/test_fnirt.py b/tests/test_transform/test_fnirt.py index 323d93e43ceedfb35709266059f088b0b20cd017..3288972f37b2a1c718f9de973f66d750ae0405cd 100644 --- a/tests/test_transform/test_fnirt.py +++ b/tests/test_transform/test_fnirt.py @@ -75,9 +75,8 @@ def test_toFnirt(): src = fslimage.Image(op.join(datadir, 'src')) ref = fslimage.Image(op.join(datadir, 'ref')) coef = fnirt.readFnirt(op.join(datadir, 'coefficientfield'), src, ref) - disp = fnirt.readFnirt(op.join(datadir, 'displacementfield'), src, ref) got = fnirt.toFnirt(coef) - check(got, disp) + check(got, coef) def test_fromFnirt(): diff --git a/tests/test_transform/test_nonlinear.py b/tests/test_transform/test_nonlinear.py index 7bc30f8e98faceeaf421b72feab2ad73cc487e47..8b66bdac3fa9bd7782d8c962278108591d8de626 100644 --- a/tests/test_transform/test_nonlinear.py +++ b/tests/test_transform/test_nonlinear.py @@ -310,3 +310,33 @@ def test_coefficientFieldToDisplacementField(): assert np.all(np.isclose(acnv.data, adf .data, **tol)) assert np.all(np.isclose(rcnvnp.data, rdfnp.data, **tol)) assert np.all(np.isclose(acnvnp.data, adfnp.data, **tol)) + + +def test_DisplacementFIeld_srcToRefMat(): + + field1 = _random_field() + xform = affine.compose( + np.random.randint( 1, 10, 3), + np.random.randint(1, 100, 3), + np.random.random(3) * np.pi / 2) + + field2 = nonlinear.DisplacementField( + field1.data, + xform=field1.voxToWorldMat, + src=field1.src, + ref=field1.ref, + srcToRefMat=xform) + + x = np.random.randint(0, field1.shape[0], 100) + y = np.random.randint(0, field1.shape[1], 100) + z = np.random.randint(0, field1.shape[2], 100) + + coords = np.array([x, y, z]).T + coords = affine.transform( + coords, field1.ref.getAffine('voxel', 'fsl')) + + coordsf1 = field1.transform(coords) + coordsf2 = field2.transform(coords) + coordsf1 = affine.transform(coordsf1, affine.invert(xform)) + + assert np.all(np.isclose(coordsf1, coordsf2))