/
CythonOptTest.py
55 lines (45 loc) · 1.6 KB
/
CythonOptTest.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import os.path
import unittest
import numpy as np
import scipy as sp
from cython_opt import tensor_fit
#Test info
DATA = "test_data"
SIGNALS = "signal.npy"
OLS = "ols_fit.npy"
DESIGN = "design_matrix.npy"
MINS = "mins.npy"
EXPECTED = "tensors.npy"
FILES = [SIGNALS, OLS, DESIGN, MINS, EXPECTED]
class CythonOptTest(unittest.TestCase):
"""
Unit tests for tensor fit c extension.
"""
def setUp(self):
"""
Initializes arrays
"""
self._signals, self._ols, self._design, self._mins, self._expected = [np.load(os.path.join(DATA, file_name)) for file_name in FILES]
def test_tensor_fit(self):
"""
tests tensor fit function.
"""
min_signal = self._mins[0]
min_diffusivity = self._mins[1]
result = tensor_fit(self._ols, self._design, self._signals, min_signal, min_diffusivity)
expected_eigs = np.array([np.sort(arr[0]) for arr in self._expected])
result_eigs = np.array([np.sort(arr[0]) for arr in result])
self.assertTrue(np.allclose(expected_eigs, result_eigs))
def test_full_tensor(self):
"""
Tests full signal results.
"""
min_signal = self._mins[0]
min_diffusivity = self._mins[1]
full_signals = np.load("signal_full.npy")
expected_eigs = np.load("expected_full.npy")
result = tensor_fit(self._ols, self._design, full_signals, min_signal, min_diffusivity)
result_eigs = np.array([np.sort(arr[0]) for arr in result])
self.assertTrue(np.allclose(expected_eigs, result_eigs))
if __name__ == "__main__":
unittest.main()