Skip to content

Commit 13f3fe4

Browse files
committed
BF: Fix Nifti1Header.get/set_intent for unknown intent codes
1 parent 3d59146 commit 13f3fe4

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

nibabel/nifti1.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1301,13 +1301,20 @@ def get_intent(self, code_repr='label'):
13011301
hdr = self._structarr
13021302
recoder = self._field_recoders['intent_code']
13031303
code = int(hdr['intent_code'])
1304+
known_intent = code in recoder
13041305
if code_repr == 'code':
13051306
label = code
13061307
elif code_repr == 'label':
1307-
label = recoder.label[code]
1308+
if known_intent:
1309+
label = recoder.label[code]
1310+
else:
1311+
label = ''
13081312
else:
13091313
raise TypeError('repr can be "label" or "code"')
1310-
n_params = len(recoder.parameters[code])
1314+
if known_intent:
1315+
n_params = len(recoder.parameters[code])
1316+
else:
1317+
n_params = 0
13111318
params = (float(hdr['intent_p%d' % (i + 1)]) for i in range(n_params))
13121319
name = asstr(np.asscalar(hdr['intent_name']))
13131320
return label, tuple(params), name
@@ -1356,8 +1363,13 @@ def set_intent(self, code, params=(), name=''):
13561363
('f test', (0.0, 0.0), '')
13571364
'''
13581365
hdr = self._structarr
1359-
icode = intent_codes.code[code]
1360-
p_descr = intent_codes.parameters[code]
1366+
known_intent = code in intent_codes
1367+
if known_intent:
1368+
icode = intent_codes.code[code]
1369+
p_descr = intent_codes.parameters[code]
1370+
else:
1371+
icode = code
1372+
p_descr = 3
13611373
if len(params) and len(params) != len(p_descr):
13621374
raise HeaderDataError('Need params of form %s, or empty'
13631375
% (p_descr,))

0 commit comments

Comments
 (0)