Maria@36: # -*- coding: utf-8 -*- Maria@36: """ Maria@36: Created on Fri Sep 1 19:11:52 2017 Maria@36: Maria@36: @author: mariapanteli Maria@36: """ Maria@36: Maria@36: import pytest Maria@36: Maria@36: import numpy as np Maria@36: Maria@36: import scripts.PitchBihist as PitchBihist Maria@36: Maria@36: Maria@36: pbi = PitchBihist.PitchBihist() Maria@36: Maria@36: Maria@36: def test_hz_to_cents(): Maria@36: freq_Hz = np.array([32.703, 65.406, 55, 110]) Maria@36: freq_cents = pbi.hz_to_cents(freq_Hz) Maria@36: freq_cents_true = np.array([0, 1200, 900, 2100]) Maria@36: assert np.array_equal(freq_cents, freq_cents_true) Maria@36: Maria@36: Maria@36: def test_wrap_to_octave(): Maria@36: cents = np.array([900, 2100, 1200]) Maria@36: octave_cents = pbi.wrap_to_octave(cents) Maria@36: octave_cents_true = np.array([900, 900, 0]) Maria@36: assert np.array_equal(octave_cents, octave_cents_true) Maria@36: Maria@36: Maria@36: def test_get_melody_from_file(): Maria@36: melodia_file = 'data/sample_dataset/Melodia/mel_1_2_1.csv' Maria@36: melody = pbi.get_melody_from_file(melodia_file) Maria@36: assert len(melody) < 12. * pbi.chromasr Maria@36: Maria@36: Maria@36: def test_get_melody_matrix(): Maria@36: melody = 440 * np.ones(1000) Maria@36: melody_matrix = pbi.get_melody_matrix(melody) Maria@36: n_frames = melody_matrix.shape[1] Maria@36: assert np.array_equal(melody_matrix[45, :], np.ones(n_frames)) Maria@36: Maria@36: Maria@36: def test_bihist_from_melodia(): Maria@36: melodia_file = 'data/sample_dataset/Melodia/mel_1_2_1.csv' Maria@36: bihist = pbi.bihist_from_melodia(melodia_file, secondframedecomp=False) Maria@36: assert bihist.shape == (60, 60) Maria@36: Maria@36: Maria@36: def test_bihist_from_melodia_n_frames(): Maria@36: melodia_file = 'data/sample_dataset/Melodia/mel_1_2_1.csv' Maria@36: bihist = pbi.bihist_from_melodia(melodia_file, secondframedecomp=True) Maria@36: dur_sec = 11.5 # duration of first file in metadata.csv is > 11 seconds Maria@36: n_frames_true = np.round((dur_sec - pbi.win2sec) * 2) # for .5 sec hop size Maria@36: assert bihist.shape[1] == n_frames_true Maria@36: Maria@36: Maria@36: def test_bihistogram(): Maria@36: melody = 440 * np.ones(1000) Maria@36: melody_matrix = pbi.get_melody_matrix(melody) Maria@36: bihist = pbi.bihistogram(melody_matrix, align=False) Maria@36: assert np.array_equal(bihist, np.zeros((60, 60))) Maria@36: Maria@36: Maria@36: def test_bihistogram_values(): Maria@36: melody = np.concatenate([440 * np.ones(500), 32.703 * np.ones(500)]) Maria@36: melody_matrix = pbi.get_melody_matrix(melody) Maria@36: # melody transitions from A to C (bin 45/60 to bin 0/60) Maria@36: bihist = pbi.bihistogram(melody_matrix, align=False) Maria@36: # expect only element [45, 0] to be non-zero Maria@36: assert bihist[45, 0] > 0 and (np.sum(bihist) - bihist[45, 0]) == 0 Maria@36: Maria@36: Maria@36: