From fbc5334de7e91c1a403344a115995a2a9f209aa0 Mon Sep 17 00:00:00 2001 From: Joey Scanga Date: Wed, 2 Jul 2025 13:18:59 -0500 Subject: [PATCH 1/2] fix: Orient fieldmap before checking spline fit --- nibabies/interfaces/resampling.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/nibabies/interfaces/resampling.py b/nibabies/interfaces/resampling.py index 46781c55..7cfbb7a3 100644 --- a/nibabies/interfaces/resampling.py +++ b/nibabies/interfaces/resampling.py @@ -679,6 +679,18 @@ def reconstruct_fieldmap( target.__class__(target.dataobj, projected_affine, target.header), ) else: + # Below if statement was taken from fmriprep pull request #3439, + # along with the same explanation: + # + # Hack. Sometimes the reference array is rotated relative to the fieldmap + # and coefficient grids. As far as I know, coefficients are always RAS, + # but good to check before doing this. + if ( + nb.aff2axcodes(coefficients[-1].affine) + == ('R', 'A', 'S') + != nb.aff2axcodes(fmap_reference.affine) + ): + fmap_reference = nb.as_closest_canonical(fmap_reference) if not aligned(fmap_reference.affine, coefficients[-1].affine): raise ValueError('Reference passed is not aligned with spline grids') reference, _ = ensure_positive_cosines(fmap_reference) From bfd3ac374cf8d4aed7e7638cafa3d2da190865ee Mon Sep 17 00:00:00 2001 From: Joey Scanga <62576716+joey-scanga@users.noreply.github.com> Date: Wed, 2 Jul 2025 13:32:48 -0500 Subject: [PATCH 2/2] Update resampling.py formatting --- nibabies/interfaces/resampling.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nibabies/interfaces/resampling.py b/nibabies/interfaces/resampling.py index 7cfbb7a3..11b3742d 100644 --- a/nibabies/interfaces/resampling.py +++ b/nibabies/interfaces/resampling.py @@ -687,8 +687,8 @@ def reconstruct_fieldmap( # but good to check before doing this. if ( nb.aff2axcodes(coefficients[-1].affine) - == ('R', 'A', 'S') - != nb.aff2axcodes(fmap_reference.affine) + == ('R', 'A', 'S') + != nb.aff2axcodes(fmap_reference.affine) ): fmap_reference = nb.as_closest_canonical(fmap_reference) if not aligned(fmap_reference.affine, coefficients[-1].affine):