diff --git a/docs/changes/newsfragments/388.bugfix b/docs/changes/newsfragments/388.bugfix new file mode 100644 index 000000000..d50231d77 --- /dev/null +++ b/docs/changes/newsfragments/388.bugfix @@ -0,0 +1 @@ +Fix coordinates space transformation using ANTs by `Synchon Mandal`_ diff --git a/junifer/data/coordinates/_ants_coordinates_warper.py b/junifer/data/coordinates/_ants_coordinates_warper.py index a6f204836..106da582e 100644 --- a/junifer/data/coordinates/_ants_coordinates_warper.py +++ b/junifer/data/coordinates/_ants_coordinates_warper.py @@ -55,19 +55,24 @@ class ANTsCoordinatesWarper: # Save existing coordinates to a tempfile pretransform_coordinates_path = ( - element_tempdir / "pretransform_coordinates.txt" + element_tempdir / "pretransform_coordinates.csv" ) + # Convert LPS to RAS + seeds[:, 0] *= -1 + seeds[:, 1] *= -1 np.savetxt( pretransform_coordinates_path, seeds, delimiter=",", # Add header while saving to make ANTs work header="x,y,z", + # Remove comment tag for header + comments="", ) # Create a tempfile for transformed coordinates output transformed_coords_path = ( - element_tempdir / "coordinates_transformed.txt" + element_tempdir / "coordinates_transformed.csv" ) # Set antsApplyTransformsToPoints command apply_transforms_to_points_cmd = [ @@ -86,9 +91,14 @@ class ANTsCoordinatesWarper: ) # Load coordinates - return np.loadtxt( + transformed_seeds = np.loadtxt( # Skip header when reading transformed_coords_path, delimiter=",", skiprows=1, ) + # Convert RAS to LPS + transformed_seeds[:, 0] *= -1 + transformed_seeds[:, 1] *= -1 + + return transformed_seeds diff --git a/junifer/data/coordinates/_coordinates.py b/junifer/data/coordinates/_coordinates.py index f75662a21..1b5a5e8a1 100644 --- a/junifer/data/coordinates/_coordinates.py +++ b/junifer/data/coordinates/_coordinates.py @@ -362,7 +362,7 @@ class CoordinatesRegistry(BasePipelineDataRegistry, metaclass=Singleton): seeds = ANTsCoordinatesWarper().warp( seeds=seeds, target_data=target_data, - warp_data=warper_spec, + warp_data=inverse_warper_spec, ) return seeds, labels