From b624e4b47c8239f4f1baef3f054953c97e9ed4f5 Mon Sep 17 00:00:00 2001 From: Synchon Mandal Date: Wed, 13 Nov 2024 13:05:57 +0100 Subject: [PATCH 1/5] fix: proper coordinate system transformation for ANTsCoordinatesWarper --- junifer/data/coordinates/_ants_coordinates_warper.py | 9 +++++++-- junifer/data/coordinates/_coordinates.py | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/junifer/data/coordinates/_ants_coordinates_warper.py b/junifer/data/coordinates/_ants_coordinates_warper.py index a6f204836..4aef8209e 100644 --- a/junifer/data/coordinates/_ants_coordinates_warper.py +++ b/junifer/data/coordinates/_ants_coordinates_warper.py @@ -59,7 +59,8 @@ class ANTsCoordinatesWarper: ) np.savetxt( pretransform_coordinates_path, - seeds, + # convert to LPS coordinate system + np.apply_along_axis(lambda x: x * [-1, -1, 1], 1, seeds), delimiter=",", # Add header while saving to make ANTs work header="x,y,z", @@ -86,9 +87,13 @@ class ANTsCoordinatesWarper: ) # Load coordinates - return np.loadtxt( + transformed_seeds = np.loadtxt( # Skip header when reading transformed_coords_path, delimiter=",", skiprows=1, ) + # convert to RAS coordinate system + return np.apply_along_axis( + lambda x: x * [-1, -1, 1], 1, 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 -- 2.52.0 From 2e1eb03237669d04bbc9bacc68a8c41334642000 Mon Sep 17 00:00:00 2001 From: Synchon Mandal Date: Wed, 13 Nov 2024 13:12:58 +0100 Subject: [PATCH 2/5] chore: add changelog 388.bugfix --- docs/changes/newsfragments/388.bugfix | 1 + 1 file changed, 1 insertion(+) create mode 100644 docs/changes/newsfragments/388.bugfix 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`_ -- 2.52.0 From 42dfe50e7e46bd6fce442db4e8e39de3429d68d1 Mon Sep 17 00:00:00 2001 From: Synchon Mandal Date: Tue, 19 Nov 2024 12:53:16 +0100 Subject: [PATCH 3/5] update: rename .txt to .csv for ANTsCoordinatesWarper --- junifer/data/coordinates/_ants_coordinates_warper.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/junifer/data/coordinates/_ants_coordinates_warper.py b/junifer/data/coordinates/_ants_coordinates_warper.py index 4aef8209e..1020a5533 100644 --- a/junifer/data/coordinates/_ants_coordinates_warper.py +++ b/junifer/data/coordinates/_ants_coordinates_warper.py @@ -55,7 +55,7 @@ class ANTsCoordinatesWarper: # Save existing coordinates to a tempfile pretransform_coordinates_path = ( - element_tempdir / "pretransform_coordinates.txt" + element_tempdir / "pretransform_coordinates.csv" ) np.savetxt( pretransform_coordinates_path, @@ -68,7 +68,7 @@ class ANTsCoordinatesWarper: # 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 = [ -- 2.52.0 From 1b1a1381a0d919038a12ec86e6ed9a193e37cfb2 Mon Sep 17 00:00:00 2001 From: Synchon Mandal Date: Tue, 19 Nov 2024 12:53:46 +0100 Subject: [PATCH 4/5] update: remove comments for np.savetxt in ANTsCoordinatesWarper --- junifer/data/coordinates/_ants_coordinates_warper.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/junifer/data/coordinates/_ants_coordinates_warper.py b/junifer/data/coordinates/_ants_coordinates_warper.py index 1020a5533..44f0064ea 100644 --- a/junifer/data/coordinates/_ants_coordinates_warper.py +++ b/junifer/data/coordinates/_ants_coordinates_warper.py @@ -64,6 +64,8 @@ class ANTsCoordinatesWarper: 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 -- 2.52.0 From 0163c027ec68304e4bb872e669cd14294735905e Mon Sep 17 00:00:00 2001 From: Synchon Mandal Date: Tue, 19 Nov 2024 12:54:13 +0100 Subject: [PATCH 5/5] chore: update seeds save and load in ANTsCoordinatesWarper --- .../data/coordinates/_ants_coordinates_warper.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/junifer/data/coordinates/_ants_coordinates_warper.py b/junifer/data/coordinates/_ants_coordinates_warper.py index 44f0064ea..106da582e 100644 --- a/junifer/data/coordinates/_ants_coordinates_warper.py +++ b/junifer/data/coordinates/_ants_coordinates_warper.py @@ -57,10 +57,12 @@ class ANTsCoordinatesWarper: pretransform_coordinates_path = ( element_tempdir / "pretransform_coordinates.csv" ) + # Convert LPS to RAS + seeds[:, 0] *= -1 + seeds[:, 1] *= -1 np.savetxt( pretransform_coordinates_path, - # convert to LPS coordinate system - np.apply_along_axis(lambda x: x * [-1, -1, 1], 1, seeds), + seeds, delimiter=",", # Add header while saving to make ANTs work header="x,y,z", @@ -95,7 +97,8 @@ class ANTsCoordinatesWarper: delimiter=",", skiprows=1, ) - # convert to RAS coordinate system - return np.apply_along_axis( - lambda x: x * [-1, -1, 1], 1, transformed_seeds - ) + # Convert RAS to LPS + transformed_seeds[:, 0] *= -1 + transformed_seeds[:, 1] *= -1 + + return transformed_seeds -- 2.52.0