Skip to content

Reset of qform and sform codes on save #55

Closed
@matthew-brett

Description

@matthew-brett

Andrew Connolly pointed out the following misbehavior:

import numpy as np
import nibabel as nib

from nose.tools import assert_equal

img = nib.Nifti1Image(np.zeros((2,3,4)), None)
hdr = img.get_header()
hdr['qform_code'] = 3
hdr['sform_code'] = 4
nib.save(img, 'afile.nii')
img_back = nib.load('afile.nii')
hdr_back = img_back.get_header()
# These succeed
assert_equal(hdr_back['qform_code'], 3)
assert_equal(hdr_back['sform_code'], 4)

nib.save(img_back, 'afile2.nii')
# These fail - the save has modified the image in memory
assert_equal(hdr_back['qform_code'], 3)
assert_equal(hdr_back['sform_code'], 4)
img_back_again = nib.load('afile2.nii')
hdr_back_again = img_back_again.get_header()
# These fail - the saved image is also modified
assert_equal(hdr_back_again['qform_code'], 3)
assert_equal(hdr_back_again['sform_code'], 4)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions