Skip to content

Commit 9da49dc

Browse files
committed
TEST: Add more BV tests.
1 parent d2929fc commit 9da49dc

File tree

5 files changed

+74
-5
lines changed

5 files changed

+74
-5
lines changed

nibabel/brainvoyager/bv.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -672,7 +672,7 @@ def get_base_affine(self):
672672
if not self.get_xflip():
673673
# make the BV internal Z axis neurological (left-is-left);
674674
# not default in BV files!
675-
zooms[0] *= -1
675+
zooms = (-zooms[0], zooms[1], zooms[2])
676676

677677
# compute the rotation
678678
rot = np.zeros((3, 3))

nibabel/brainvoyager/bv_vmr.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ def get_base_affine(self):
163163
if not self.get_xflip():
164164
# make the BV internal Z axis neurological (left-is-left);
165165
# not default in BV files!
166-
zooms[0] *= -1
166+
zooms = (-zooms[0], zooms[1], zooms[2])
167167

168168
# compute the rotation
169169
rot = np.zeros((3, 3))

nibabel/brainvoyager/tests/test_bv.py

+33-2
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@
1515
from ..bv import (readCString, parse_BV_header, pack_BV_header, BvFileHeader,
1616
calc_BV_header_size, _proto2default, update_BV_header,
1717
parse_st, combine_st, BvError)
18-
from ..bv_vtc import VTC_HDR_DICT_PROTO
18+
from ..bv_vtc import VTC_HDR_DICT_PROTO, BvVtcHeader
1919
from ..bv_vmr import BvVmrImage
2020
from ...testing import (assert_equal, assert_array_equal, data_path,
21-
assert_true, assert_false, assert_raises)
21+
assert_true, assert_raises)
2222
from . import BV_EXAMPLE_IMAGES, BV_EXAMPLE_HDRS
2323
from ...externals import OrderedDict
2424

@@ -270,13 +270,44 @@ def test_BvFileHeader_xflip():
270270
# should only return
271271
bv.set_xflip(True)
272272

273+
# cannot flip most BV images
273274
assert_raises(BvError, bv.set_xflip, False)
274275

275276

276277
def test_BvFileHeader_endianness():
277278
assert_raises(BvError, BvFileHeader, endianness='>')
278279

279280

281+
def test_BvFileHeader_not_implemented():
282+
bv = BvFileHeader()
283+
assert_raises(NotImplementedError, bv.get_data_shape)
284+
assert_raises(NotImplementedError, bv.set_data_shape, (1, 2, 3))
285+
286+
287+
def test_BvVtcHeader_from_header():
288+
vtc = load(vtc_file)
289+
vtc_data = vtc.get_data()
290+
291+
# try the same load through the header
292+
fread = open(vtc_file, 'rb')
293+
header = BvVtcHeader.from_fileobj(fread)
294+
image = header.data_from_fileobj(fread)
295+
assert_array_equal(vtc_data, image)
296+
fread.close()
297+
298+
299+
def test_BvVtcHeader_data_from_fileobj():
300+
vtc = load(vtc_file)
301+
vtc_data = vtc.get_data()
302+
303+
# try the same load through the header
304+
fread = open(vtc_file, 'rb')
305+
header = BvVtcHeader.from_fileobj(fread)
306+
image = header.data_from_fileobj(fread)
307+
assert_array_equal(vtc_data, image)
308+
fread.close()
309+
310+
280311
def test_parse_all_BV_headers():
281312
for images, headers in zip(BV_EXAMPLE_IMAGES, BV_EXAMPLE_HDRS):
282313
for i in range(len(images)):

nibabel/brainvoyager/tests/test_bv_vmr.py

+14-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from ..bv import BvError
1414
from ..bv_vmr import BvVmrImage, BvVmrHeader
1515
from ...testing import (assert_equal, assert_true, assert_false, assert_raises,
16-
data_path)
16+
assert_array_equal, data_path)
1717
from ...externals import OrderedDict
1818

1919
vmr_file = pjoin(data_path, 'test.vmr')
@@ -130,9 +130,22 @@ def test_BvVmrHeader_xflip():
130130
assert_true(vmr.get_xflip())
131131
vmr.set_xflip(False)
132132
assert_false(vmr.get_xflip())
133+
assert_equal(vmr._hdr_dict['lr_convention'], 2)
134+
vmr.set_xflip(True)
135+
assert_true(vmr.get_xflip())
136+
assert_equal(vmr._hdr_dict['lr_convention'], 1)
133137
vmr.set_xflip(0)
138+
assert_equal(vmr._hdr_dict['lr_convention'], 0)
134139
assert_raises(BvError, vmr.get_xflip)
135140

141+
vmr = BvVmrImage.from_filename(vmr_file)
142+
vmr.header.set_xflip(False)
143+
expected_affine = [[1., 0., 0., 0.],
144+
[0., 0., -1., -1.],
145+
[0., -1., 0., 1.],
146+
[0., 0., 0., 1.]]
147+
assert_array_equal(vmr.header.get_affine(), expected_affine)
148+
136149

137150
def test_BvVmrHeader_set_zooms():
138151
vmr = BvVmrHeader()

nibabel/brainvoyager/tests/test_bv_vtc.py

+25
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,31 @@ def test_BvVtcHeader_xflip():
115115
assert_raises(BvError, vtc.get_xflip)
116116

117117

118+
def test_BvVtcHeader_guess_framing_cube():
119+
vtc = BvVtcHeader()
120+
assert_equal(vtc._guess_framing_cube(), (256, 256, 256))
121+
vtc._hdr_dict['x_end'] = 400
122+
vtc._hdr_dict['y_end'] = 400
123+
vtc._hdr_dict['z_end'] = 400
124+
assert_equal(vtc._guess_framing_cube(), (512, 512, 512))
125+
126+
127+
def test_BvVtcHeader_zooms():
128+
vtc = BvVtcHeader()
129+
assert_equal(vtc.get_zooms(), (3.0, 3.0, 3.0))
130+
131+
# set all zooms to one value (default for VTC files)
132+
vtc.set_zooms(2)
133+
assert_equal(vtc.get_zooms(), (2.0, 2.0, 2.0))
134+
vtc.set_zooms((1.0, 1.0, 1.0))
135+
assert_equal(vtc.get_zooms(), (1.0, 1.0, 1.0))
136+
vtc.set_zooms((4, 4, 4))
137+
assert_equal(vtc.get_zooms(), (4.0, 4.0, 4.0))
138+
139+
# set zooms to different values for the three dimensions (not possible)
140+
assert_raises(BvError, vtc.set_zooms, (1.0, 2.0, 3.0))
141+
142+
118143
def test_BvVtcHeader_fileversion_error():
119144
vtc = BvVtcHeader()
120145
vtc._hdr_dict['version'] = 4

0 commit comments

Comments
 (0)