Skip to main content

Python wrapper for HIIR library

Project description

pyhiir

use hiir (https://github.com/unevens/hiir) library in python

HIIR is a DSP (digital signal processing) library in C++ which allows:

  • Changing the sampling rate of a signal by a factor of 2
  • Obtaining two signals with a pi/2 phase difference (Hilbert Transform)

Pyhiir offers wrappers for the hiir methods in python.

Usage Examples

Hilbert Transformer

from pyhiir.hiir import hiir
from pyhiir.allpass import Hilbert
import matplotlib.pyplot as plt
import numpy as np
from scipy import signal

if __name__=='__main__':
    h = hiir()

    # compute filter coeficients for 40db attenuation 
    # and transition band of 10% of the sampling frequency
    c = h.compute_coefs(40, .1)

    # create a hilbert transformer with allpass chains
    h = Hilbert(c)

    fi, fq = h.get_transfer_function()
    wi, hi = signal.freqz(fi.b, fi.a, fs=2)
    wq, hq = signal.freqz(fq.b, fq.a, fs=2)

    # Plot the frequency response
    plt.plot(wi, (np.angle(hi)), color='r')
    plt.plot(wq, (np.angle(hq)), color='g')
    
    # plt.plot(wi, (np.angle(hi) - np.angle(hq)), color='y')

    plt.ylabel('Phase [rad]', color='r')
    plt.xlabel('Frequency')
    plt.tick_params('y', colors='r')
    plt.show()
    
    plt.plot(wi, np.abs(hi), color='r')
    plt.plot(wq, np.abs(hq), color='g')
    plt.xlabel('Frequency')
    plt.ylabel('Magnitude [db]')
    plt.ylim(0.95, 1.05)
    plt.show()

Filter Response Filter Response

Decimator Filter:

from pyhiir.hiir import hiir
from pyhiir.allpass import LowPass
import matplotlib.pyplot as plt
import numpy as np
from scipy import signal

if __name__=='__main__':
    h = hiir()

    # compute filter coeficients for 120db attenuation 
    # and transition band of 1% of the sampling frequency
    c = h.compute_coefs(120, .01)

    # create an half-band low pass filter with allpass chains
    f = LowPass(c)

    # Now get the filter transfer function for plotting
    ff = f.get_transfer_function()
    w, h = signal.freqz(ff.b, ff.a)
    plt.grid(True)
    plt.xlabel("Normalized frequency")
    plt.ylabel("Amplitude [dB]")
    plt.plot(w / np.pi, 20 * np.log10(abs(h)), 'b')
    plt.show()

Filter Response

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyhiir-1.0.0.tar.gz (5.6 kB view hashes)

Uploaded Source

Built Distributions

pyhiir-1.0.0-pp310-pypy310_pp73-win_amd64.whl (10.7 kB view hashes)

Uploaded PyPy Windows x86-64

pyhiir-1.0.0-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (9.1 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

pyhiir-1.0.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (8.9 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

pyhiir-1.0.0-pp39-pypy39_pp73-win_amd64.whl (10.7 kB view hashes)

Uploaded PyPy Windows x86-64

pyhiir-1.0.0-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (9.1 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

pyhiir-1.0.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (8.9 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

pyhiir-1.0.0-pp38-pypy38_pp73-win_amd64.whl (10.7 kB view hashes)

Uploaded PyPy Windows x86-64

pyhiir-1.0.0-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (9.1 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

pyhiir-1.0.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (8.9 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

pyhiir-1.0.0-pp37-pypy37_pp73-win_amd64.whl (10.7 kB view hashes)

Uploaded PyPy Windows x86-64

pyhiir-1.0.0-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (9.1 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

pyhiir-1.0.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (8.9 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

pyhiir-1.0.0-cp312-cp312-win_amd64.whl (10.7 kB view hashes)

Uploaded CPython 3.12 Windows x86-64

pyhiir-1.0.0-cp312-cp312-win32.whl (10.7 kB view hashes)

Uploaded CPython 3.12 Windows x86

pyhiir-1.0.0-cp312-cp312-musllinux_1_1_x86_64.whl (9.4 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.1+ x86-64

pyhiir-1.0.0-cp312-cp312-musllinux_1_1_i686.whl (9.3 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.1+ i686

pyhiir-1.0.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (9.1 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

pyhiir-1.0.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (8.9 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

pyhiir-1.0.0-cp311-cp311-win_amd64.whl (10.7 kB view hashes)

Uploaded CPython 3.11 Windows x86-64

pyhiir-1.0.0-cp311-cp311-win32.whl (10.7 kB view hashes)

Uploaded CPython 3.11 Windows x86

pyhiir-1.0.0-cp311-cp311-musllinux_1_1_x86_64.whl (9.4 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ x86-64

pyhiir-1.0.0-cp311-cp311-musllinux_1_1_i686.whl (9.3 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ i686

pyhiir-1.0.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (9.1 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

pyhiir-1.0.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (8.9 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

pyhiir-1.0.0-cp310-cp310-win_amd64.whl (10.7 kB view hashes)

Uploaded CPython 3.10 Windows x86-64

pyhiir-1.0.0-cp310-cp310-win32.whl (10.7 kB view hashes)

Uploaded CPython 3.10 Windows x86

pyhiir-1.0.0-cp310-cp310-musllinux_1_1_x86_64.whl (9.4 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

pyhiir-1.0.0-cp310-cp310-musllinux_1_1_i686.whl (9.3 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ i686

pyhiir-1.0.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (9.1 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

pyhiir-1.0.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (8.9 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

pyhiir-1.0.0-cp39-cp39-win_amd64.whl (10.7 kB view hashes)

Uploaded CPython 3.9 Windows x86-64

pyhiir-1.0.0-cp39-cp39-win32.whl (10.7 kB view hashes)

Uploaded CPython 3.9 Windows x86

pyhiir-1.0.0-cp39-cp39-musllinux_1_1_x86_64.whl (9.4 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

pyhiir-1.0.0-cp39-cp39-musllinux_1_1_i686.whl (9.3 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ i686

pyhiir-1.0.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (9.1 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

pyhiir-1.0.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (8.9 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

pyhiir-1.0.0-cp38-cp38-win_amd64.whl (10.7 kB view hashes)

Uploaded CPython 3.8 Windows x86-64

pyhiir-1.0.0-cp38-cp38-win32.whl (10.7 kB view hashes)

Uploaded CPython 3.8 Windows x86

pyhiir-1.0.0-cp38-cp38-musllinux_1_1_x86_64.whl (9.4 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ x86-64

pyhiir-1.0.0-cp38-cp38-musllinux_1_1_i686.whl (9.3 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ i686

pyhiir-1.0.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (9.1 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

pyhiir-1.0.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (8.9 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

pyhiir-1.0.0-cp37-cp37m-win_amd64.whl (10.7 kB view hashes)

Uploaded CPython 3.7m Windows x86-64

pyhiir-1.0.0-cp37-cp37m-win32.whl (10.7 kB view hashes)

Uploaded CPython 3.7m Windows x86

pyhiir-1.0.0-cp37-cp37m-musllinux_1_1_x86_64.whl (9.4 kB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.1+ x86-64

pyhiir-1.0.0-cp37-cp37m-musllinux_1_1_i686.whl (9.3 kB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.1+ i686

pyhiir-1.0.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (9.1 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

pyhiir-1.0.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (8.9 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

pyhiir-1.0.0-cp36-cp36m-win_amd64.whl (10.7 kB view hashes)

Uploaded CPython 3.6m Windows x86-64

pyhiir-1.0.0-cp36-cp36m-win32.whl (10.7 kB view hashes)

Uploaded CPython 3.6m Windows x86

pyhiir-1.0.0-cp36-cp36m-musllinux_1_1_x86_64.whl (9.4 kB view hashes)

Uploaded CPython 3.6m musllinux: musl 1.1+ x86-64

pyhiir-1.0.0-cp36-cp36m-musllinux_1_1_i686.whl (9.4 kB view hashes)

Uploaded CPython 3.6m musllinux: musl 1.1+ i686

pyhiir-1.0.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (9.1 kB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

pyhiir-1.0.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (8.9 kB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page