Skip to content

Commit 44ed184

Browse files
authored
Merge pull request #2912 from effigies/fix/nibabel_reorientation_bug
FIX: Import nibabel reorientation bug fix
2 parents 24e52aa + 4a3a42e commit 44ed184

File tree

2 files changed

+8
-12
lines changed

2 files changed

+8
-12
lines changed

nipype/interfaces/image.py

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from ..utils.filemanip import fname_presuffix
66
from .base import (SimpleInterface, TraitedSpec, BaseInterfaceInputSpec,
77
traits, File)
8+
from .. import LooseVersion
89

910

1011
class RescaleInputSpec(BaseInterfaceInputSpec):
@@ -186,8 +187,8 @@ def _run_interface(self, runtime):
186187
transform = ornt_transform(orig_ornt, targ_ornt)
187188
affine_xfm = inv_ornt_aff(transform, orig_img.shape)
188189

189-
# Check can be eliminated when minimum nibabel version >= 2.2
190-
if hasattr(orig_img, 'as_reoriented'):
190+
# Check can be eliminated when minimum nibabel version >= 2.4
191+
if LooseVersion(nb.__version__) >= LooseVersion('2.4.0'):
191192
reoriented = orig_img.as_reoriented(transform)
192193
else:
193194
reoriented = _as_reoriented_backport(orig_img, transform)
@@ -212,7 +213,7 @@ def _run_interface(self, runtime):
212213

213214

214215
def _as_reoriented_backport(img, ornt):
215-
"""Backport of img.as_reoriented as of nibabel 2.2.0"""
216+
"""Backport of img.as_reoriented as of nibabel 2.4.0"""
216217
import numpy as np
217218
import nibabel as nb
218219
from nibabel.orientations import inv_ornt_aff
@@ -225,13 +226,8 @@ def _as_reoriented_backport(img, ornt):
225226

226227
if isinstance(reoriented, nb.Nifti1Pair):
227228
# Also apply the transform to the dim_info fields
228-
new_dim = list(reoriented.header.get_dim_info())
229-
for idx, value in enumerate(new_dim):
230-
# For each value, leave as None if it was that way,
231-
# otherwise check where we have mapped it to
232-
if value is None:
233-
continue
234-
new_dim[idx] = np.where(ornt[:, 0] == idx)[0]
229+
new_dim = [None if orig_dim is None else int(ornt[orig_dim, 0])
230+
for orig_dim in img.header.get_dim_info()]
235231

236232
reoriented.header.set_dim_info(*new_dim)
237233

nipype/interfaces/tests/test_image.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@
99
from ..image import _as_reoriented_backport, _orientations
1010
from ... import LooseVersion
1111

12-
nibabel22 = LooseVersion(nb.__version__) >= LooseVersion('2.2.0')
12+
nibabel24 = LooseVersion(nb.__version__) >= LooseVersion('2.4.0')
1313

1414

15-
@pytest.mark.skipif(not nibabel22,
15+
@pytest.mark.skipif(not nibabel24,
1616
reason="Old nibabel - can't directly compare")
1717
def test_reorientation_backport():
1818
pixdims = ((1, 1, 1), (2, 2, 3))

0 commit comments

Comments
 (0)