Skip to content

Commit 1e93bd5

Browse files
authored
Merge pull request #1072 from matthew-brett/allow-gifti-gz
MRG: Allow compressed Gifti images
2 parents a20f13a + 4e56404 commit 1e93bd5

File tree

5 files changed

+15
-6
lines changed

5 files changed

+15
-6
lines changed

nibabel/gifti/gifti.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -565,6 +565,7 @@ class GiftiImage(xml.XmlSerializable, SerializableImage):
565565
"""
566566
valid_exts = ('.gii',)
567567
files_types = (('image', '.gii'),)
568+
_compressed_suffixes = ('.gz', '.bz2')
568569

569570
# The parser will in due course be a GiftiImageParser, but we can't set
570571
# that now, because it would result in a circular import. We set it after
@@ -909,7 +910,8 @@ def from_file_map(klass, file_map, buffer_size=35000000, mmap=True):
909910
img : GiftiImage
910911
"""
911912
parser = klass.parser(buffer_size=buffer_size, mmap=mmap)
912-
parser.parse(fptr=file_map['image'].get_prepare_fileobj('rb'))
913+
with file_map['image'].get_prepare_fileobj('rb') as fptr:
914+
parser.parse(fptr=fptr)
913915
return parser.img
914916

915917
@classmethod
558 Bytes
Binary file not shown.
488 Bytes
Binary file not shown.

nibabel/gifti/tests/test_gifti.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -447,9 +447,8 @@ def test_darray_dtype_coercion_failures():
447447
assert_array_equal(da_copy.data, da.data)
448448

449449

450-
def test_gifti_file_close():
450+
def test_gifti_file_close(recwarn):
451451
gii = load(test_data('gifti', 'ascii.gii'))
452-
with pytest.WarningsRecorder() as record:
453-
with InTemporaryDirectory():
454-
gii.to_filename('test.gii')
455-
assert not any(isinstance(r.message, ResourceWarning) for r in record.list)
452+
with InTemporaryDirectory():
453+
gii.to_filename('test.gii')
454+
assert not any(isinstance(r.message, ResourceWarning) for r in recwarn)

nibabel/gifti/tests/test_parse_gifti_fast.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -462,3 +462,11 @@ def test_external_file_failure_cases():
462462
parser = GiftiImageParser()
463463
with pytest.raises(GiftiParseError):
464464
img = parser.parse(xmldata)
465+
466+
467+
def test_load_compressed():
468+
for ext in ('', '.gz', '.bz2'):
469+
fn = pjoin(IO_DATA_PATH, 'external.gii' + ext)
470+
img7 = load(fn)
471+
assert_array_almost_equal(img7.darrays[0].data, DATA_FILE7_darr1)
472+
assert_array_almost_equal(img7.darrays[1].data, DATA_FILE7_darr2)

0 commit comments

Comments
 (0)