|
1 | 1 | import os |
2 | 2 | import unittest |
3 | 3 | import numpy as np |
| 4 | +from os.path import join as pjoin |
4 | 5 |
|
5 | 6 | from nibabel.externals.six import BytesIO |
6 | 7 |
|
7 | | -from nibabel.testing import suppress_warnings, clear_and_catch_warnings |
8 | | -from nibabel.testing import assert_arrays_equal, check_iteration |
9 | | -from nose.tools import assert_equal, assert_raises, assert_true |
| 8 | +from nose.tools import assert_equal |
10 | 9 |
|
| 10 | +from nibabel.testing import data_path |
11 | 11 | from .test_tractogram import assert_tractogram_equal |
12 | | -from ..tractogram import Tractogram, LazyTractogram |
13 | | -from ..tractogram_file import DataError, HeaderError, HeaderWarning |
| 12 | +from ..tractogram import Tractogram |
14 | 13 |
|
15 | 14 | from ..tck import TckFile |
16 | 15 |
|
17 | | -DATA_PATH = os.path.join(os.path.dirname(__file__), 'data') |
18 | 16 |
|
| 17 | +DATA = {} |
19 | 18 |
|
20 | | -class TestTCK(unittest.TestCase): |
21 | 19 |
|
22 | | - def setUp(self): |
23 | | - self.empty_tck_filename = os.path.join(DATA_PATH, "empty.tck") |
24 | | - # simple.tck contains only streamlines |
25 | | - self.simple_tck_filename = os.path.join(DATA_PATH, "simple.tck") |
| 20 | +def setup(): |
| 21 | + global DATA |
| 22 | + |
| 23 | + DATA['empty_tck_fname'] = pjoin(data_path, "empty.tck") |
| 24 | + # simple.trk contains only streamlines |
| 25 | + DATA['simple_tck_fname'] = pjoin(data_path, "simple.tck") |
| 26 | + DATA['simple_tck_big_endian_fname'] = pjoin(data_path, |
| 27 | + "simple_big_endian.tck") |
| 28 | + # standard.trk contains only streamlines |
| 29 | + DATA['standard_tck_fname'] = pjoin(data_path, "standard.tck") |
| 30 | + # complex.trk contains streamlines, scalars and properties |
| 31 | + # DATA['complex_tck_fname'] = pjoin(data_path, "complex.tck") |
| 32 | + |
| 33 | + DATA['streamlines'] = [np.arange(1*3, dtype="f4").reshape((1, 3)), |
| 34 | + np.arange(2*3, dtype="f4").reshape((2, 3)), |
| 35 | + np.arange(5*3, dtype="f4").reshape((5, 3))] |
| 36 | + |
| 37 | + # DATA['fa'] = [np.array([[0.2]], dtype="f4"), |
| 38 | + # np.array([[0.3], |
| 39 | + # [0.4]], dtype="f4"), |
| 40 | + # np.array([[0.5], |
| 41 | + # [0.6], |
| 42 | + # [0.6], |
| 43 | + # [0.7], |
| 44 | + # [0.8]], dtype="f4")] |
| 45 | + |
| 46 | + # DATA['colors'] = [np.array([(1, 0, 0)]*1, dtype="f4"), |
| 47 | + # np.array([(0, 1, 0)]*2, dtype="f4"), |
| 48 | + # np.array([(0, 0, 1)]*5, dtype="f4")] |
| 49 | + |
| 50 | + # DATA['mean_curvature'] = [np.array([1.11], dtype="f4"), |
| 51 | + # np.array([2.11], dtype="f4"), |
| 52 | + # np.array([3.11], dtype="f4")] |
26 | 53 |
|
27 | | - self.streamlines = [np.arange(1*3, dtype="f4").reshape((1, 3)), |
28 | | - np.arange(2*3, dtype="f4").reshape((2, 3)), |
29 | | - np.arange(5*3, dtype="f4").reshape((5, 3))] |
| 54 | + # DATA['mean_torsion'] = [np.array([1.22], dtype="f4"), |
| 55 | + # np.array([2.22], dtype="f4"), |
| 56 | + # np.array([3.22], dtype="f4")] |
30 | 57 |
|
31 | | - self.empty_tractogram = Tractogram() |
32 | | - self.simple_tractogram = Tractogram(self.streamlines) |
| 58 | + # DATA['mean_colors'] = [np.array([1, 0, 0], dtype="f4"), |
| 59 | + # np.array([0, 1, 0], dtype="f4"), |
| 60 | + # np.array([0, 0, 1], dtype="f4")] |
| 61 | + |
| 62 | + # DATA['data_per_point'] = {'colors': DATA['colors'], |
| 63 | + # 'fa': DATA['fa']} |
| 64 | + # DATA['data_per_streamline'] = {'mean_curvature': DATA['mean_curvature'], |
| 65 | + # 'mean_torsion': DATA['mean_torsion'], |
| 66 | + # 'mean_colors': DATA['mean_colors']} |
| 67 | + |
| 68 | + DATA['empty_tractogram'] = Tractogram(affine_to_rasmm=np.eye(4)) |
| 69 | + DATA['simple_tractogram'] = Tractogram(DATA['streamlines'], |
| 70 | + affine_to_rasmm=np.eye(4)) |
| 71 | + # DATA['complex_tractogram'] = Tractogram(DATA['streamlines'], |
| 72 | + # DATA['data_per_streamline'], |
| 73 | + # DATA['data_per_point'], |
| 74 | + # affine_to_rasmm=np.eye(4)) |
| 75 | + |
| 76 | + |
| 77 | +class TestTCK(unittest.TestCase): |
33 | 78 |
|
34 | 79 | def test_load_empty_file(self): |
35 | 80 | for lazy_load in [False, True]: |
36 | | - tck = TckFile.load(self.empty_tck_filename, lazy_load=lazy_load) |
37 | | - assert_tractogram_equal(tck.tractogram, self.empty_tractogram) |
| 81 | + trk = TckFile.load(DATA['empty_tck_fname'], lazy_load=lazy_load) |
| 82 | + assert_tractogram_equal(trk.tractogram, DATA['empty_tractogram']) |
38 | 83 |
|
39 | 84 | def test_load_simple_file(self): |
40 | 85 | for lazy_load in [False, True]: |
41 | | - tck = TckFile.load(self.simple_tck_filename, lazy_load=lazy_load) |
42 | | - assert_tractogram_equal(tck.tractogram, self.simple_tractogram) |
| 86 | + trk = TckFile.load(DATA['simple_tck_fname'], lazy_load=lazy_load) |
| 87 | + assert_tractogram_equal(trk.tractogram, DATA['simple_tractogram']) |
43 | 88 |
|
44 | 89 | def test_write_empty_file(self): |
45 | | - tractogram = Tractogram() |
| 90 | + tractogram = Tractogram(affine_to_rasmm=np.eye(4)) |
46 | 91 |
|
47 | 92 | tck_file = BytesIO() |
48 | 93 | tck = TckFile(tractogram) |
49 | 94 | tck.save(tck_file) |
50 | 95 | tck_file.seek(0, os.SEEK_SET) |
51 | 96 |
|
52 | | - loaded_tck = TckFile.load(tck_file) |
53 | | - assert_tractogram_equal(loaded_tck.tractogram, tractogram) |
| 97 | + new_tck = TckFile.load(tck_file) |
| 98 | + assert_tractogram_equal(new_tck.tractogram, tractogram) |
54 | 99 |
|
55 | | - loaded_tck_orig = TckFile.load(self.empty_tck_filename) |
56 | | - assert_tractogram_equal(loaded_tck.tractogram, loaded_tck_orig.tractogram) |
| 100 | + new_tck_orig = TckFile.load(DATA['empty_tck_fname']) |
| 101 | + assert_tractogram_equal(new_tck.tractogram, new_tck_orig.tractogram) |
57 | 102 |
|
58 | 103 | tck_file.seek(0, os.SEEK_SET) |
59 | | - assert_equal(tck_file.read(), open(self.empty_tck_filename, 'rb').read()) |
| 104 | + assert_equal(tck_file.read(), |
| 105 | + open(DATA['empty_tck_fname'], 'rb').read()) |
60 | 106 |
|
61 | 107 | def test_write_simple_file(self): |
62 | | - tractogram = Tractogram(self.streamlines) |
| 108 | + tractogram = Tractogram(DATA['streamlines'], |
| 109 | + affine_to_rasmm=np.eye(4)) |
63 | 110 |
|
64 | 111 | tck_file = BytesIO() |
65 | 112 | tck = TckFile(tractogram) |
66 | 113 | tck.save(tck_file) |
67 | 114 | tck_file.seek(0, os.SEEK_SET) |
68 | 115 |
|
69 | | - loaded_tck = TckFile.load(tck_file) |
70 | | - assert_tractogram_equal(loaded_tck.tractogram, tractogram) |
| 116 | + new_tck = TckFile.load(tck_file) |
| 117 | + assert_tractogram_equal(new_tck.tractogram, tractogram) |
71 | 118 |
|
72 | | - loaded_tck_orig = TckFile.load(self.simple_tck_filename) |
73 | | - assert_tractogram_equal(loaded_tck.tractogram, loaded_tck_orig.tractogram) |
| 119 | + new_tck_orig = TckFile.load(DATA['simple_tck_fname']) |
| 120 | + assert_tractogram_equal(new_tck.tractogram, new_tck_orig.tractogram) |
74 | 121 |
|
75 | 122 | tck_file.seek(0, os.SEEK_SET) |
76 | | - assert_equal(tck_file.read(), open(self.simple_tck_filename, 'rb').read()) |
| 123 | + assert_equal(tck_file.read(), |
| 124 | + open(DATA['simple_tck_fname'], 'rb').read()) |
77 | 125 |
|
78 | 126 | def test_load_write_file(self): |
79 | | - for filename in [self.empty_tck_filename, self.simple_tck_filename]: |
| 127 | + for fname in [DATA['empty_tck_fname'], |
| 128 | + DATA['simple_tck_fname']]: |
80 | 129 | for lazy_load in [False, True]: |
81 | | - tck = TckFile.load(filename, lazy_load=lazy_load) |
| 130 | + tck = TckFile.load(fname, lazy_load=lazy_load) |
82 | 131 | tck_file = BytesIO() |
83 | 132 | tck.save(tck_file) |
84 | 133 |
|
85 | | - loaded_tck = TckFile.load(filename, lazy_load=False) |
| 134 | + loaded_tck = TckFile.load(fname, lazy_load=False) |
86 | 135 | assert_tractogram_equal(loaded_tck.tractogram, tck.tractogram) |
87 | 136 |
|
88 | | - # tck_file.seek(0, os.SEEK_SET) |
89 | | - # assert_equal(tck_file.read(), open(filename, 'rb').read()) |
90 | | - |
91 | 137 | # Save tractogram that has an affine_to_rasmm. |
92 | 138 | for lazy_load in [False, True]: |
93 | | - tck = TckFile.load(self.simple_tck_filename, lazy_load=lazy_load) |
| 139 | + tck = TckFile.load(DATA['simple_tck_fname'], lazy_load=lazy_load) |
94 | 140 | affine = np.eye(4) |
95 | 141 | affine[0, 0] *= -1 # Flip in X |
96 | 142 | tractogram = Tractogram(tck.streamlines, affine_to_rasmm=affine) |
|
0 commit comments