7
7
#
8
8
### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ##
9
9
"""Nonlinear transforms."""
10
+
10
11
import warnings
11
12
from functools import partial
12
13
from collections import namedtuple
23
24
)
24
25
from scipy .ndimage import map_coordinates
25
26
27
+ # Avoids circular imports
28
+ try :
29
+ from nitransforms ._version import __version__
30
+ except ModuleNotFoundError : # pragma: no cover
31
+ __version__ = "0+unknown"
32
+
26
33
27
34
class DenseFieldTransform (TransformBase ):
28
35
"""Represents dense field (voxel-wise) transforms."""
@@ -232,14 +239,11 @@ def __eq__(self, other):
232
239
233
240
def to_x5 (self , metadata = None ):
234
241
"""Return an :class:`~nitransforms.io.x5.X5Transform` representation."""
235
- from ._version import __version__
236
- from .io .x5 import X5Domain , X5Transform
237
-
238
242
metadata = {"WrittenBy" : f"NiTransforms { __version__ } " } | (metadata or {})
239
243
240
244
domain = None
241
245
if (reference := self .reference ) is not None :
242
- domain = X5Domain (
246
+ domain = io . x5 . X5Domain (
243
247
grid = True ,
244
248
size = getattr (reference , "shape" , (0 , 0 , 0 )),
245
249
mapping = reference .affine ,
@@ -248,7 +252,7 @@ def to_x5(self, metadata=None):
248
252
249
253
kinds = tuple ("space" for _ in range (self .ndim )) + ("vector" ,)
250
254
251
- return X5Transform (
255
+ return io . x5 . X5Transform (
252
256
type = "nonlinear" ,
253
257
subtype = "densefield" ,
254
258
representation = "displacements" ,
@@ -272,6 +276,7 @@ def from_filename(cls, filename, fmt="X5"):
272
276
273
277
if fmt == "X5" :
274
278
from .io .x5 import from_filename as load_x5
279
+
275
280
x5_xfm = load_x5 (filename )[0 ]
276
281
Domain = namedtuple ("Domain" , "affine shape" )
277
282
reference = Domain (x5_xfm .domain .mapping , x5_xfm .domain .size )
@@ -335,14 +340,11 @@ def to_field(self, reference=None, dtype="float32"):
335
340
336
341
def to_x5 (self , metadata = None ):
337
342
"""Return an :class:`~nitransforms.io.x5.X5Transform` representation."""
338
- from ._version import __version__
339
- from .io .x5 import X5Transform , X5Domain
340
-
341
343
metadata = {"WrittenBy" : f"NiTransforms { __version__ } " } | (metadata or {})
342
344
343
345
domain = None
344
346
if (reference := self .reference ) is not None :
345
- domain = X5Domain (
347
+ domain = io . x5 . X5Domain (
346
348
grid = True ,
347
349
size = getattr (reference , "shape" , (0 , 0 , 0 )),
348
350
mapping = reference .affine ,
@@ -356,7 +358,7 @@ def to_x5(self, metadata=None):
356
358
357
359
kinds = tuple ("space" for _ in range (self .ndim )) + ("vector" ,)
358
360
359
- return X5Transform (
361
+ return io . x5 . X5Transform (
360
362
type = "nonlinear" ,
361
363
subtype = "bspline" ,
362
364
representation = "coefficients" ,
0 commit comments