Skip to content

Commit

Permalink
Add a test for fir_filter_bank, and fix bug whereby TimeDimension was…
Browse files Browse the repository at this point in the history
… built incorrectly
  • Loading branch information
JohnVinyard committed Mar 1, 2018
1 parent b2b3d98 commit 62fa81d
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 3 deletions.
3 changes: 1 addition & 2 deletions zounds/spectral/functional.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,8 +109,7 @@ def fir_filter_bank(scale, taps, samplerate):
basis = np.zeros((len(scale), taps))
basis = ArrayWithUnits(basis, [
FrequencyDimension(scale),
TimeDimension(frequency=samplerate.frequency * taps)
])
TimeDimension(*samplerate)])

nyq = samplerate.nyquist

Expand Down
19 changes: 18 additions & 1 deletion zounds/spectral/test_functional.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import numpy as np
import unittest2
from functional import \
fft, stft, apply_scale, frequency_decomposition, phase_shift, rainbowgram
fft, stft, apply_scale, frequency_decomposition, phase_shift, rainbowgram, \
fir_filter_bank
from zounds.core import ArrayWithUnits, IdentityDimension
from zounds.synthesize import \
SilenceSynthesizer, TickSynthesizer, SineSynthesizer, FFTSynthesizer
Expand All @@ -13,6 +14,22 @@
from matplotlib import cm


class FIRFilterBankTests(unittest2.TestCase):
def test_has_correct_dimensions(self):
samplerate = SR22050()
scale = GeometricScale(
start_center_hz=20,
stop_center_hz=10000,
bandwidth_ratio=0.2,
n_bands=100)
scale.ensure_overlap_ratio(0.5)
taps = 256
filter_bank = fir_filter_bank(scale, taps, samplerate)
self.assertEqual((len(scale), taps), filter_bank.shape)
self.assertEqual(FrequencyDimension(scale), filter_bank.dimensions[0])
self.assertEqual(TimeDimension(*samplerate), filter_bank.dimensions[1])


class FrequencyDecompositionTests(unittest2.TestCase):
def test_can_decompose(self):
sr = SR22050()
Expand Down

0 comments on commit 62fa81d

Please sign in to comment.