5
5
from ..utils .filemanip import fname_presuffix
6
6
from .base import (SimpleInterface , TraitedSpec , BaseInterfaceInputSpec ,
7
7
traits , File )
8
+ from .. import LooseVersion
8
9
9
10
10
11
class RescaleInputSpec (BaseInterfaceInputSpec ):
@@ -186,8 +187,8 @@ def _run_interface(self, runtime):
186
187
transform = ornt_transform (orig_ornt , targ_ornt )
187
188
affine_xfm = inv_ornt_aff (transform , orig_img .shape )
188
189
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 ' ):
191
192
reoriented = orig_img .as_reoriented (transform )
192
193
else :
193
194
reoriented = _as_reoriented_backport (orig_img , transform )
@@ -212,7 +213,7 @@ def _run_interface(self, runtime):
212
213
213
214
214
215
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"""
216
217
import numpy as np
217
218
import nibabel as nb
218
219
from nibabel .orientations import inv_ornt_aff
@@ -225,13 +226,8 @@ def _as_reoriented_backport(img, ornt):
225
226
226
227
if isinstance (reoriented , nb .Nifti1Pair ):
227
228
# 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 ()]
235
231
236
232
reoriented .header .set_dim_info (* new_dim )
237
233
0 commit comments