Skip to content
Snippets Groups Projects
Commit 8c832aad authored by Paul McCarthy's avatar Paul McCarthy :mountain_bicyclist:
Browse files

Merge branch 'rf/image_save' into 'master'

Rf/image save

See merge request fsl/fslpy!188
parents 1e7ac7d1 686cde3a
No related branches found
No related tags found
No related merge requests found
Copyright 2016-2019 University of Oxford, Oxford, UK
Copyright 2016-2020 University of Oxford, Oxford, UK
The fslpy library
Copyright 2016-2019 University of Oxford, Oxford, UK.
Copyright 2016-2020 University of Oxford, Oxford, UK.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
......
......@@ -1362,6 +1362,10 @@ class Image(Nifti):
def save(self, filename=None):
"""Saves this ``Image`` to the specifed file, or the :attr:`dataSource`
if ``filename`` is ``None``.
Note that calling ``save`` on an image with modified data will cause
the entire image data to be loaded into memory if it has not already
been loaded.
"""
import fsl.utils.imcp as imcp
......
......@@ -187,6 +187,15 @@ def _test_image_indexed_save(threaded):
# make sure the data range is correct
assert img.dataRange == (0, 40)
# Save the image to a different
# location (no changes to data though)
filename = op.join(testdir, 'image2.nii.gz')
img.save(filename)
# known data range
# should not have changed
assert img.dataRange == (0, 40)
# change some data
data = np.zeros((100, 100, 100))
data[:] = 45
......@@ -195,35 +204,21 @@ def _test_image_indexed_save(threaded):
if threaded:
img.getImageWrapper().getTaskThread().waitUntilIdle()
# save the image
# save the image - this will
# cause the image data to be
# loaded into memory
img.save()
assert img.dataRange == (0, 45)
# access the data - index should
# get rebuilt to this point
img[..., 0]
img[..., 40]
if threaded:
img.getImageWrapper().getTaskThread().waitUntilIdle()
# make sure we got the modified data
assert img.dataRange == (0, 45)
img[..., 49]
if threaded:
img.getImageWrapper().getTaskThread().waitUntilIdle()
# make sure we got the modified data
assert img.dataRange == (0, 49)
assert np.all(img[..., 40] == data)
# Finally, reload, and verify the change
img = fslimage.Image(filename)
assert np.all(img[..., 40] == 45)
assert np.all(img[..., 40] == data)
@pytest.mark.longtest
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment