|
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