Skip to content

Commit 2c62fd9

Browse files
committed
rf: move tests to more appropriate file
1 parent 8e83ccd commit 2c62fd9

File tree

2 files changed

+49
-48
lines changed

2 files changed

+49
-48
lines changed

nitransforms/tests/test_io.py

Lines changed: 0 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
fsl,
2424
lta as fs,
2525
itk,
26-
x5,
2726
)
2827
from nitransforms.io.lta import (
2928
VolumeGeometry as VG,
@@ -767,52 +766,6 @@ def test_itk_displacements(tmp_path, get_testdata, image_orientation, field_is_r
767766
np.testing.assert_allclose(LPS @ itk_nit_nii.affine, nit_nii.affine)
768767

769768

770-
@pytest.mark.parametrize("is_deltas", [True, False])
771-
def test_densefield_x5_roundtrip(tmp_path, is_deltas):
772-
"""Ensure dense field transforms roundtrip via X5."""
773-
ref = nb.Nifti1Image(np.zeros((2, 2, 2), dtype="uint8"), np.eye(4))
774-
disp = nb.Nifti1Image(np.random.rand(2, 2, 2, 3).astype("float32"), np.eye(4))
775-
776-
xfm = DenseFieldTransform(disp, is_deltas=is_deltas, reference=ref)
777-
778-
node = xfm.to_x5(metadata={"GeneratedBy": "pytest"})
779-
assert node.type == "nonlinear"
780-
assert node.subtype == "densefield"
781-
assert node.representation == "displacements" if is_deltas else "deformations"
782-
assert node.domain.size == ref.shape
783-
assert node.metadata["GeneratedBy"] == "pytest"
784-
785-
fname = tmp_path / "test.x5"
786-
x5.to_filename(fname, [node])
787-
788-
xfm2 = DenseFieldTransform.from_filename(fname, fmt="X5")
789-
790-
assert xfm2.reference.shape == ref.shape
791-
assert np.allclose(xfm2.reference.affine, ref.affine)
792-
assert xfm == xfm2
793-
794-
795-
def test_bspline_to_x5(tmp_path):
796-
"""Check BSpline transforms export to X5."""
797-
coeff = nb.Nifti1Image(np.zeros((2, 2, 2, 3), dtype="float32"), np.eye(4))
798-
ref = nb.Nifti1Image(np.zeros((2, 2, 2), dtype="uint8"), np.eye(4))
799-
800-
xfm = BSplineFieldTransform(coeff, reference=ref)
801-
node = xfm.to_x5(metadata={"tool": "pytest"})
802-
assert node.type == "nonlinear"
803-
assert node.subtype == "bspline"
804-
assert node.representation == "coefficients"
805-
assert node.metadata["tool"] == "pytest"
806-
807-
fname = tmp_path / "bspline.x5"
808-
x5.to_filename(fname, [node])
809-
810-
xfm2 = BSplineFieldTransform.from_filename(fname, fmt="X5")
811-
assert np.allclose(xfm._coeffs, xfm2._coeffs)
812-
assert xfm2.reference.shape == ref.shape
813-
assert np.allclose(xfm2.reference.affine, ref.affine)
814-
815-
816769
# Added tests for h5 orientation bug
817770
@pytest.mark.xfail(
818771
reason="GH-137/GH-171: displacement field dimension order is wrong",

nitransforms/tests/test_x5.py

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1+
import nibabel as nb
12
import numpy as np
23
import pytest
34
from h5py import File as H5File
45

5-
from ..io.x5 import X5Transform, X5Domain, to_filename, from_filename
6+
from nitransforms.nonlinear import DenseFieldTransform, BSplineFieldTransform
7+
from nitransforms.io.x5 import X5Transform, X5Domain, to_filename, from_filename
68

79

810
def test_x5_transform_defaults():
@@ -75,3 +77,49 @@ def test_from_filename_invalid(tmp_path):
7577

7678
with pytest.raises(TypeError):
7779
from_filename(fname)
80+
81+
82+
@pytest.mark.parametrize("is_deltas", [True, False])
83+
def test_densefield_x5_roundtrip(tmp_path, is_deltas):
84+
"""Ensure dense field transforms roundtrip via X5."""
85+
ref = nb.Nifti1Image(np.zeros((2, 2, 2), dtype="uint8"), np.eye(4))
86+
disp = nb.Nifti1Image(np.random.rand(2, 2, 2, 3).astype("float32"), np.eye(4))
87+
88+
xfm = DenseFieldTransform(disp, is_deltas=is_deltas, reference=ref)
89+
90+
node = xfm.to_x5(metadata={"GeneratedBy": "pytest"})
91+
assert node.type == "nonlinear"
92+
assert node.subtype == "densefield"
93+
assert node.representation == "displacements" if is_deltas else "deformations"
94+
assert node.domain.size == ref.shape
95+
assert node.metadata["GeneratedBy"] == "pytest"
96+
97+
fname = tmp_path / "test.x5"
98+
to_filename(fname, [node])
99+
100+
xfm2 = DenseFieldTransform.from_filename(fname, fmt="X5")
101+
102+
assert xfm2.reference.shape == ref.shape
103+
assert np.allclose(xfm2.reference.affine, ref.affine)
104+
assert xfm == xfm2
105+
106+
107+
def test_bspline_to_x5(tmp_path):
108+
"""Check BSpline transforms export to X5."""
109+
coeff = nb.Nifti1Image(np.zeros((2, 2, 2, 3), dtype="float32"), np.eye(4))
110+
ref = nb.Nifti1Image(np.zeros((2, 2, 2), dtype="uint8"), np.eye(4))
111+
112+
xfm = BSplineFieldTransform(coeff, reference=ref)
113+
node = xfm.to_x5(metadata={"tool": "pytest"})
114+
assert node.type == "nonlinear"
115+
assert node.subtype == "bspline"
116+
assert node.representation == "coefficients"
117+
assert node.metadata["tool"] == "pytest"
118+
119+
fname = tmp_path / "bspline.x5"
120+
to_filename(fname, [node])
121+
122+
xfm2 = BSplineFieldTransform.from_filename(fname, fmt="X5")
123+
assert np.allclose(xfm._coeffs, xfm2._coeffs)
124+
assert xfm2.reference.shape == ref.shape
125+
assert np.allclose(xfm2.reference.affine, ref.affine)

0 commit comments

Comments
 (0)