|
27 | 27 | EQUALITY_TOL,
|
28 | 28 | )
|
29 | 29 | from nitransforms.io import get_linear_factory, TransformFileError
|
30 |
| -from nitransforms.io.x5 import X5Transform, X5Domain |
| 30 | +from nitransforms.io.x5 import X5Transform, X5Domain, to_filename as save_x5 |
31 | 31 |
|
32 | 32 |
|
33 | 33 | class Affine(TransformBase):
|
@@ -260,9 +260,12 @@ def map(self, x, inverse=False):
|
260 | 260 | affine = self._inverse
|
261 | 261 | return affine.dot(coords).T[..., :-1]
|
262 | 262 |
|
263 |
| - def to_filename(self, filename, fmt="X5", moving=None): |
| 263 | + def to_filename(self, filename, fmt="X5", moving=None, x5_inverse=False): |
264 | 264 | """Store the transform in the requested output format."""
|
265 |
| - writer = get_linear_factory(fmt, is_array=False) |
| 265 | + if fmt.upper() == "X5": |
| 266 | + return save_x5(filename, [self.to_x5(store_inverse=x5_inverse)]) |
| 267 | + |
| 268 | + writer = get_linear_factory(fmt, is_array=isinstance(self, LinearTransformsMapping)) |
266 | 269 |
|
267 | 270 | if fmt.lower() in ("itk", "ants", "elastix"):
|
268 | 271 | writer.from_ras(self.matrix).to_filename(filename)
|
@@ -407,21 +410,6 @@ def map(self, x, inverse=False):
|
407 | 410 | affine = self._inverse
|
408 | 411 | return np.swapaxes(affine.dot(coords), 1, 2)
|
409 | 412 |
|
410 |
| - def to_filename(self, filename, fmt="X5", moving=None): |
411 |
| - """Store the transform in the requested output format.""" |
412 |
| - writer = get_linear_factory(fmt, is_array=True) |
413 |
| - |
414 |
| - if fmt.lower() in ("itk", "ants", "elastix"): |
415 |
| - writer.from_ras(self.matrix).to_filename(filename) |
416 |
| - else: |
417 |
| - # Rest of the formats peek into moving and reference image grids |
418 |
| - writer.from_ras( |
419 |
| - self.matrix, |
420 |
| - reference=self.reference, |
421 |
| - moving=ImageGrid(moving) if moving is not None else self.reference, |
422 |
| - ).to_filename(filename) |
423 |
| - return filename |
424 |
| - |
425 | 413 |
|
426 | 414 | def load(filename, fmt=None, reference=None, moving=None):
|
427 | 415 | """
|
|
0 commit comments