Skip to content

Commit 0158e29

Browse files
Bago Amirbekianmatthew-brett
authored andcommitted
TEST - added test for set_qform and set_sform
1 parent f6fb767 commit 0158e29

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed

nibabel/tests/test_nifti1.py

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -360,6 +360,69 @@ def test_header_update_affine(self):
360360
assert_equal(hdr['sform_code'], 2)
361361
assert_equal(hdr['qform_code'], 2)
362362

363+
def test_set_qform(self):
364+
img = self.image_class(np.zeros((2,3,4)), np.diag([2.2, 3.3, 4.3, 1]))
365+
hdr = img.get_header()
366+
new_affine = np.diag([1.1, 1.1, 1.1, 1])
367+
#Set qform using new_affine
368+
stat = img.set_qform(new_affine, 1)
369+
assert_false(stat)
370+
assert_equal(hdr['qform_code'], 1)
371+
assert_array_almost_equal(hdr.get_qform(), new_affine)
372+
assert_array_almost_equal(img.get_affine(), hdr.get_best_affine())
373+
#Clear qform using None, zooms sould update from best_affine
374+
stat = img.set_qform(None)
375+
assert_false(stat)
376+
assert_equal(hdr['qform_code'], 0)
377+
assert_array_almost_equal(hdr.get_zooms(), [2.2, 3.3, 4.3])
378+
assert_array_almost_equal(img.get_affine(), hdr.get_best_affine())
379+
#If sform is not set, qfrom should update affine
380+
img.set_sform(None)
381+
stat = img.set_qform(new_affine, 1)
382+
assert_true(stat)
383+
assert_equal(hdr['qform_code'], 1)
384+
assert_array_almost_equal(img.get_affine(), new_affine)
385+
new_affine[0, 1] = 2
386+
#If affine has has shear, should return false
387+
stat = img.set_qform(new_affine, 2)
388+
assert_false(stat)
389+
assert_equal(hdr['qform_code'], 2)
390+
391+
def test_set_sform(self):
392+
img = self.image_class(np.zeros((2,3,4)), np.diag([2.2, 3.3, 4.3, 1]))
393+
hdr = img.get_header()
394+
new_affine = np.diag([1.1, 1.1, 1.1, 1])
395+
qform_affine = np.diag([1.2, 1.2, 1.2, 1])
396+
stat = img.set_qform(qform_affine, 0)
397+
assert_false(stat)
398+
#Set sform using new_affine when qfrom is 0
399+
stat = img.set_sform(new_affine, 1)
400+
assert_true(stat)
401+
assert_equal(hdr['sform_code'], 1)
402+
assert_array_almost_equal(hdr.get_sform(), new_affine)
403+
assert_array_almost_equal(img.get_affine(), hdr.get_best_affine())
404+
#zooms get updated when qform is 0
405+
assert_array_almost_equal(hdr.get_zooms(), [1.1, 1.1, 1.1])
406+
407+
img.set_qform(qform_affine, 1)
408+
#Set sform using new_affine when qfrom is set
409+
stat = img.set_sform(new_affine, 1)
410+
assert_true(stat)
411+
assert_equal(hdr['sform_code'], 1)
412+
assert_array_almost_equal(hdr.get_sform(), new_affine)
413+
assert_array_almost_equal(img.get_affine(), hdr.get_best_affine())
414+
#zooms don't change if qform is set
415+
assert_array_almost_equal(hdr.get_zooms(), [1.2, 1.2, 1.2])
416+
#Clear sform using None, best_affine should fall back on qform
417+
stat = img.set_sform(None)
418+
assert_false(stat)
419+
assert_equal(hdr['sform_code'], 0)
420+
assert_equal(hdr['qform_code'], 1)
421+
zeros = np.zeros((4,4))
422+
zeros[3, 3] = 1
423+
assert_array_almost_equal(hdr.get_sform(), zeros)
424+
assert_array_almost_equal(img.get_affine(), qform_affine)
425+
assert_array_almost_equal(hdr.get_best_affine(), img.get_affine())
363426

364427
class TestNifti1Pair(TestNifti1Image):
365428
# Run analyze-flavor spatialimage tests

0 commit comments

Comments
 (0)