Skip to content

Commit 54e87bb

Browse files
committed
RF: Use consistent logic for ECAT, Minc1 and PARREC proxies
1 parent 29a68dd commit 54e87bb

File tree

3 files changed

+11
-12
lines changed

3 files changed

+11
-12
lines changed

nibabel/ecat.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -706,9 +706,10 @@ def __array__(self):
706706

707707
def get_scaled(self, dtype=None):
708708
data = self.__array__()
709-
if dtype is not None and np.dtype(dtype) > data.dtype:
710-
data = data.astype(dtype)
711-
return data
709+
if dtype is None:
710+
return data
711+
final_type = np.promote_types(data.dtype, dtype)
712+
return data.astype(final_type, copy=False)
712713

713714
def __getitem__(self, sliceobj):
714715
""" Return slice `sliceobj` from ECAT data, optimizing if possible

nibabel/minc1.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -263,9 +263,10 @@ def is_proxy(self):
263263

264264
def _get_scaled(self, dtype, slicer):
265265
data = self.minc_file.get_scaled_data(slicer)
266-
if dtype is not None and np.dtype(dtype) > data.dtype:
267-
data = data.astype(dtype)
268-
return data
266+
if dtype is None:
267+
return data
268+
final_type = np.promote_types(data.dtype, dtype)
269+
return data.astype(final_type, copy=False)
269270

270271
def get_scaled(self, dtype=None):
271272
return self._get_scaled(dtype=dtype, slicer=())

nibabel/parrec.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -633,12 +633,6 @@ def dtype(self):
633633
def is_proxy(self):
634634
return True
635635

636-
def get_unscaled(self):
637-
with ImageOpener(self.file_like) as fileobj:
638-
return _data_from_rec(fileobj, self._rec_shape, self._dtype,
639-
self._slice_indices, self._shape,
640-
mmap=self._mmap)
641-
642636
def _get_unscaled(self, slicer):
643637
indices = self._slice_indices
644638
if slicer == ():
@@ -675,6 +669,9 @@ def _get_scaled(self, dtype, slicer):
675669
return raw_data * slopes[slicer].astype(final_type) + inters[slicer].astype(final_type)
676670

677671

672+
def get_unscaled(self):
673+
return self._get_unscaled(slicer=())
674+
678675
def get_scaled(self, dtype=None):
679676
return self._get_scaled(dtype=dtype, slicer=())
680677

0 commit comments

Comments
 (0)