From eb1d12ec0e376af5f497e4eed10f00bec60667a6 Mon Sep 17 00:00:00 2001 From: Paul McCarthy <pauld.mccarthy@gmail.com> Date: Mon, 10 Apr 2017 10:27:55 +0100 Subject: [PATCH] Transform module testing complete --- tests/test_transform.py | 51 ++++++++++++ ...test_transform_test_flirtMatrixToSform.txt | 83 +++++++++++++++++++ 2 files changed, 134 insertions(+) create mode 100644 tests/testdata/test_transform_test_flirtMatrixToSform.txt diff --git a/tests/test_transform.py b/tests/test_transform.py index eb3d5f6ce..ddf6fc6c7 100644 --- a/tests/test_transform.py +++ b/tests/test_transform.py @@ -13,6 +13,7 @@ import numpy as np import pytest import fsl.utils.transform as transform +import fsl.data.image as fslimage datadir = op.join(op.dirname(__file__), 'testdata') @@ -253,3 +254,53 @@ def test_transform(): with pytest.raises(ValueError): transform.transform(badcoords[:, (1, 2, 3)], xform, axes=[1, 2]) + + +def test_flirtMatrixToSform(): + + testfile = op.join(datadir, 'test_transform_test_flirtMatrixToSform.txt') + lines = readlines(testfile) + ntests = len(lines) / 18 + + for i in range(ntests): + tlines = lines[i * 18: i * 18 + 18] + srcShape = [int( w) for w in tlines[0].split()] + srcXform = np.genfromtxt(tlines[1:5]) + refShape = [int( w) for w in tlines[5].split()] + refXform = np.genfromtxt(tlines[6:10]) + flirtMat = np.genfromtxt(tlines[10:14]) + expected = np.genfromtxt(tlines[14:18]) + + srcImg = fslimage.Image(np.zeros(srcShape), xform=srcXform) + refImg = fslimage.Image(np.zeros(refShape), xform=refXform) + + result = transform.flirtMatrixToSform(flirtMat, srcImg, refImg) + + assert np.all(np.isclose(result, expected)) + + +def test_sformToFlirtMatrix(): + testfile = op.join(datadir, 'test_transform_test_flirtMatrixToSform.txt') + lines = readlines(testfile) + ntests = len(lines) / 18 + + for i in range(ntests): + tlines = lines[i * 18: i * 18 + 18] + srcShape = [int( w) for w in tlines[0].split()] + srcXform = np.genfromtxt(tlines[1:5]) + refShape = [int( w) for w in tlines[5].split()] + refXform = np.genfromtxt(tlines[6:10]) + expected = np.genfromtxt(tlines[10:14]) + srcXformOvr = np.genfromtxt(tlines[14:18]) + + srcImg1 = fslimage.Image(np.zeros(srcShape), xform=srcXform) + srcImg2 = fslimage.Image(np.zeros(srcShape), xform=srcXform) + refImg = fslimage.Image(np.zeros(refShape), xform=refXform) + + srcImg2.voxToWorldMat = srcXformOvr + + result1 = transform.sformToFlirtMatrix(srcImg1, refImg, srcXformOvr) + result2 = transform.sformToFlirtMatrix(srcImg2, refImg) + + assert np.all(np.isclose(result1, expected)) + assert np.all(np.isclose(result2, expected)) diff --git a/tests/testdata/test_transform_test_flirtMatrixToSform.txt b/tests/testdata/test_transform_test_flirtMatrixToSform.txt new file mode 100644 index 000000000..446879f9f --- /dev/null +++ b/tests/testdata/test_transform_test_flirtMatrixToSform.txt @@ -0,0 +1,83 @@ +# Test data for test_trasform:test_flirtMatrixToSform. +# +# Source shape +# Source sform +# Ref shape +# Ref sform +# Flirt mat +# Expected result +64 64 51 +-3 0 0 0 + 0 3 0 0 + 0 0 3 0 + 0 0 0 1 +174 192 192 +-1 0 0 0 + 0 1 0 0 + 0 0 1 0 + 0 0 0 1 +0.999902305 -0.01382370227 -0.002076008527 -9.96418133 +0.01387598986 0.9995186947 0.02774033918 -0.9784486659 +0.001691535807 -0.02776642771 0.999613178 34.26763376 +0 0 0 1 +-2.9997069836 0.0414711051 0.0062280255 9.9641809464 + 0.0416279696 2.9985561371 0.0832210183 -0.978448689 + 0.0050746072 -0.0832992867 2.9988396168 34.2676353455 + 0.0 0.0 0.0 1.0 + +64 64 51 +-3 0 0 0 + 0 3 0 0 + 0 0 3 0 + 0 0 0 1 +91 109 91 +-2.0 0.0 -0.0 90.0 + 0.0 2.0 -0.0 -126.0 + 0.0 0.0 2.0 -72.0 + 0.0 0.0 0.0 1.0 +1.066596657 0.04185305106 0.0313680447 -21.01545453 +-0.0278838133 1.08492943 0.1200141384 3.254608605 +-0.02264077087 -0.1506102631 1.159656209 14.04435425 +0 0 0 1 +-3.1997900009 -0.1255591512 -0.0941041335 111.0154571533 +-0.0836514384 3.2547883987 0.360042423 -122.7453918457 +-0.067922309 -0.4518307745 3.4789686203 -57.9556465149 + 0.0 0.0 0.0 1.0 + +96 96 65 +-2 0 0 0 + 0 2 0 0 + 0 0 2 0 + 0 0 0 1 +182 218 182 +-1.0 0.0 -0.0 90.0 + 0.0 1.0 -0.0 -126.0 + 0.0 0.0 1.0 -72.0 + 0.0 0.0 0.0 1.0 +0.9770925311 0.2282763526 0.08361742115 -31.03359277 +-0.2174139321 1.034970829 0.2368454135 21.28393351 +-0.03214544114 -0.1330475704 1.107802568 23.65687239 +0 0 0 1 +-1.954185009 -0.4565527141 -0.167234838 121.0335922241 +-0.4348278642 2.0699417591 0.4736908376 -104.7160644531 +-0.0642908812 -0.2660951316 2.2156050205 -48.3431282043 + 0.0 0.0 0.0 1.0 + +64 64 21 +-4 0 0 0 + 0 4 0 0 + 0 0 6 0 + 0 0 0 1 +256 256 128 +-1.0 0.0 0.0 0.0 + 0.0 1.0 0.0 0.0 + 0.0 0.0 1.25 0.0 + 0.0 0.0 0.0 1.0 +1.04608 -0.0092732 -0.0230782 -3.88992 +0.00607773 1.01145 0.105602 -3.84974 +0.0244433 -0.0793108 1.05191 15.932 +0 0 0 1 +-4.184319973 0.0370928012 0.1384692043 3.8899199963 + 0.0243109204 4.045800209 0.6336119771 -3.8497400284 + 0.0977732018 -0.3172431886 6.3114600182 15.9320001602 + 0.0 0.0 0.0 1.0 -- GitLab