Mercurial > hg > plosone_underreview
diff tests/test_PitchBihist.py @ 36:3b67cd634b9a branch-tests
tests for pitch bihist, before refactoring
author | Maria Panteli |
---|---|
date | Thu, 14 Sep 2017 14:16:29 +0100 |
parents | |
children | 2cc444441f42 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test_PitchBihist.py Thu Sep 14 14:16:29 2017 +0100 @@ -0,0 +1,75 @@ +# -*- coding: utf-8 -*- +""" +Created on Fri Sep 1 19:11:52 2017 + +@author: mariapanteli +""" + +import pytest + +import numpy as np + +import scripts.PitchBihist as PitchBihist + + +pbi = PitchBihist.PitchBihist() + + +def test_hz_to_cents(): + freq_Hz = np.array([32.703, 65.406, 55, 110]) + freq_cents = pbi.hz_to_cents(freq_Hz) + freq_cents_true = np.array([0, 1200, 900, 2100]) + assert np.array_equal(freq_cents, freq_cents_true) + + +def test_wrap_to_octave(): + cents = np.array([900, 2100, 1200]) + octave_cents = pbi.wrap_to_octave(cents) + octave_cents_true = np.array([900, 900, 0]) + assert np.array_equal(octave_cents, octave_cents_true) + + +def test_get_melody_from_file(): + melodia_file = 'data/sample_dataset/Melodia/mel_1_2_1.csv' + melody = pbi.get_melody_from_file(melodia_file) + assert len(melody) < 12. * pbi.chromasr + + +def test_get_melody_matrix(): + melody = 440 * np.ones(1000) + melody_matrix = pbi.get_melody_matrix(melody) + n_frames = melody_matrix.shape[1] + assert np.array_equal(melody_matrix[45, :], np.ones(n_frames)) + + +def test_bihist_from_melodia(): + melodia_file = 'data/sample_dataset/Melodia/mel_1_2_1.csv' + bihist = pbi.bihist_from_melodia(melodia_file, secondframedecomp=False) + assert bihist.shape == (60, 60) + + +def test_bihist_from_melodia_n_frames(): + melodia_file = 'data/sample_dataset/Melodia/mel_1_2_1.csv' + bihist = pbi.bihist_from_melodia(melodia_file, secondframedecomp=True) + dur_sec = 11.5 # duration of first file in metadata.csv is > 11 seconds + n_frames_true = np.round((dur_sec - pbi.win2sec) * 2) # for .5 sec hop size + assert bihist.shape[1] == n_frames_true + + +def test_bihistogram(): + melody = 440 * np.ones(1000) + melody_matrix = pbi.get_melody_matrix(melody) + bihist = pbi.bihistogram(melody_matrix, align=False) + assert np.array_equal(bihist, np.zeros((60, 60))) + + +def test_bihistogram_values(): + melody = np.concatenate([440 * np.ones(500), 32.703 * np.ones(500)]) + melody_matrix = pbi.get_melody_matrix(melody) + # melody transitions from A to C (bin 45/60 to bin 0/60) + bihist = pbi.bihistogram(melody_matrix, align=False) + # expect only element [45, 0] to be non-zero + assert bihist[45, 0] > 0 and (np.sum(bihist) - bihist[45, 0]) == 0 + + +