Ensure affine attribute in sync with header after init. #688
+24
−3
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hi,
I made the following changes that ensure that the affine attribute is in sync with the header after initializing a Nifti Image.
Those two may differ because the affine provided may contain values that need float64 to store, while they have to be casted to float32 for the nifti1 header and thus some values are slightly changed.
I actually encountered this while using
as_closest_canonical
(which actually creates a new instance) on images and then expecting the affine I had in memory to be the same as the one that will be written and later read from file.I found some related issues such as http:https://nipy.org/nibabel/devel/modified_images.html and
#669 but they deal with the more general issue of memory/file mismatch that may happen while modifying things on the instance.
This is a more fundamental step that ensures the affine attribute just after init is the same as the one that will be written excluding later modifications