Skip to content

Commit 8fd6995

Browse files
committed
implemented test-nib-diff
1 parent 06e8dd7 commit 8fd6995

File tree

2 files changed

+41
-17
lines changed

2 files changed

+41
-17
lines changed

nibabel/cmdline/diff.py

Lines changed: 30 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,10 @@ def diff_header_fields(key, inputs):
6060
keyed_inputs = []
6161

6262
for i in inputs: # stores each file's respective header files
63-
field_value = i[key]
63+
try:
64+
field_value = i[key]
65+
except ValueError:
66+
continue
6467

6568
try: # filter numpy arrays
6669
if np.all(np.isnan(field_value)):
@@ -69,21 +72,27 @@ def diff_header_fields(key, inputs):
6972
pass
7073

7174
for x in inputs[1:]: # compare different values, print all as soon as diff is found
72-
data_diff = diff_values(str(x[key].dtype), str(field_value.dtype))
75+
try:
76+
data_diff = diff_values(str(x[key].dtype), str(field_value.dtype))
7377

74-
if data_diff:
75-
break
78+
if data_diff:
79+
break
80+
except ValueError:
81+
continue
7682

77-
if data_diff: # prints data types if they're different and not if they're not
78-
if field_value.ndim < 1:
79-
keyed_inputs.append("{}@{}".format(field_value, field_value.dtype))
80-
elif field_value.ndim == 1:
81-
keyed_inputs.append("{}@{}".format(list(field_value), field_value.dtype))
82-
else:
83-
if field_value.ndim < 1:
84-
keyed_inputs.append("{}".format(field_value))
85-
elif field_value.ndim == 1:
86-
keyed_inputs.append("{}".format(list(field_value)))
83+
try:
84+
if data_diff: # prints data types if they're different and not if they're not
85+
if field_value.ndim < 1:
86+
keyed_inputs.append("{}@{}".format(field_value, field_value.dtype))
87+
elif field_value.ndim == 1:
88+
keyed_inputs.append("{}@{}".format(list(field_value), field_value.dtype))
89+
else:
90+
if field_value.ndim < 1:
91+
keyed_inputs.append("{}".format(field_value))
92+
elif field_value.ndim == 1:
93+
keyed_inputs.append("{}".format(list(field_value)))
94+
except UnboundLocalError:
95+
continue
8796

8897
if keyed_inputs: # sometimes keyed_inputs is empty lol
8998
comparison_input = keyed_inputs[0]
@@ -119,10 +128,15 @@ def get_headers_diff(files, opts):
119128
def get_data_diff(files):
120129

121130
data_list = [nib.load(f).get_data() for f in files]
131+
temp_bool = False
122132

123133
for a, b in itertools.combinations(data_list, 2):
124-
return diff_values(hashlib.md5(repr(a).encode('utf-8')).hexdigest(), hashlib.md5(
125-
repr(b).encode('utf-8')).hexdigest())
134+
if diff_values(hashlib.md5(repr(a).encode('utf-8')).hexdigest(), hashlib.md5(
135+
repr(b).encode('utf-8')).hexdigest()):
136+
temp_bool = True
137+
break
138+
139+
return temp_bool
126140

127141

128142
def main():

nibabel/tests/test_scripts.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,16 @@ def check_nib_ls_example4d(opts=[], hdrs_str="", other_str=""):
6565
assert_equal(fname, stdout[:len(fname)])
6666
assert_re_in(expected_re, stdout[len(fname):])
6767

68+
69+
def check_nib_diff_examples(opts=[], hdrs_str="", other_str=""):
70+
# test nib-diff script
71+
fnames = ['spmT_0001.nii.gz', 'spmT_0001_2.nii.gz']
72+
code, stdout, stderr = run_command(['nib-diff'] + fnames, check_code=False)
73+
assert_equal(stdout, "Field spmT_0001.nii.gz spmT_0001_2.nii.gz "
74+
" " + "\n" + "descrip b'SPM{T_[1066.0]} - contrast 1: AA-GG' b'SPM{T_[1092.0]}"
75+
" - contrast 1: gg-tt' " + "\n" + "DATA: These files are identical!")
76+
77+
6878
@script_test
6979
def test_nib_ls():
7080
yield check_nib_ls_example4d
@@ -130,7 +140,7 @@ def test_nib_ls_multiple():
130140

131141
@script_test
132142
def test_nib_diff():
133-
raise NotImplementedError("TODO")
143+
yield check_nib_diff_examples
134144

135145

136146
@script_test

0 commit comments

Comments
 (0)