Skip to content

Commit

Permalink
adding some test and forcing the installtion of fixed version for eac…
Browse files Browse the repository at this point in the history
…h python package.
  • Loading branch information
mohabouje committed May 2, 2019
1 parent f8d717a commit e49cef7
Show file tree
Hide file tree
Showing 7 changed files with 49 additions and 56 deletions.
10 changes: 5 additions & 5 deletions include/edsp/windowing/flattop.hpp
Expand Up @@ -46,11 +46,11 @@ namespace edsp { namespace windowing {
constexpr void flattop(OutputIt first, OutputIt last) {
using value_type = meta::value_type_t<OutputIt>;
using size_type = meta::diff_type_t<OutputIt>;
constexpr auto a0 = static_cast<value_type>(0.2156);
constexpr auto a1 = static_cast<value_type>(0.4160);
constexpr auto a2 = static_cast<value_type>(0.2781);
constexpr auto a3 = static_cast<value_type>(0.0836);
constexpr auto a4 = static_cast<value_type>(0.0069);
constexpr auto a0 = static_cast<value_type>(0.21557895);
constexpr auto a1 = static_cast<value_type>(0.41663158);
constexpr auto a2 = static_cast<value_type>(0.277263158);
constexpr auto a3 = static_cast<value_type>(0.083578947);
constexpr auto a4 = static_cast<value_type>(0.006947368);
const auto size = static_cast<size_type>(std::distance(first, last));
const auto factor = constants<value_type>::two_pi / static_cast<value_type>(size - 1);
for (size_type i = 0; i < size; ++i, ++first) {
Expand Down
7 changes: 1 addition & 6 deletions mac_travis.sh
Expand Up @@ -38,13 +38,8 @@ fi
showinfo "Running the tests..."
cd ${TRAVIS_BUILD_DIR}
pip3 install --upgrade pip
pip3 install -U numpy
pip3 install -U scipy
pip3 install -U spectrum
pip3 install -U cython
pip3 install -U madmom
pip3 install -r requirements.txt
pip3 install git+https://github.com/sdrobert/pydrobert-speech.git#egg=pydrobert-speech
pip3 install eyed3 pydub pyaudioanalysis pytaglib pysndfile samplerate soundfile
python3 test/
if [ $? -ne 0 ]; then
error "Error: there are some tests that failed!"
Expand Down
13 changes: 13 additions & 0 deletions requirements.txt
@@ -0,0 +1,13 @@
scipy==1.2.1
madmom==0.16.1
setuptools==39.0.1
samplerate==0.1.0
spectrum==0.7.5
pysndfile==1.3.2
pytaglib==1.4.5
SoundFile==0.10.2
numpy==1.16.1
python_dateutil==2.8.0
pyAudioAnalysis==0.2.5
eyed3
pydub
14 changes: 7 additions & 7 deletions test/algorithm_test.py
Expand Up @@ -82,12 +82,12 @@ def test_concatenate(self):
reference = np.concatenate((first, second))
np.testing.assert_array_almost_equal(generated, reference)

# def test_pad(self):
# for data in generate_inputs(self.__number_inputs, self.__minimum_size, self.__maximum_size):
# size = randint(len(data), self.__maximum_size)
# generated = algorithm.pad(data, size)
# reference = np.pad(data, (0, size - len(data) % size), mode='constant', constant_values=0)
# np.testing.assert_array_almost_equal(generated, reference)
def test_pad(self):
for data in generate_inputs(self.__number_inputs, self.__minimum_size, self.__maximum_size):
size = randint(len(data), self.__maximum_size)
generated = algorithm.pad(data, size)
reference = np.pad(data, (0, size - len(data) % size), mode='constant', constant_values=0)
np.testing.assert_array_almost_equal(generated, reference)

def test_logarithmic_space(self):
for _ in range(1, self.__number_inputs):
Expand Down Expand Up @@ -134,7 +134,7 @@ def test_equal(self):
duplicate = np.copy(data)
self.assertTrue(algorithm.equal(data, duplicate))

editions = random.randint(0, len(data) - 1)
editions = random.randint(1, len(data) - 1)
indexes = random.sample(range(0, len(data) - 1), editions)
duplicate[indexes] = 2 * duplicate[indexes]
self.assertFalse(algorithm.equal(data, duplicate))
2 changes: 1 addition & 1 deletion test/io_test.py
Expand Up @@ -180,4 +180,4 @@ def test_resampler(self):

res = samplerate.Resampler(eq[algorithm], channels=channels)
reference = res.process(data, ratio, end_of_input=False)
np.testing.assert_array_almost_equal(resampled, reference, 3)
np.testing.assert_array_almost_equal(np.round(resampled), np.round(reference))
14 changes: 7 additions & 7 deletions test/spectral_features_test.py
Expand Up @@ -68,7 +68,7 @@ def test_spectral_flux(self):
data = (data + utility.epsilon) * 100
generated = spectral.spectral_flux(data, data)
reference = extractor.stSpectralFlux(data, data)
self.assertAlmostEqual(generated, reference)
self.assertAlmostEqual(generated, reference.item(), 6)

def test_spectral_rolloff(self):
for fs, data in self.__database:
Expand All @@ -77,39 +77,39 @@ def test_spectral_rolloff(self):
data = (data + utility.epsilon) * 100
generated = spectral.spectral_rolloff(data, percentage)
reference = extractor.stSpectralRollOff(data, percentage, fs)
self.assertAlmostEqual(generated, reference)
self.assertAlmostEqual(generated, reference.item(), 6)

def test_spectral_flatness(self):
for fs, data in self.__database:
_, data = scipy.signal.periodogram(data, fs)
data = (data + utility.epsilon) * 100
generated = spectral.spectral_flatness(data)
reference = self.__compute_flatness(data)
self.assertAlmostEqual(generated, reference)
self.assertAlmostEqual(generated, reference.item(), 6)

def test_spectral_crest(self):
for fs, data in self.__database:
_, data = scipy.signal.periodogram(data, fs)
data = (data + utility.epsilon) * 100
generated = spectral.spectral_crest(data)
reference = self.__compute_crest(data)
self.assertAlmostEqual(generated, reference)
self.assertAlmostEqual(generated, reference.item(), 6)

def test_spectral_kurtosis(self):
for fs, data in self.__database:
_, data = scipy.signal.periodogram(data, fs)
data = (data + utility.epsilon) * 100
generated = spectral.spectral_kurtosis(data)
reference = scipy.stats.mstats.kurtosis(data, fisher=False)
self.assertAlmostEqual(generated, reference)
self.assertAlmostEqual(generated, reference.item(), 6)

def test_spectral_skewness(self):
for fs, data in self.__database:
_, data = scipy.signal.periodogram(data, fs)
data = (data + utility.epsilon) * 100
generated = spectral.spectral_skewness(data)
reference = scipy.stats.mstats.skew(data)
self.assertAlmostEqual(generated, reference)
self.assertAlmostEqual(generated, reference.item(), 6)

def test_spectral_entropy(self):
import math
Expand All @@ -118,4 +118,4 @@ def test_spectral_entropy(self):
data = (data + utility.epsilon) * 100
generated = spectral.spectral_entropy(data)
reference = self.__spectral_entropy(data)
self.assertAlmostEqual(generated, reference)
self.assertAlmostEqual(generated, reference.item(), 6)
45 changes: 15 additions & 30 deletions test/windowing_test.py
Expand Up @@ -6,77 +6,62 @@


class TestWindowingMethods(unittest.TestCase):

# TODO: implement test for the welch-window

def test_hamming(self):
size = randint(0, 1000)
generated = windowing.hamming(size)
reference = np.hamming(size)
for g, r in zip(generated, reference):
self.assertAlmostEqual(g, r)
np.testing.assert_array_almost_equal(reference, generated)

def test_hanning(self):
size = randint(0, 1000)
generated = windowing.hanning(size)
reference = np.hanning(size)
for g, r in zip(generated, reference):
self.assertAlmostEqual(g, r)
np.testing.assert_array_almost_equal(reference, generated)

def test_bartlett(self):
size = randint(0, 1000)
generated = windowing.bartlett(size)
reference = np.bartlett(size)
for g, r in zip(generated, reference):
self.assertAlmostEqual(g, r)
np.testing.assert_array_almost_equal(reference, generated)

def test_blackman(self):
size = randint(0, 1000)
generated = windowing.blackman(size)
reference = np.blackman(size)
for g, r in zip(generated, reference):
self.assertAlmostEqual(g, r)
np.testing.assert_array_almost_equal(reference, generated)

def test_blackman_harris(self):
size = randint(0, 1000)
generated = windowing.blackman_harris(size)
reference = signal.blackmanharris(size)
for g, r in zip(generated, reference):
self.assertAlmostEqual(g, r)
np.testing.assert_array_almost_equal(reference, generated)

# Warning: The returns value of the flat-top window differ depending of the version of scipy
# def test_triangular(self):
# size = randint(0, 1000)
# generated = windowing.triangular(size)
# reference = spw.triang(size)
# for g, r in zip(generated, reference):
# self.assertAlmostEqual(g, r)
# reference = signal.triang(size)
# np.testing.assert_array_almost_equal(reference, generated)

def test_blackman_nuttall(self):
size = randint(0, 1000)
generated = windowing.blackman_nutall(size)
reference = signal.nuttall(size)
for g, r in zip(generated, reference):
self.assertAlmostEqual(g, r)
np.testing.assert_array_almost_equal(reference, generated)

def test_boxcar(self):
size = randint(0, 1000)
generated = windowing.boxcar(size)
reference = signal.boxcar(size)
for g, r in zip(generated, reference):
self.assertAlmostEqual(g, r)
np.testing.assert_array_almost_equal(reference, generated)

# # Warning: The returns value of the flat-top window differ depending of the version of scipy
# def test_flattop(self):
# size = randint(0, 1000)
# generated = windowing.flattop(size)
# reference = signal.flattop(size)
# for g, r in zip(generated, reference):
# self.assertAlmostEqual(g, r)
def test_flattop(self):
size = randint(0, 1000)
generated = windowing.flattop(size)
reference = signal.flattop(size)
np.testing.assert_array_almost_equal(reference, generated)

def test_rectangular(self):
size = randint(0, 1000)
generated = windowing.rectangular(size)
reference = np.ones(shape=(size,))
for g, r in zip(generated, reference):
self.assertAlmostEqual(g, r)
np.testing.assert_array_almost_equal(reference, generated)

0 comments on commit e49cef7

Please sign in to comment.