55from ..utils .filemanip import fname_presuffix
66from .base import (SimpleInterface , TraitedSpec , BaseInterfaceInputSpec ,
77 traits , File )
8+ from .. import LooseVersion
89
910
1011class 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
214215def _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
0 commit comments