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

TEST: More tests for resample_image script

parent 84bd4950
No related branches found
No related tags found
No related merge requests found
......@@ -15,10 +15,11 @@ from fsl.data.image import Image
from .. import make_random_image
def test_resample_image_shape():
with tempdir():
img = Image(make_random_image('image.nii.gz', dims=(10, 10, 10)))
resample_image.main('image resampled -s 20 20 20'.split())
resample_image.main('image resampled -s 20,20,20'.split())
res = Image('resampled')
expv2w = transform.concat(
......@@ -32,18 +33,36 @@ def test_resample_image_shape():
np.array(transform.axisBounds(res.shape, res.voxToWorldMat)) - 0.25,
transform.axisBounds(img.shape, img.voxToWorldMat)))
resample_image.main('image resampled -s 20 20 20 -o corner'.split())
resample_image.main('image resampled -s 20,20,20 -o corner'.split())
res = Image('resampled')
assert np.all(np.isclose(
transform.axisBounds(res.shape, res.voxToWorldMat),
transform.axisBounds(img.shape, img.voxToWorldMat)))
def test_resample_image_shape_4D():
with tempdir():
# Can specify three dims
img = Image(make_random_image('image.nii.gz', dims=(10, 10, 10, 10)))
resample_image.main('image resampled -s 20,20,20'.split())
res = Image('resampled')
assert np.all(np.isclose(res.shape, (20, 20, 20, 10)))
assert np.all(np.isclose(res.pixdim, (0.5, 0.5, 0.5, 1)))
# Or resample along the higher dims
resample_image.main('image resampled -s 20,20,20,20'.split())
res = Image('resampled')
assert np.all(np.isclose(res.shape, (20, 20, 20, 20)))
assert np.all(np.isclose(res.pixdim, (0.5, 0.5, 0.5, 0.5)))
def test_resample_image_dim():
with tempdir():
img = Image(make_random_image('image.nii.gz', dims=(10, 10, 10)))
resample_image.main('image resampled -d 0.5 0.5 0.5'.split())
resample_image.main('image resampled -d 0.5,0.5,0.5'.split())
res = Image('resampled')
expv2w = transform.concat(
......@@ -70,12 +89,55 @@ def test_resample_image_ref():
assert np.all(np.isclose(res.pixdim, (0.5, 0.5, 0.5)))
assert np.all(np.isclose(res.voxToWorldMat, expv2w))
# 3D / 4D
img = Image(make_random_image('image.nii.gz', dims=(10, 10, 10)))
ref = Image(make_random_image('ref.nii.gz', dims=(20, 20, 20, 20),
pixdims=(0.5, 0.5, 0.5, 1)))
resample_image.main('image resampled -r ref'.split())
res = Image('resampled')
assert np.all(np.isclose(res.shape, (20, 20, 20)))
assert np.all(np.isclose(res.pixdim, (0.5, 0.5, 0.5)))
# 4D / 3D
img = Image(make_random_image('image.nii.gz', dims=(10, 10, 10, 10)))
ref = Image(make_random_image('ref.nii.gz', dims=(20, 20, 20),
pixdims=(0.5, 0.5, 0.5)))
resample_image.main('image resampled -r ref'.split())
res = Image('resampled')
assert np.all(np.isclose(res.shape, (20, 20, 20, 10)))
assert np.all(np.isclose(res.pixdim, (0.5, 0.5, 0.5, 1)))
# 4D / 4D - no resampling along fourth dim
img = Image(make_random_image('image.nii.gz', dims=(10, 10, 10, 10)))
ref = Image(make_random_image('ref.nii.gz', dims=(20, 20, 20, 20),
pixdims=(0.5, 0.5, 0.5, 1)))
resample_image.main('image resampled -r ref'.split())
res = Image('resampled')
assert np.all(np.isclose(res.shape, (20, 20, 20, 10)))
assert np.all(np.isclose(res.pixdim, (0.5, 0.5, 0.5, 1)))
def test_resample_image_bad_options():
with tempdir():
img = Image(make_random_image('image.nii.gz', dims=(10, 10, 10)))
# No args - should print help and exit(0)
with pytest.raises(SystemExit) as e:
resample_image.main([])
assert e.value.code == 0
with pytest.raises(SystemExit) as e:
resample_image.main('image resampled -d 0.5,0.5,0.5 '
'-s 20,20,20'.split())
assert e.value.code != 0
with pytest.raises(SystemExit) as e:
resample_image.main('image resampled -s 20,20'.split())
assert e.value.code != 0
with pytest.raises(SystemExit) as e:
resample_image.main('image resampled -d 0.5 0.5 0.5 '
'-s 20 20 20'.split())
resample_image.main('image resampled -s 20,20,20,20'.split())
assert e.value.code != 0
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