File: test_spectrogram.py

package info (click to toggle)
python-vispy 0.15.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 8,868 kB
  • sloc: python: 59,799; javascript: 6,800; makefile: 69; sh: 6
file content (42 lines) | stat: -rw-r--r-- 1,334 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# -*- coding: utf-8 -*-
import numpy as np

from vispy.scene.visuals import Spectrogram
from vispy.testing import (requires_application, TestingCanvas,
                           run_tests_if_main, raises)
from vispy.testing.image_tester import assert_image_approved


@requires_application()
def test_spectrogram():
    """Test spectrogram visual"""
    n_fft = 256
    n_freqs = n_fft // 2 + 1
    size = (100, n_freqs)
    with TestingCanvas(size=size) as c:
        np.random.seed(67853498)
        data = np.random.normal(size=n_fft * 100)
        spec = Spectrogram(data, n_fft=n_fft, step=n_fft, window=None,
                           color_scale='linear', cmap='grays')
        c.draw_visual(spec)
        # expected = np.zeros(size[::-1] + (3,))
        # expected[0] = 1.
        assert_image_approved("screenshot", "visuals/spectrogram.png")
        freqs = spec.freqs
        assert len(freqs) == n_freqs
        assert freqs[0] == 0
        assert freqs[-1] == 0.5

        # Try changing all properties
        spec.n_fft = 128
        spec.step = 128
        spec.fs = 2
        spec.window = 'hann'
        spec.normalize = True
        spec.color_scale = 'log'

        # Check color scale can be only 'log' or 'linear'
        with raises(ValueError):
            spec.color_scale = 'line_log'

run_tests_if_main()