Skip to content

Commit aa973a3

Browse files
committed
enh: move lazy imports to top of nonlinear file
1 parent 7347e87 commit aa973a3

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."""
@@ -230,14 +237,11 @@ def __eq__(self, other):
230237

231238
def to_x5(self, metadata=None):
232239
"""Return an :class:`~nitransforms.io.x5.X5Transform` representation."""
233-
from ._version import __version__
234-
from .io.x5 import X5Domain, X5Transform
235-
236240
metadata = {"WrittenBy": f"NiTransforms {__version__}"} | (metadata or {})
237241

238242
domain = None
239243
if (reference := self.reference) is not None:
240-
domain = X5Domain(
244+
domain = io.x5.X5Domain(
241245
grid=True,
242246
size=getattr(reference, "shape", (0, 0, 0)),
243247
mapping=reference.affine,
@@ -246,7 +250,7 @@ def to_x5(self, metadata=None):
246250

247251
kinds = tuple("space" for _ in range(self.ndim)) + ("vector",)
248252

249-
return X5Transform(
253+
return io.x5.X5Transform(
250254
type="nonlinear",
251255
subtype="densefield",
252256
representation="displacements",
@@ -270,6 +274,7 @@ def from_filename(cls, filename, fmt="X5"):
270274

271275
if fmt == "X5":
272276
from .io.x5 import from_filename as load_x5
277+
273278
x5_xfm = load_x5(filename)[0]
274279
Domain = namedtuple("Domain", "affine shape")
275280
reference = Domain(x5_xfm.domain.mapping, x5_xfm.domain.size)
@@ -333,14 +338,11 @@ def to_field(self, reference=None, dtype="float32"):
333338

334339
def to_x5(self, metadata=None):
335340
"""Return an :class:`~nitransforms.io.x5.X5Transform` representation."""
336-
from ._version import __version__
337-
from .io.x5 import X5Transform, X5Domain
338-
339341
metadata = {"WrittenBy": f"NiTransforms {__version__}"} | (metadata or {})
340342

341343
domain = None
342344
if (reference := self.reference) is not None:
343-
domain = X5Domain(
345+
domain = io.x5.X5Domain(
344346
grid=True,
345347
size=getattr(reference, "shape", (0, 0, 0)),
346348
mapping=reference.affine,
@@ -354,7 +356,7 @@ def to_x5(self, metadata=None):
354356

355357
kinds = tuple("space" for _ in range(self.ndim)) + ("vector",)
356358

357-
return X5Transform(
359+
return io.x5.X5Transform(
358360
type="nonlinear",
359361
subtype="bspline",
360362
representation="coefficients",

0 commit comments

Comments
 (0)