Skip to content

Commit 930e2cf

Browse files
committed
RF+TST: add permit_truncated to header; fix copy
Add `permit_truncated` to header attributes. Fix `copy` method to use value of `permit_truncated` when making a copy. Test.
1 parent c78cba7 commit 930e2cf

File tree

2 files changed

+35
-1
lines changed

2 files changed

+35
-1
lines changed

nibabel/parrec.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -524,6 +524,7 @@ def __init__(self, info, image_defs, permit_truncated=False):
524524
"""
525525
self.general_info = info.copy()
526526
self.image_defs = image_defs.copy()
527+
self.permit_truncated = permit_truncated
527528
_truncation_checks(info, image_defs, permit_truncated)
528529
# charge with basic properties to be able to use base class
529530
# functionality
@@ -550,7 +551,8 @@ def from_fileobj(klass, fileobj, permit_truncated=False):
550551

551552
def copy(self):
552553
return PARRECHeader(deepcopy(self.general_info),
553-
self.image_defs.copy())
554+
self.image_defs.copy(),
555+
self.permit_truncated)
554556

555557
def as_analyze_map(self):
556558
"""Convert PAR parameters to NIFTI1 format"""

nibabel/tests/test_parrec.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -383,3 +383,35 @@ def test_copy_on_init():
383383
hdr.image_defs['image pixel size'] = 8
384384
assert_array_equal(hdr.image_defs['image pixel size'], 8)
385385
assert_array_equal(HDR_DEFS['image pixel size'], 16)
386+
387+
388+
def assert_arr_dict_equal(dict1, dict2):
389+
assert_equal(set(dict1), set(dict2))
390+
for key, value1 in dict1.items():
391+
value2 = dict2[key]
392+
assert_array_equal(value1, value2)
393+
394+
395+
def test_header_copy():
396+
# Test header copying
397+
hdr = PARRECHeader(HDR_INFO, HDR_DEFS)
398+
hdr2 = hdr.copy()
399+
400+
def assert_copy_ok(hdr1, hdr2):
401+
assert_false(hdr1 is hdr2)
402+
assert_equal(hdr1.permit_truncated, hdr2.permit_truncated)
403+
assert_false(hdr1.general_info is hdr2.general_info)
404+
assert_arr_dict_equal(hdr1.general_info, hdr2.general_info)
405+
assert_false(hdr1.image_defs is hdr2.image_defs)
406+
assert_array_equal(hdr1.image_defs, hdr2.image_defs)
407+
408+
assert_copy_ok(hdr, hdr2)
409+
assert_false(hdr.permit_truncated)
410+
assert_false(hdr2.permit_truncated)
411+
with open(TRUNC_PAR, 'rt') as fobj:
412+
assert_raises(PARRECError, PARRECHeader.from_fileobj, fobj)
413+
with open(TRUNC_PAR, 'rt') as fobj:
414+
trunc_hdr = PARRECHeader.from_fileobj(fobj, True)
415+
assert_true(trunc_hdr.permit_truncated)
416+
trunc_hdr2 = trunc_hdr.copy()
417+
assert_copy_ok(trunc_hdr, trunc_hdr2)

0 commit comments

Comments
 (0)