Skip to content

Commit 2faf916

Browse files
committed
enh: cover one missed out line
1 parent dec5b4f commit 2faf916

File tree

3 files changed

+49
-33
lines changed

3 files changed

+49
-33
lines changed

nitransforms/manip.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ##
99
"""Common interface for transforms."""
1010
from collections.abc import Iterable
11-
import numpy as np
1211

1312
from .base import (
1413
TransformBase,

nitransforms/tests/test_base.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import h5py
66

77
from ..base import SpatialReference, SampledSpatialData, ImageGrid, TransformBase
8+
from .. import linear as nitl
89

910

1011
def test_SpatialReference(testdata_path):
@@ -134,3 +135,11 @@ def test_SampledSpatialData(testdata_path):
134135
with pytest.raises(TypeError):
135136
gii = nb.gifti.GiftiImage()
136137
SampledSpatialData(gii)
138+
139+
140+
def test_concatenation(testdata_path):
141+
"""Check concatenation of affines."""
142+
aff = nitl.Affine(reference=testdata_path / 'someones_anatomy.nii.gz')
143+
x = [(0., 0., 0.), (1., 1., 1.), (-1., -1., -1.)]
144+
assert np.all((aff + nitl.Affine())(x) == x)
145+
assert np.all((aff + nitl.Affine())(x, inverse=True) == x)

nitransforms/tests/test_linear.py

Lines changed: 40 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import nibabel as nb
1212
from nibabel.eulerangles import euler2mat
1313
from nibabel.affines import from_matvec
14-
from .. import linear as ntl
14+
from .. import linear as nitl
1515
from .utils import assert_affines_by_filename
1616

1717
TESTS_BORDER_TOLERANCE = 0.05
@@ -42,35 +42,35 @@
4242
def test_linear_typeerrors1(matrix):
4343
"""Exercise errors in Affine creation."""
4444
with pytest.raises(TypeError):
45-
ntl.Affine(matrix)
45+
nitl.Affine(matrix)
4646

4747

4848
def test_linear_typeerrors2(data_path):
4949
"""Exercise errors in Affine creation."""
5050
with pytest.raises(TypeError):
51-
ntl.Affine.from_filename(data_path / 'itktflist.tfm', fmt='itk')
51+
nitl.Affine.from_filename(data_path / 'itktflist.tfm', fmt='itk')
5252

5353

5454
def test_linear_valueerror():
5555
"""Exercise errors in Affine creation."""
5656
with pytest.raises(ValueError):
57-
ntl.Affine(np.ones((4, 4)))
57+
nitl.Affine(np.ones((4, 4)))
5858

5959

6060
def test_loadsave_itk(tmp_path, data_path, testdata_path):
6161
"""Test idempotency."""
6262
ref_file = testdata_path / 'someones_anatomy.nii.gz'
63-
xfm = ntl.load(data_path / 'itktflist2.tfm', fmt='itk')
64-
assert isinstance(xfm, ntl.LinearTransformsMapping)
63+
xfm = nitl.load(data_path / 'itktflist2.tfm', fmt='itk')
64+
assert isinstance(xfm, nitl.LinearTransformsMapping)
6565
xfm.reference = ref_file
6666
xfm.to_filename(tmp_path / 'transform-mapping.tfm', fmt='itk')
6767

6868
assert (data_path / 'itktflist2.tfm').read_text() \
6969
== (tmp_path / 'transform-mapping.tfm').read_text()
7070

71-
single_xfm = ntl.load(data_path / 'affine-LAS.itk.tfm', fmt='itk')
72-
assert isinstance(single_xfm, ntl.Affine)
73-
assert single_xfm == ntl.Affine.from_filename(
71+
single_xfm = nitl.load(data_path / 'affine-LAS.itk.tfm', fmt='itk')
72+
assert isinstance(single_xfm, nitl.Affine)
73+
assert single_xfm == nitl.Affine.from_filename(
7474
data_path / 'affine-LAS.itk.tfm', fmt='itk')
7575

7676

@@ -79,23 +79,23 @@ def test_loadsave_itk(tmp_path, data_path, testdata_path):
7979
def test_loadsave(tmp_path, data_path, testdata_path, fmt):
8080
"""Test idempotency."""
8181
ref_file = testdata_path / 'someones_anatomy.nii.gz'
82-
xfm = ntl.load(data_path / 'itktflist2.tfm', fmt='itk')
82+
xfm = nitl.load(data_path / 'itktflist2.tfm', fmt='itk')
8383
xfm.reference = ref_file
8484

8585
fname = tmp_path / '.'.join(('transform-mapping', fmt))
8686
xfm.to_filename(fname, fmt=fmt)
87-
xfm == ntl.load(fname, fmt=fmt, reference=ref_file)
87+
xfm == nitl.load(fname, fmt=fmt, reference=ref_file)
8888
xfm.to_filename(fname, fmt=fmt, moving=ref_file)
89-
xfm == ntl.load(fname, fmt=fmt, reference=ref_file)
89+
xfm == nitl.load(fname, fmt=fmt, reference=ref_file)
9090

9191
ref_file = testdata_path / 'someones_anatomy.nii.gz'
92-
xfm = ntl.load(data_path / 'affine-LAS.itk.tfm', fmt='itk')
92+
xfm = nitl.load(data_path / 'affine-LAS.itk.tfm', fmt='itk')
9393
xfm.reference = ref_file
9494
fname = tmp_path / '.'.join(('single-transform', fmt))
9595
xfm.to_filename(fname, fmt=fmt)
96-
xfm == ntl.load(fname, fmt=fmt, reference=ref_file)
96+
xfm == nitl.load(fname, fmt=fmt, reference=ref_file)
9797
xfm.to_filename(fname, fmt=fmt, moving=ref_file)
98-
xfm == ntl.load(fname, fmt=fmt, reference=ref_file)
98+
xfm == nitl.load(fname, fmt=fmt, reference=ref_file)
9999

100100

101101
@pytest.mark.xfail(reason="Not fully implemented")
@@ -107,7 +107,7 @@ def test_linear_save(tmpdir, data_path, get_testdata, image_orientation, sw_tool
107107
img = get_testdata[image_orientation]
108108
# Generate test transform
109109
T = from_matvec(euler2mat(x=0.9, y=0.001, z=0.001), [4.0, 2.0, -1.0])
110-
xfm = ntl.Affine(T)
110+
xfm = nitl.Affine(T)
111111
xfm.reference = img
112112

113113
ext = ''
@@ -140,7 +140,7 @@ def test_apply_linear_transform(
140140
img = get_testdata[image_orientation]
141141
# Generate test transform
142142
T = from_matvec(euler2mat(x=0.9, y=0.001, z=0.001), [4.0, 2.0, -1.0])
143-
xfm = ntl.Affine(T)
143+
xfm = nitl.Affine(T)
144144
xfm.reference = img
145145

146146
ext = ''
@@ -176,7 +176,7 @@ def test_apply_linear_transform(
176176
def test_Affine_to_x5(tmpdir, testdata_path):
177177
"""Test affine's operations."""
178178
tmpdir.chdir()
179-
aff = ntl.Affine()
179+
aff = nitl.Affine()
180180
with h5py.File('xfm.x5', 'w') as f:
181181
aff._to_hdf5(f.create_group('Affine'))
182182

@@ -185,34 +185,42 @@ def test_Affine_to_x5(tmpdir, testdata_path):
185185
aff._to_hdf5(f.create_group('Affine'))
186186

187187

188-
def test_concatenation(testdata_path):
189-
"""Check concatenation of affines."""
190-
aff = ntl.Affine(reference=testdata_path / 'someones_anatomy.nii.gz')
191-
x = [(0., 0., 0.), (1., 1., 1.), (-1., -1., -1.)]
192-
assert np.all((aff + ntl.Affine())(x) == x)
193-
assert np.all((aff + ntl.Affine())(x, inverse=True) == x)
194-
195-
196188
def test_LinearTransformsMapping_apply(tmp_path, data_path, testdata_path):
197189
"""Apply transform mappings."""
198-
hmc = ntl.load(data_path / 'hmc-itk.tfm', fmt='itk',
199-
reference=testdata_path / 'sbref.nii.gz')
200-
assert isinstance(hmc, ntl.LinearTransformsMapping)
190+
hmc = nitl.load(data_path / 'hmc-itk.tfm', fmt='itk',
191+
reference=testdata_path / 'sbref.nii.gz')
192+
assert isinstance(hmc, nitl.LinearTransformsMapping)
201193

202-
# Test-case: realing functional data on to sbref
194+
# Test-case: realign functional data on to sbref
203195
nii = hmc.apply(testdata_path / 'func.nii.gz', order=1,
204196
reference=testdata_path / 'sbref.nii.gz')
205197
assert nii.dataobj.shape[-1] == len(hmc)
206198

207199
# Test-case: write out a fieldmap moved with head
208-
hmcinv = ntl.LinearTransformsMapping(
200+
hmcinv = nitl.LinearTransformsMapping(
209201
np.linalg.inv(hmc.matrix),
210202
reference=testdata_path / 'func.nii.gz')
211203
nii = hmcinv.apply(testdata_path / 'fmap.nii.gz', order=1)
212204
assert nii.dataobj.shape[-1] == len(hmc)
213205

214206
# Ensure a ValueError is issued when trying to do weird stuff
215-
hmc = ntl.LinearTransformsMapping(hmc.matrix[:1, ...])
207+
hmc = nitl.LinearTransformsMapping(hmc.matrix[:1, ...])
216208
with pytest.raises(ValueError):
217209
hmc.apply(testdata_path / 'func.nii.gz', order=1,
218210
reference=testdata_path / 'sbref.nii.gz')
211+
212+
213+
def test_mulmat_operator(testdata_path):
214+
"""Check the @ operator."""
215+
ref = testdata_path / 'someones_anatomy.nii.gz'
216+
mat1 = np.diag([2., 2., 2., 1.])
217+
mat2 = from_matvec(np.eye(3), (4, 2, -1))
218+
aff = nitl.Affine(mat1, reference=ref)
219+
220+
composed = aff @ mat2
221+
assert composed.reference is None
222+
assert composed == nitl.Affine(mat1.dot(mat2))
223+
224+
composed = nitl.Affine(mat2) @ aff
225+
assert composed.reference == aff.reference
226+
assert composed == nitl.Affine(mat2.dot(mat1), reference=ref)

0 commit comments

Comments
 (0)