From 651b83b25973ef6e5dd8242f2bc3c72212811a0e Mon Sep 17 00:00:00 2001 From: Paul McCarthy <pauldmccarthy@gmail.com> Date: Tue, 28 Jan 2025 15:59:05 +0000 Subject: [PATCH] New tests for flirt -applyxfm --- ...m_usesqform_interp_nearestneighbour.nii.gz | 3 + .../applyxfm_usesqform_interp_sinc.nii.gz | 3 + .../applyxfm_usesqform_interp_spline.nii.gz | 3 + ...qform_interp_spline_setbackground_0.nii.gz | 3 + ...applyxfm_usesqform_interp_trilinear.nii.gz | 3 + unit_tests/flirt/applyxfm/feedsRun | 66 +++++++++++++++++++ 6 files changed, 81 insertions(+) create mode 100644 unit_tests/flirt/applyxfm/benchmarks/applyxfm_usesqform_interp_nearestneighbour.nii.gz create mode 100644 unit_tests/flirt/applyxfm/benchmarks/applyxfm_usesqform_interp_sinc.nii.gz create mode 100644 unit_tests/flirt/applyxfm/benchmarks/applyxfm_usesqform_interp_spline.nii.gz create mode 100644 unit_tests/flirt/applyxfm/benchmarks/applyxfm_usesqform_interp_spline_setbackground_0.nii.gz create mode 100644 unit_tests/flirt/applyxfm/benchmarks/applyxfm_usesqform_interp_trilinear.nii.gz create mode 100755 unit_tests/flirt/applyxfm/feedsRun diff --git a/unit_tests/flirt/applyxfm/benchmarks/applyxfm_usesqform_interp_nearestneighbour.nii.gz b/unit_tests/flirt/applyxfm/benchmarks/applyxfm_usesqform_interp_nearestneighbour.nii.gz new file mode 100644 index 0000000..2045c8a --- /dev/null +++ b/unit_tests/flirt/applyxfm/benchmarks/applyxfm_usesqform_interp_nearestneighbour.nii.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:772a19c88d11623d36249c01c12670572972483a2b3ae10cb484c4e54d0a78d8 +size 21168 diff --git a/unit_tests/flirt/applyxfm/benchmarks/applyxfm_usesqform_interp_sinc.nii.gz b/unit_tests/flirt/applyxfm/benchmarks/applyxfm_usesqform_interp_sinc.nii.gz new file mode 100644 index 0000000..fa91759 --- /dev/null +++ b/unit_tests/flirt/applyxfm/benchmarks/applyxfm_usesqform_interp_sinc.nii.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:90451ad2f5f4d95ace8c1a359519faef00ae7c0f10b3b408e1324e22099e57c7 +size 28509 diff --git a/unit_tests/flirt/applyxfm/benchmarks/applyxfm_usesqform_interp_spline.nii.gz b/unit_tests/flirt/applyxfm/benchmarks/applyxfm_usesqform_interp_spline.nii.gz new file mode 100644 index 0000000..1a1be39 --- /dev/null +++ b/unit_tests/flirt/applyxfm/benchmarks/applyxfm_usesqform_interp_spline.nii.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7816784412de61033c29fb913dccefe571217cbfc53fd303dfff3ac59a6fa0a2 +size 28524 diff --git a/unit_tests/flirt/applyxfm/benchmarks/applyxfm_usesqform_interp_spline_setbackground_0.nii.gz b/unit_tests/flirt/applyxfm/benchmarks/applyxfm_usesqform_interp_spline_setbackground_0.nii.gz new file mode 100644 index 0000000..9f4c687 --- /dev/null +++ b/unit_tests/flirt/applyxfm/benchmarks/applyxfm_usesqform_interp_spline_setbackground_0.nii.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:317fa432b387a3409d72941b9ed65aba3d76469334cde4e44c88d3a68ba718b5 +size 28672 diff --git a/unit_tests/flirt/applyxfm/benchmarks/applyxfm_usesqform_interp_trilinear.nii.gz b/unit_tests/flirt/applyxfm/benchmarks/applyxfm_usesqform_interp_trilinear.nii.gz new file mode 100644 index 0000000..a368dd0 --- /dev/null +++ b/unit_tests/flirt/applyxfm/benchmarks/applyxfm_usesqform_interp_trilinear.nii.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d107660bfb61d6156c7525a7e3cff46bda9d1865046b62bf85c2e184712d2a3c +size 28475 diff --git a/unit_tests/flirt/applyxfm/feedsRun b/unit_tests/flirt/applyxfm/feedsRun new file mode 100755 index 0000000..4a96a86 --- /dev/null +++ b/unit_tests/flirt/applyxfm/feedsRun @@ -0,0 +1,66 @@ +#!/usr/bin/env fslpython +# +# Test basic flirt -applyxfm behaviour +# + + +import os.path as op +import os +import sys + +import fsl.data.image as fslimage +import fsl.utils.run as run + +import numpy as np + + +thisdir = op.dirname(op.abspath(__file__)) + + +def compare_images(a, b): + + print(f'Comparing images {a} and {b}') + + a = fslimage.Image(a) + b = fslimage.Image(b) + adata = a.data + bdata = b.data + + assert a.sameSpace(b) + assert np.all(np.isclose(adata, bdata)) + + +def test_applyxfm(): + fsldir = os.environ['FSLDIR'] + std2mm = op.join(fsldir, 'data', 'standard', 'MNI152_T1_2mm.nii.gz') + std1mm = op.join(fsldir, 'data', 'standard', 'MNI152_T1_1mm.nii.gz') + std2mm_roi = 'std2mm_roi.nii.gz' + + # use a ROI to reduce storage and test extrapolation behaviour + run.runfsl(f'fslroi {std2mm} {std2mm_roi} 40 10 40 10 40 10') + + tests = [ + '-applyxfm -usesqform -interp nearestneighbour', + '-applyxfm -usesqform -interp trilinear', + '-applyxfm -usesqform -interp sinc', + '-applyxfm -usesqform -interp spline', + '-applyxfm -usesqform -interp spline -setbackground 0', + ] + + for test in tests: + outfname = '_'.join(test.replace('-', '').split()) + outfname = f'{outfname}.nii.gz' + cmd = f'flirt -in {std2mm_roi} -ref {std1mm} -out {outfname} {test}' + + run.runfsl(cmd) + + expfname = op.join(thisdir, 'benchmarks', outfname) + + compare_images(outfname, expfname) + + + +if __name__ == '__main__': + if len(sys.argv) > 1: + os.chdir(sys.argv[1]) + test_applyxfm() -- GitLab