|
8 | 8 | from nose.tools import assert_equal
|
9 | 9 |
|
10 | 10 | import nibabel as nib
|
| 11 | +import numpy as np |
11 | 12 | from nibabel.cmdline.utils import *
|
12 |
| -from nibabel.cmdline.diff import diff_header_fields, diff_headers |
| 13 | +from nibabel.cmdline.diff import get_headers_diff |
13 | 14 | from os.path import (dirname, join as pjoin, abspath)
|
14 | 15 |
|
15 | 16 |
|
@@ -46,24 +47,58 @@ def get_test(self):
|
46 | 47 | assert_equal(safe_get(test, "failtest"), "-")
|
47 | 48 |
|
48 | 49 |
|
49 |
| -def test_diff_headers(): |
| 50 | +def test_get_headers_diff(): |
50 | 51 | fnames = [pjoin(DATA_PATH, f)
|
51 | 52 | for f in ('standard.nii.gz', 'example4d.nii.gz')]
|
52 |
| - file_headers = [nib.load(f).header for f in fnames] |
53 |
| - headers = ['sizeof_hdr', 'data_type', 'db_name', 'extents', 'session_error', 'regular', 'dim_info', 'dim', 'intent_p1', |
54 |
| - 'intent_p2', 'intent_p3', 'intent_code', 'datatype', 'bitpix', 'slice_start', 'pixdim', 'vox_offset', 'scl_slope', |
55 |
| - 'scl_inter', 'slice_end', 'slice_code', 'xyzt_units', 'cal_max', 'cal_min', 'slice_duration', 'toffset', 'glmax', |
56 |
| - 'glmin', 'descrip', 'aux_file', 'qform_code', 'sform_code', 'quatern_b', 'quatern_c', 'quatern_d', 'qoffset_x', |
57 |
| - 'qoffset_y', 'qoffset_z', 'srow_x', 'srow_y', 'srow_z', 'intent_name', 'magic'] |
58 |
| - |
59 |
| - assert_equal(diff_headers(file_headers, headers), ['regular', 'dim_info', 'dim', 'datatype', 'bitpix', 'pixdim', |
60 |
| - 'slice_end', 'xyzt_units', 'cal_max', 'descrip', 'qform_code', |
61 |
| - 'sform_code', 'quatern_b', 'quatern_c', 'quatern_d', 'qoffset_x', |
62 |
| - 'qoffset_y', 'qoffset_z', 'srow_x', 'srow_y', 'srow_z']) |
63 |
| - |
64 |
| - |
65 |
| -def test_diff_header_fields(): |
66 |
| - fnames = [pjoin(DATA_PATH, f) |
67 |
| - for f in ('standard.nii.gz', 'example4d.nii.gz')] |
68 |
| - file_headers = [nib.load(f).header for f in fnames] |
69 |
| - assert_equal(diff_header_fields("dim_info", file_headers), ['0', '57']) |
| 53 | + actual_difference = get_headers_diff([nib.load(f).header for f in fnames]) |
| 54 | + expected_difference = { |
| 55 | + "regular": ["".encode("utf-8"), "r".encode("utf-8")], |
| 56 | + "dim_info": [0, 57], |
| 57 | + "dim": np.array([[3, 4, 5, 7, 1, 1, 1, 1], [ 4, 128, 96, 24, 2, 1, 1, 1]], "int16"), |
| 58 | + "datatype": [2, 4], |
| 59 | + "bitpix": [8, 16], |
| 60 | + "pixdim": np.array([[ 1., 1., 3., 2., 1., 1., 1., 1.], [ -1.00000000e+00, 2.00000000e+00, |
| 61 | + 2.00000000e+00, 2.19999909e+00, |
| 62 | + 2.00000000e+03, 1.00000000e+00, |
| 63 | + 1.00000000e+00, 1.00000000e+00]], "float32"), |
| 64 | + "slice_end": [0, 23], |
| 65 | + "xyzt_units": [0, 10], |
| 66 | + "cal_max": [0.0, 1162.0], |
| 67 | + "descrip": ["".encode("utf-8"), "FSL3.3\x00 v2.25 NIfTI-1 Single file format".encode("utf-8")], |
| 68 | + "qform_code": [0, 1], |
| 69 | + "sform_code": [2, 1], |
| 70 | + "quatern_b": [0.0, -1.9451068140294884e-26], |
| 71 | + "quatern_c": [0.0, -0.9967085123062134], |
| 72 | + "quatern_d": [0.0, -0.0810687392950058], |
| 73 | + "qoffset_x": [0.0, 117.8551025390625], |
| 74 | + "qoffset_y": [0.0, -35.72294235229492], |
| 75 | + "qoffset_z": [0.0, -7.248798370361328], |
| 76 | + "srow_x": np.array([[ 1., 0., 0., 0.], [ -2.00000000e+00, 6.71471565e-19, 9.08102451e-18, |
| 77 | + 1.17855103e+02]], "float32"), |
| 78 | + "srow_y": np.array([[ 0., 3., 0., 0.], [ -6.71471565e-19, 1.97371149e+00, -3.55528235e-01, |
| 79 | + -3.57229424e+01]], "float32"), |
| 80 | + "srow_z": np.array([[ 0., 0., 2., 0.], [ 8.25548089e-18, 3.23207617e-01, 2.17108178e+00, |
| 81 | + -7.24879837e+00]], "float32") |
| 82 | + } |
| 83 | + |
| 84 | + assert_equal(actual_difference["regular"], expected_difference["regular"]) |
| 85 | + assert_equal(actual_difference["dim_info"], expected_difference["dim_info"]) |
| 86 | + np.testing.assert_array_equal(actual_difference["dim"], expected_difference["dim"]) |
| 87 | + assert_equal(actual_difference["datatype"], expected_difference["datatype"]) |
| 88 | + assert_equal(actual_difference["bitpix"], expected_difference["bitpix"]) |
| 89 | + np.testing.assert_array_equal(actual_difference["pixdim"], expected_difference["pixdim"]) |
| 90 | + assert_equal(actual_difference["slice_end"], expected_difference["slice_end"]) |
| 91 | + assert_equal(actual_difference["xyzt_units"], expected_difference["xyzt_units"]) |
| 92 | + assert_equal(actual_difference["cal_max"], expected_difference["cal_max"]) |
| 93 | + assert_equal(actual_difference["descrip"], expected_difference["descrip"]) |
| 94 | + assert_equal(actual_difference["qform_code"], expected_difference["qform_code"]) |
| 95 | + assert_equal(actual_difference["sform_code"], expected_difference["sform_code"]) |
| 96 | + assert_equal(actual_difference["quatern_b"], expected_difference["quatern_b"]) |
| 97 | + assert_equal(actual_difference["quatern_c"], expected_difference["quatern_c"]) |
| 98 | + assert_equal(actual_difference["quatern_d"], expected_difference["quatern_d"]) |
| 99 | + assert_equal(actual_difference["qoffset_x"], expected_difference["qoffset_x"]) |
| 100 | + assert_equal(actual_difference["qoffset_y"], expected_difference["qoffset_y"]) |
| 101 | + assert_equal(actual_difference["qoffset_z"], expected_difference["qoffset_z"]) |
| 102 | + np.testing.assert_array_equal(actual_difference["srow_x"], expected_difference["srow_x"]) |
| 103 | + np.testing.assert_array_equal(actual_difference["srow_y"], expected_difference["srow_y"]) |
| 104 | + np.testing.assert_array_equal(actual_difference["srow_z"], expected_difference["srow_z"]) |
0 commit comments