Skip to content

Commit d41b353

Browse files
committed
API: Warn on creation of Nifti images with 64-bit ints
1 parent 7cfaebf commit d41b353

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

nibabel/analyze.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -914,12 +914,15 @@ class AnalyzeImage(SpatialImage):
914914
ImageArrayProxy = ArrayProxy
915915

916916
def __init__(self, dataobj, affine, header=None,
917-
extra=None, file_map=None):
917+
extra=None, file_map=None, dtype=None):
918918
super(AnalyzeImage, self).__init__(
919919
dataobj, affine, header, extra, file_map)
920920
# Reset consumable values
921921
self._header.set_data_offset(0)
922922
self._header.set_slope_inter(None, None)
923+
924+
if dtype is not None:
925+
self.set_data_dtype(dtype)
923926
__init__.__doc__ = SpatialImage.__init__.__doc__
924927

925928
def get_data_dtype(self):

nibabel/nifti1.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1754,12 +1754,20 @@ class Nifti1Pair(analyze.AnalyzeImage):
17541754
rw = True
17551755

17561756
def __init__(self, dataobj, affine, header=None,
1757-
extra=None, file_map=None):
1757+
extra=None, file_map=None, dtype=None):
1758+
danger_dts = (np.dtype("int64"), np.dtype("uint64"))
1759+
if header is None and dtype is None and dataobj.dtype in danger_dts:
1760+
msg = (f"Image data has type {dataobj.dtype}, which may cause "
1761+
"incompatibilities with other tools. This will error in "
1762+
"NiBabel 5.0. This warning can be silenced "
1763+
f"by passing the dtype argument to {self.__class__.__name__}().")
1764+
warnings.warn(msg, FutureWarning, stacklevel=2)
17581765
super(Nifti1Pair, self).__init__(dataobj,
17591766
affine,
17601767
header,
17611768
extra,
1762-
file_map)
1769+
file_map,
1770+
dtype)
17631771
# Force set of s/q form when header is None unless affine is also None
17641772
if header is None and affine is not None:
17651773
self._affine2header()

0 commit comments

Comments
 (0)