Skip to content

Commit aecf69f

Browse files
committed
enh: move lazy imports to top of nonlinear file
1 parent de4106f commit aecf69f

File tree

1 file changed

+12
-10
lines changed

1 file changed

+12
-10
lines changed

nitransforms/nonlinear.py

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#
88
### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ##
99
"""Nonlinear transforms."""
10+
1011
import warnings
1112
from functools import partial
1213
from collections import namedtuple
@@ -23,6 +24,12 @@
2324
)
2425
from 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

2734
class 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

Comments
 (0)