m@2: # -*- coding: utf-8 -*- m@2: """ m@2: Created on Fri Sep 1 19:11:52 2017 m@2: m@2: @author: mariapanteli m@2: """ m@2: m@2: import pytest m@2: m@2: import numpy as np m@2: Maria@3: import scripts.load_features as load_features m@2: m@2: feat_loader = load_features.FeatureLoader(win2sec=8) m@2: Maria@3: m@2: def test_get_music_idx_from_bounds(): Maria@3: bounds = np.array([['0', '10.5', 'm']])#, Maria@3: #['10.5', '12.0', 's'], Maria@3: #['12.0', '30.0', 'm']]) Maria@3: sr = feat_loader.framessr2 Maria@3: music_bounds = feat_loader.get_music_idx_from_bounds(bounds, sr=sr) Maria@3: # upper bound minus half window size Maria@3: half_win_sec = 4.0 # assume 8-second window Maria@3: music_bounds_true = np.arange(np.round(sr * (np.float(bounds[-1, 1]) - half_win_sec)), dtype=int) Maria@3: assert np.array_equal(music_bounds, music_bounds_true) Maria@3: Maria@3: Maria@3: def test_get_music_idx_from_bounds_short_segment(): Maria@3: # anything less than half window size is not processed Maria@3: bounds = np.array([['0', '3.8', 'm']]) Maria@3: sr = feat_loader.framessr2 Maria@3: music_bounds = feat_loader.get_music_idx_from_bounds(bounds, sr=sr) Maria@3: music_bounds_true = np.array([]) Maria@3: assert np.array_equal(music_bounds, music_bounds_true) Maria@3: Maria@3: Maria@3: def test_get_music_idx_from_bounds_mix_segments(): m@2: bounds = np.array([['0', '10.5', 'm'], Maria@3: ['10.5', '3.0', 's'], Maria@3: ['13.5', '5.0', 'm']]) m@2: sr = feat_loader.framessr2 m@2: music_bounds = feat_loader.get_music_idx_from_bounds(bounds, sr=sr) Maria@3: music_bounds_true = np.concatenate([np.arange(np.round(sr * (10.5-4.0)), dtype=int), Maria@3: np.arange(np.round(sr * (13.5-4.0)), np.round(sr * (18.5-4.0)), dtype=int)]) m@2: assert np.array_equal(music_bounds, music_bounds_true) Maria@3: