77#
88### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ##
99"""Nonlinear transforms."""
10+
1011import warnings
1112from functools import partial
1213from collections import namedtuple
2324)
2425from scipy .ndimage import map_coordinates
2526
27+ # Avoids circular imports
28+ try :
29+ from nitransforms ._version import __version__
30+ except ModuleNotFoundError : # pragma: no cover
31+ __version__ = "0+unknown"
32+
2633
2734class DenseFieldTransform (TransformBase ):
2835 """Represents dense field (voxel-wise) transforms."""
@@ -232,14 +239,11 @@ def __eq__(self, other):
232239
233240 def to_x5 (self , metadata = None ):
234241 """Return an :class:`~nitransforms.io.x5.X5Transform` representation."""
235- from ._version import __version__
236- from .io .x5 import X5Domain , X5Transform
237-
238242 metadata = {"WrittenBy" : f"NiTransforms { __version__ } " } | (metadata or {})
239243
240244 domain = None
241245 if (reference := self .reference ) is not None :
242- domain = X5Domain (
246+ domain = io . x5 . X5Domain (
243247 grid = True ,
244248 size = getattr (reference , "shape" , (0 , 0 , 0 )),
245249 mapping = reference .affine ,
@@ -248,7 +252,7 @@ def to_x5(self, metadata=None):
248252
249253 kinds = tuple ("space" for _ in range (self .ndim )) + ("vector" ,)
250254
251- return X5Transform (
255+ return io . x5 . X5Transform (
252256 type = "nonlinear" ,
253257 subtype = "densefield" ,
254258 representation = "displacements" ,
@@ -272,6 +276,7 @@ def from_filename(cls, filename, fmt="X5"):
272276
273277 if fmt == "X5" :
274278 from .io .x5 import from_filename as load_x5
279+
275280 x5_xfm = load_x5 (filename )[0 ]
276281 Domain = namedtuple ("Domain" , "affine shape" )
277282 reference = Domain (x5_xfm .domain .mapping , x5_xfm .domain .size )
@@ -335,14 +340,11 @@ def to_field(self, reference=None, dtype="float32"):
335340
336341 def to_x5 (self , metadata = None ):
337342 """Return an :class:`~nitransforms.io.x5.X5Transform` representation."""
338- from ._version import __version__
339- from .io .x5 import X5Transform , X5Domain
340-
341343 metadata = {"WrittenBy" : f"NiTransforms { __version__ } " } | (metadata or {})
342344
343345 domain = None
344346 if (reference := self .reference ) is not None :
345- domain = X5Domain (
347+ domain = io . x5 . X5Domain (
346348 grid = True ,
347349 size = getattr (reference , "shape" , (0 , 0 , 0 )),
348350 mapping = reference .affine ,
@@ -356,7 +358,7 @@ def to_x5(self, metadata=None):
356358
357359 kinds = tuple ("space" for _ in range (self .ndim )) + ("vector" ,)
358360
359- return X5Transform (
361+ return io . x5 . X5Transform (
360362 type = "nonlinear" ,
361363 subtype = "bspline" ,
362364 representation = "coefficients" ,
0 commit comments