diff --git a/tests/test_wrapperutils.py b/tests/test_wrapperutils.py index 0399c8205797b02fb3c4dc06bc2ba706ce29c75d..8173fe1045f5f5aa06a3275e38391064e940c9bb 100644 --- a/tests/test_wrapperutils.py +++ b/tests/test_wrapperutils.py @@ -497,24 +497,91 @@ def test_fileOrThing_outprefix_directory(): def test_chained_fileOrImageAndArray(): - @wutils.fileOrImage('image') - @wutils.fileOrArray('array') - def func(image, array): - nib.load(image) - np.loadtxt(array) + @wutils.fileOrImage('image', 'outimage') + @wutils.fileOrArray('array', 'outarray') + def func(image, array, outimage, outarray): + image = nib.load(image) + array = np.loadtxt(array) + + outimg = nib.nifti1.Nifti1Image(image.get_data() * 2, np.eye(4)) + + np.savetxt(outarray, array * 2) + outimg.to_filename(outimage) image = nib.nifti1.Nifti1Image(np.array([[1, 2], [ 3, 4]]), np.eye(4)) array = np.array([[5, 6, 7, 8]]) + expimg = nib.nifti1.Nifti1Image(image.get_data() * 2, np.eye(4)) + exparr = array * 2 + with tempdir.tempdir(): nib.save(image, 'image.nii') np.savetxt('array.txt', array) - func('image.nii', 'array.txt') - func('image.nii', array) - func( image, 'array.txt') - func( image, array) + func('image.nii', 'array.txt', 'outimg.nii', 'outarr.txt') + assert np.all(nib.load('outimg.nii').get_data() == expimg.get_data()) + assert np.all(np.loadtxt('outarr.txt') == exparr) + + func('image.nii', array, 'outimg.nii', 'outarr.txt') + assert np.all(nib.load('outimg.nii').get_data() == expimg.get_data()) + assert np.all(np.loadtxt('outarr.txt') == exparr) + + func( image, 'array.txt', 'outimg.nii', 'outarr.txt') + assert np.all(nib.load('outimg.nii').get_data() == expimg.get_data()) + assert np.all(np.loadtxt('outarr.txt') == exparr) + + func( image, array, 'outimg.nii', 'outarr.txt') + assert np.all(nib.load('outimg.nii').get_data() == expimg.get_data()) + assert np.all(np.loadtxt('outarr.txt') == exparr) + + res = func(image, array, wutils.LOAD, 'outarr.txt') + assert np.all(res['outimage'].get_data() == expimg.get_data()) + assert np.all(np.loadtxt('outarr.txt') == exparr) + + res = func(image, array, 'outimg.nii', wutils.LOAD) + assert np.all(nib.load('outimg.nii').get_data() == expimg.get_data()) + assert np.all(res['outarray'] == exparr) + + res = func(image, array, wutils.LOAD, wutils.LOAD) + assert np.all(res['outimage'].get_data() == expimg.get_data()) + assert np.all(res['outarray'] == exparr) + + +def test_fileOrThing_chained_outprefix(): + + import logging + logging.basicConfig() + logging.getLogger('fsl.wrappers').setLevel(logging.DEBUG) + + @wutils.fileOrImage('image', 'outimage', outprefix='out') + @wutils.fileOrArray('array', 'outarray', outprefix='out') + def func(image, array, out, **kwa): + + image = nib.load(image) + array = np.loadtxt(array) + + outimg = nib.nifti1.Nifti1Image(image.get_data() * 2, np.eye(4)) + outarr = array * 2 + + np.savetxt('{}_array.txt'.format(out), outarr) + outimg.to_filename('{}_image.nii'.format(out)) + + image = nib.nifti1.Nifti1Image(np.array([[1, 2], [ 3, 4]]), np.eye(4)) + array = np.array([[5, 6, 7, 8]]) + + expimg = nib.nifti1.Nifti1Image(image.get_data() * 2, np.eye(4)) + exparr = array * 2 + + with tempdir.tempdir(): + + func(image, array, 'myout') + assert np.all(nib.load('myout_image.nii').get_data() == expimg.get_data()) + assert np.all(np.loadtxt('myout_array.txt') == exparr) + + res = func(image, array, wutils.LOAD) + assert np.all(res['out_image'].get_data() == expimg.get_data()) + assert np.all(res['out_array'] == exparr) def test_cmdwrapper():