annotate test/test_collect.py @ 122:26f75b221828

Make sure M_PI is defined when using VC++
author Chris Cannam
date Tue, 23 Jun 2015 10:48:52 +0100
parents 2370b942cd32
children d3126719b094
rev   line source
Chris@71 1
Chris@71 2 import vamp
Chris@71 3 import numpy as np
Chris@101 4 import vamp.frames as fr
Chris@71 5
Chris@82 6 plugin_key = "vamp-test-plugin:vamp-test-plugin"
Chris@82 7 plugin_key_freq = "vamp-test-plugin:vamp-test-plugin-freq"
Chris@71 8
Chris@112 9 rate = 44100.0
Chris@71 10
Chris@71 11 # Throughout this file we have the assumption that the plugin gets run with a
Chris@71 12 # blocksize of 1024, and with a step of 1024 for the time-domain version or 512
Chris@71 13 # for the frequency-domain one. That is certainly expected to be the norm for a
Chris@71 14 # plugin like this that declares no preference, and the Python Vamp module is
Chris@71 15 # expected to follow the norm
Chris@71 16
Chris@71 17 blocksize = 1024
Chris@92 18 eps = 1e-6
Chris@71 19
Chris@71 20 def input_data(n):
Chris@71 21 # start at 1, not 0 so that all elts are non-zero
Chris@71 22 return np.arange(n) + 1
Chris@71 23
Chris@71 24 def test_collect_runs_at_all():
Chris@88 25 buf = input_data(blocksize * 10)
Chris@117 26 rdict = vamp.collect(buf, rate, plugin_key, "input-timestamp")
Chris@117 27 step, results = rdict["vector"]
Chris@88 28 assert results != []
Chris@88 29
Chris@96 30 ##!!! add test for default output
Chris@96 31
Chris@88 32 def test_collect_one_sample_per_step():
Chris@88 33 buf = input_data(blocksize * 10)
Chris@117 34 rdict = vamp.collect(buf, rate, plugin_key, "input-timestamp")
Chris@117 35 step, results = rdict["vector"]
Chris@94 36 assert abs(float(step) - (1024.0 / rate)) < eps
Chris@88 37 assert len(results) == 10
Chris@93 38 for i in range(len(results)):
Chris@93 39 # The timestamp should be the frame number of the first frame in the
Chris@93 40 # input buffer
Chris@93 41 expected = i * blocksize
Chris@93 42 actual = results[i]
Chris@93 43 assert actual == expected
Chris@88 44
Chris@92 45 def test_collect_fixed_sample_rate():
Chris@92 46 buf = input_data(blocksize * 10)
Chris@117 47 rdict = vamp.collect(buf, rate, plugin_key, "curve-fsr")
Chris@117 48 step, results = rdict["vector"]
Chris@94 49 assert abs(float(step) - 0.4) < eps
Chris@92 50 assert len(results) == 10
Chris@93 51 for i in range(len(results)):
Chris@93 52 assert abs(results[i] - i * 0.1) < eps
Chris@92 53
Chris@92 54 def test_collect_fixed_sample_rate_2():
Chris@92 55 buf = input_data(blocksize * 10)
Chris@117 56 rdict = vamp.collect(buf, rate, plugin_key, "curve-fsr-timed")
Chris@117 57 step, results = rdict["vector"]
Chris@94 58 assert abs(float(step) - 0.4) < eps
Chris@92 59 assert len(results) == 10
Chris@93 60 for i in range(len(results)):
Chris@93 61 assert abs(results[i] - i * 0.1) < eps
Chris@92 62
Chris@92 63 def test_collect_variable_sample_rate():
Chris@92 64 buf = input_data(blocksize * 10)
Chris@117 65 rdict = vamp.collect(buf, rate, plugin_key, "curve-vsr")
Chris@117 66 results = rdict["list"]
Chris@92 67 assert len(results) == 10
Chris@92 68 i = 0
Chris@92 69 for r in results:
Chris@92 70 assert r["timestamp"] == vamp.vampyhost.RealTime('seconds', i * 0.75)
Chris@92 71 assert abs(r["values"][0] - i * 0.1) < eps
Chris@92 72 i = i + 1
Chris@96 73
Chris@96 74 def test_collect_grid_one_sample_per_step():
Chris@96 75 buf = input_data(blocksize * 10)
Chris@117 76 rdict = vamp.collect(buf, rate, plugin_key, "grid-oss")
Chris@117 77 step, results = rdict["matrix"]
Chris@96 78 assert abs(float(step) - (1024.0 / rate)) < eps
Chris@96 79 assert len(results) == 10
Chris@96 80 for i in range(len(results)):
Chris@97 81 expected = np.array([ (j + i + 2.0) / 30.0 for j in range(0, 10) ])
Chris@97 82 assert (abs(results[i] - expected) < eps).all()