annotate tests/test_signal.py @ 455:7dae98b84cdd tip master

Merge branch 'master' of https://github.com/amsehili/auditok
author www-data <www-data@c4dm-xenserv-virt2.eecs.qmul.ac.uk>
date Tue, 03 Dec 2024 09:18:01 +0000
parents f56b4d8adfb8
children
rev   line source
amine@403 1 from array import array as array_
amine@403 2
amine@403 3 import numpy as np
amine@400 4 import pytest
amine@403 5
amine@405 6 from auditok import signal
amine@405 7
amine@405 8 # from auditok import signal as signal_
amine@405 9 # from auditok import signal
amine@257 10
amine@257 11
amine@400 12 @pytest.fixture
amine@400 13 def setup_data():
amine@400 14 return b"012345679ABC"
amine@257 15
amine@257 16
amine@400 17 @pytest.mark.parametrize(
amine@400 18 "sample_width, expected",
amine@400 19 [
amine@405 20 (
amine@405 21 1,
amine@405 22 [[48, 49, 50, 51, 52, 53, 54, 55, 57, 65, 66, 67]],
amine@405 23 ), # int8_1channel
amine@400 24 (
amine@400 25 1,
amine@400 26 [[48, 50, 52, 54, 57, 66], [49, 51, 53, 55, 65, 67]],
amine@405 27 ), # int8_2channel
amine@405 28 (
amine@405 29 1,
amine@405 30 [[48, 52, 57], [49, 53, 65], [50, 54, 66], [51, 55, 67]],
amine@405 31 ), # int8_4channel
amine@405 32 (2, [[12592, 13106, 13620, 14134, 16697, 17218]]), # int16_1channel
amine@405 33 (2, [[12592, 13620, 16697], [13106, 14134, 17218]]), # int16_2channel
amine@405 34 (4, [[858927408, 926299444, 1128415545]]), # int32_1channel
amine@400 35 (4, [[858927408], [926299444], [1128415545]]), # int32_3channel
amine@400 36 ],
amine@400 37 ids=[
amine@405 38 "int8_1channel",
amine@405 39 "int8_2channel",
amine@405 40 "int8_4channel",
amine@405 41 "int16_1channel",
amine@405 42 "int16_2channel",
amine@405 43 "int32_1channel",
amine@400 44 "int32_3channel",
amine@400 45 ],
amine@400 46 )
amine@400 47 def test_to_array(setup_data, sample_width, expected):
amine@400 48 data = setup_data
amine@400 49 channels = len(expected)
amine@405 50 expected = np.array(expected)
amine@405 51 result = signal.to_array(data, sample_width, channels)
amine@405 52 assert (result == expected).all()
amine@405 53 assert result.dtype == np.float64
amine@405 54 assert result.shape == expected.shape
amine@400 55
amine@400 56
amine@400 57 @pytest.mark.parametrize(
amine@405 58 "x, aggregation_fn, expected",
amine@400 59 [
amine@405 60 ([300, 320, 400, 600], None, 52.506639194632434), # mono_simple
amine@405 61 ([0, 0, 0], None, -200), # mono_zeros
amine@400 62 (
amine@405 63 [[300, 320, 400, 600], [150, 160, 200, 300]],
amine@405 64 None,
amine@405 65 [52.506639194632434, 46.48603928135281],
amine@405 66 ), # stereo_no_agg
amine@400 67 (
amine@405 68 [[300, 320, 400, 600], [150, 160, 200, 300]],
amine@405 69 np.mean,
amine@405 70 49.49633923799262,
amine@405 71 ), # stereo_mean_agg
amine@400 72 (
amine@405 73 [[300, 320, 400, 600], [150, 160, 200, 300]],
amine@405 74 min,
amine@405 75 46.48603928135281,
amine@405 76 ), # stereo_min_agg
amine@405 77 (
amine@405 78 [[300, 320, 400, 600], [150, 160, 200, 300]],
amine@405 79 max,
amine@405 80 52.506639194632434,
amine@405 81 ), # stereo_max_agg
amine@400 82 ],
amine@400 83 ids=[
amine@405 84 "mono_simple",
amine@405 85 "mono_zeros",
amine@405 86 "stereo_no_agg",
amine@405 87 "mean_agg",
amine@405 88 "stereo_min_agg",
amine@405 89 "stereo_max_agg",
amine@400 90 ],
amine@400 91 )
amine@405 92 def test_calculate_energy(x, aggregation_fn, expected):
amine@405 93 energy = signal.calculate_energy(x, aggregation_fn)
amine@405 94 assert (energy == expected).all()