Skip to content

Commit cd7be20

Browse files
committed
NF - more polite error for unsupported data code - closes #19
1 parent 0f4c988 commit cd7be20

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

nibabel/analyze.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -374,8 +374,15 @@ def from_header(klass, header=None, check=True):
374374
return obj
375375

376376
def _set_format_specifics(self):
377-
''' Utility routine to set format specific header stuff '''
378-
pass
377+
''' Utility routine to set format specific header stuff
378+
379+
For analyze headers, we need to check for datatypes that nifti supports
380+
and analyze does not, in order to raise a more polite error
381+
'''
382+
code = int(self._header_data['datatype'])
383+
if not code in self._data_type_codes.value_set():
384+
raise HeaderDataError('Analyze does not support datatype code %d'
385+
% code)
379386

380387
@classmethod
381388
def from_fileobj(klass, fileobj, endianness=None, check=True):

nibabel/tests/test_analyze.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
from ..py3k import BytesIO, asbytes
4848
from ..spatialimages import (HeaderDataError, HeaderTypeError)
4949
from ..analyze import AnalyzeHeader, AnalyzeImage
50+
from ..nifti1 import Nifti1Header
5051
from ..loadsave import read_img_data
5152
from .. import imageglobals
5253

@@ -380,6 +381,13 @@ def test_slope_inter():
380381
assert_raises(HeaderTypeError, hdr.set_slope_inter, 1.0, 0.1)
381382

382383

384+
def test_data_code_error():
385+
# test analyze raising error for unsupported codes
386+
hdr = Nifti1Header()
387+
hdr['datatype'] = 256
388+
assert_raises(HeaderDataError, AnalyzeHeader.from_header, hdr)
389+
390+
383391
class TestAnalyzeImage(tsi.TestSpatialImage):
384392
image_class = AnalyzeImage
385393

0 commit comments

Comments
 (0)