Mercurial > hg > auditok
comparison tests/test_signal.py @ 257:b3095d23d0c3
Add tests for signal operations
author | Amine Sehili <amine.sehili@gmail.com> |
---|---|
date | Thu, 05 Sep 2019 20:12:52 +0100 |
parents | |
children | 5f1859160fd7 |
comparison
equal
deleted
inserted
replaced
256:6dcfe7bf1c94 | 257:b3095d23d0c3 |
---|---|
1 from unittest import TestCase | |
2 from array import array as array_ | |
3 from genty import genty, genty_dataset | |
4 import numpy as np | |
5 from auditok import signal as signal_ | |
6 from auditok import signal_numpy | |
7 | |
8 | |
9 @genty | |
10 class TestSignal(TestCase): | |
11 def setUp(self): | |
12 self.data = b"012345679ABC" | |
13 self.numpy_fmt = {"b": np.int8, "h": np.int16, "i": np.int32} | |
14 | |
15 @genty_dataset( | |
16 int8=("b", [48, 49, 50, 51, 52, 53, 54, 55, 57, 65, 66, 67]), | |
17 int16=("h", [12592, 13106, 13620, 14134, 16697, 17218]), | |
18 int32=("i", [858927408, 926299444, 1128415545]), | |
19 ) | |
20 def test_to_array(self, fmt, expected): | |
21 resutl = signal_.to_array(self.data, fmt) | |
22 expected = array_(fmt, expected) | |
23 self.assertEqual(resutl, expected) | |
24 resutl_numpy = signal_numpy.to_array(self.data, self.numpy_fmt[fmt]) | |
25 self.assertTrue(all(resutl_numpy == expected)) | |
26 self.assertEqual(resutl_numpy.dtype, np.float64) | |
27 | |
28 @genty_dataset( | |
29 int8_1channel_select_0=( | |
30 "b", | |
31 1, | |
32 0, | |
33 [48, 49, 50, 51, 52, 53, 54, 55, 57, 65, 66, 67], | |
34 ), | |
35 int8_2channel_select_0=("b", 2, 0, [48, 50, 52, 54, 57, 66]), | |
36 int8_3channel_select_0=("b", 3, 0, [48, 51, 54, 65]), | |
37 int8_3channel_select_1=("b", 3, 1, [49, 52, 55, 66]), | |
38 int8_3channel_select_2=("b", 3, 2, [50, 53, 57, 67]), | |
39 int8_4channel_select_0=("b", 4, 0, [48, 52, 57]), | |
40 int16_1channel_select_0=( | |
41 "h", | |
42 1, | |
43 0, | |
44 [12592, 13106, 13620, 14134, 16697, 17218], | |
45 ), | |
46 int16_2channel_select_0=("h", 2, 0, [12592, 13620, 16697]), | |
47 int16_2channel_select_1=("h", 2, 1, [13106, 14134, 17218]), | |
48 int16_3channel_select_0=("h", 3, 0, [12592, 14134]), | |
49 int16_3channel_select_1=("h", 3, 1, [13106, 16697]), | |
50 int16_3channel_select_2=("h", 3, 2, [13620, 17218]), | |
51 int32_1channel_select_0=( | |
52 "i", | |
53 1, | |
54 0, | |
55 [858927408, 926299444, 1128415545], | |
56 ), | |
57 int32_3channel_select_0=("i", 3, 0, [858927408]), | |
58 int32_3channel_select_1=("i", 3, 1, [926299444]), | |
59 int32_3channel_select_2=("i", 3, 2, [1128415545]), | |
60 ) | |
61 def test_extract_single_channel(self, fmt, channels, selected, expected): | |
62 resutl = signal_.extract_single_channel( | |
63 self.data, fmt, channels, selected | |
64 ) | |
65 expected = array_(fmt, expected) | |
66 self.assertEqual(resutl, expected) | |
67 resutl_numpy = signal_numpy.extract_single_channel( | |
68 self.data, self.numpy_fmt[fmt], channels, selected | |
69 ) | |
70 self.assertTrue(all(resutl_numpy == expected)) | |
71 self.assertEqual(resutl_numpy.dtype, np.float64) | |
72 | |
73 @genty_dataset( | |
74 int8_2channel=("b", 2, [48, 50, 52, 54, 61, 66]), | |
75 int8_4channel=("b", 4, [50, 54, 64]), | |
76 int16_1channel=("h", 1, [12592, 13106, 13620, 14134, 16697, 17218]), | |
77 int16_2channel=("h", 2, [12849, 13877, 16958]), | |
78 int32_3channel=("i", 3, [971214132]), | |
79 ) | |
80 def test_average_channels(self, fmt, channels, expected): | |
81 resutl = signal_.average_channels(self.data, fmt, channels) | |
82 expected = array_(fmt, expected) | |
83 self.assertEqual(resutl, expected) | |
84 resutl_numpy = signal_numpy.average_channels( | |
85 self.data, self.numpy_fmt[fmt], channels | |
86 ) | |
87 self.assertTrue(all(resutl_numpy == expected)) | |
88 self.assertEqual(resutl_numpy.dtype, np.float64) | |
89 | |
90 @genty_dataset( | |
91 int8_1channel=( | |
92 "b", | |
93 1, | |
94 [[48, 49, 50, 51, 52, 53, 54, 55, 57, 65, 66, 67]], | |
95 ), | |
96 int8_2channel=( | |
97 "b", | |
98 2, | |
99 [[48, 50, 52, 54, 57, 66], [49, 51, 53, 55, 65, 67]], | |
100 ), | |
101 int8_4channel=( | |
102 "b", | |
103 4, | |
104 [[48, 52, 57], [49, 53, 65], [50, 54, 66], [51, 55, 67]], | |
105 ), | |
106 int16_2channel=( | |
107 "h", | |
108 2, | |
109 [[12592, 13620, 16697], [13106, 14134, 17218]], | |
110 ), | |
111 int32_3channel=("i", 3, [[858927408], [926299444], [1128415545]]), | |
112 ) | |
113 def test_separate_channels(self, fmt, channels, expected): | |
114 resutl = signal_.separate_channels(self.data, fmt, channels) | |
115 expected = [array_(fmt, exp) for exp in expected] | |
116 self.assertEqual(resutl, expected) | |
117 | |
118 resutl_numpy = signal_numpy.separate_channels( | |
119 self.data, self.numpy_fmt[fmt], channels | |
120 ) | |
121 self.assertTrue((resutl_numpy == expected).all()) | |
122 self.assertEqual(resutl_numpy.dtype, np.float64) | |
123 | |
124 @genty_dataset( | |
125 simple=([300, 320, 400, 600], 52.506639194632434), | |
126 zero=([0], -200), | |
127 zeros=([0, 0, 0], -200), | |
128 ) | |
129 def test_calculate_energy_single_channel(self, x, expected): | |
130 energy = signal_.calculate_energy_single_channel(x) | |
131 self.assertEqual(energy, expected) | |
132 energy = signal_numpy.calculate_energy_single_channel(x) | |
133 self.assertEqual(energy, expected) | |
134 | |
135 @genty_dataset( | |
136 min_=( | |
137 [[300, 320, 400, 600], [150, 160, 200, 300]], | |
138 min, | |
139 46.48603928135281, | |
140 ), | |
141 max_=( | |
142 [[300, 320, 400, 600], [150, 160, 200, 300]], | |
143 max, | |
144 52.506639194632434, | |
145 ), | |
146 ) | |
147 def test_calculate_energy_multichannel(self, x, aggregation_fn, expected): | |
148 energy = signal_.calculate_energy_multichannel(x, aggregation_fn) | |
149 self.assertEqual(energy, expected) | |
150 | |
151 energy = signal_numpy.calculate_energy_multichannel(x, aggregation_fn) | |
152 self.assertEqual(energy, expected) |