From 288bbf7bfc6dc0591de9aa52976ac2d7c978ba3c Mon Sep 17 00:00:00 2001 From: "Christopher J. Markiewicz" Date: Fri, 1 Mar 2019 12:27:40 -0500 Subject: [PATCH 1/3] ENH: Add NIFTI_XFORM_TEMPLATE_OTHER xform code --- nibabel/nifti1.py | 4 +++- nibabel/tests/test_nifti1.py | 12 ++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/nibabel/nifti1.py b/nibabel/nifti1.py index 548ad34658..5393b5a543 100644 --- a/nibabel/nifti1.py +++ b/nibabel/nifti1.py @@ -125,7 +125,9 @@ (1, 'scanner', "NIFTI_XFORM_SCANNER_ANAT"), (2, 'aligned', "NIFTI_XFORM_ALIGNED_ANAT"), (3, 'talairach', "NIFTI_XFORM_TALAIRACH"), - (4, 'mni', "NIFTI_XFORM_MNI_152")), fields=('code', 'label', 'niistring')) + (4, 'mni', "NIFTI_XFORM_MNI_152"), + (5, 'template', "NIFTI_XFORM_TEMPLATE_OTHER"), + ), fields=('code', 'label', 'niistring')) # unit codes unit_codes = Recoder(( # code, label diff --git a/nibabel/tests/test_nifti1.py b/nibabel/tests/test_nifti1.py index 78f876ec7d..43fdac5223 100644 --- a/nibabel/tests/test_nifti1.py +++ b/nibabel/tests/test_nifti1.py @@ -226,6 +226,18 @@ def test_nifti_qsform_checks(self): assert_equal(message, 'sform_code -1 not valid; setting to 0') + def test_nifti_xform_codes(self): + # Verify that all xform codes can be set in both qform and sform + hdr = self.header_class() + xform_codes = nifti1.xform_codes + all_codes = list(xform_codes.keys()) + affine = np.eye(4) + for code in all_codes: + hdr.set_qform(affine, code) + assert_equal(hdr['qform_code'], xform_codes[code]) + hdr.set_sform(affine, code) + assert_equal(hdr['sform_code'], xform_codes[code]) + def test_magic_offset_checks(self): # magic and offset HC = self.header_class From a11cd20d6279654d3fb612c1922b3d443f88e433 Mon Sep 17 00:00:00 2001 From: "Christopher J. Markiewicz" Date: Mon, 18 Mar 2019 08:54:28 -0400 Subject: [PATCH 2/3] TEST: Make xform code test more concise --- nibabel/tests/test_nifti1.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/nibabel/tests/test_nifti1.py b/nibabel/tests/test_nifti1.py index 43fdac5223..e1e8d8e71a 100644 --- a/nibabel/tests/test_nifti1.py +++ b/nibabel/tests/test_nifti1.py @@ -229,14 +229,12 @@ def test_nifti_qsform_checks(self): def test_nifti_xform_codes(self): # Verify that all xform codes can be set in both qform and sform hdr = self.header_class() - xform_codes = nifti1.xform_codes - all_codes = list(xform_codes.keys()) affine = np.eye(4) - for code in all_codes: + for code in nifti1.xform_codes.keys(): hdr.set_qform(affine, code) - assert_equal(hdr['qform_code'], xform_codes[code]) + assert_equal(hdr['qform_code'], nifti1.xform_codes[code]) hdr.set_sform(affine, code) - assert_equal(hdr['sform_code'], xform_codes[code]) + assert_equal(hdr['sform_code'], nifti1.xform_codes[code]) def test_magic_offset_checks(self): # magic and offset From a5abbf538eca825b3d7b99b7140e47d5cb053014 Mon Sep 17 00:00:00 2001 From: "Christopher J. Markiewicz" Date: Mon, 18 Mar 2019 08:58:09 -0400 Subject: [PATCH 3/3] TEST: Verify known bad xform codes raise KeyError --- nibabel/tests/test_nifti1.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/nibabel/tests/test_nifti1.py b/nibabel/tests/test_nifti1.py index e1e8d8e71a..3287634f82 100644 --- a/nibabel/tests/test_nifti1.py +++ b/nibabel/tests/test_nifti1.py @@ -236,6 +236,11 @@ def test_nifti_xform_codes(self): hdr.set_sform(affine, code) assert_equal(hdr['sform_code'], nifti1.xform_codes[code]) + # Raise KeyError on unknown code + for bad_code in (-1, 6, 10): + assert_raises(KeyError, hdr.set_qform, affine, bad_code) + assert_raises(KeyError, hdr.set_sform, affine, bad_code) + def test_magic_offset_checks(self): # magic and offset HC = self.header_class