Sophie

Sophie

distrib > Mandriva > 2008.1 > x86_64 > media > contrib-release > by-pkgid > 427852ab79571512ff0251185b8376a3 > files > 29

python-pywavelets-0.1.6-1mdv2008.1.x86_64.rpm

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import pywt

class FilterBank(object):
    """Sample filter bank with Quadrature Mirror Filters for Haar wavelet"""
    dec_lo = [0.70710678118654757, 0.70710678118654757]
    dec_hi = [-0.70710678118654757, 0.70710678118654757]
    rec_lo = [0.70710678118654757, 0.70710678118654757]
    rec_hi = [0.70710678118654757, -0.70710678118654757]
    def get_filters_coeffs(self):
        return self.dec_lo, self.dec_hi, self.rec_lo, self.rec_hi

data = [1,2,3,4,5,6]

############################################################################
print "Case 1 (custom filter bank - Haar wavelet)"

myBank = FilterBank()
# pass the user supplied filter bank as argument
myWavelet = pywt.Wavelet(name="UserSuppliedWavelet", filter_bank=myBank)
#print myWavelet.get_filters_coeffs()

print "data:", data
a, d = pywt.dwt(data, myWavelet)
print "a:", a
print "d:", d
print "rec:", pywt.idwt(a, d, myWavelet)

############################################################################
print "-" * 75
print "Case 2 (Wavelet object as filter bank - db2 wavelet)"

# builtin wavelets can also be treated as filter banks with theirs
# get_filters_coeffs() method

builtinWavelet = pywt.Wavelet('db2')
myWavelet = pywt.Wavelet(name="UserSuppliedWavelet", filter_bank=builtinWavelet)

print "data:", data
a, d = pywt.dwt(data, myWavelet)
print "a:", a
print "d:", d
print "rec:", pywt.idwt(a, d, myWavelet)

############################################################################
# and if you happen to have installed wavelet module from wavelets.scipy.org
# SVN trunk you may also do this:
try:
    from wavelets import fwt
except:
    raise SystemExit

print "-" * 75
print "Case 3 (Cooperating with wavelets.scipy.org filter banks - db2 wavelet)"

myBank = fwt.DaubechiesFilterBank(4) # == 'db2'
myWavelet = pywt.Wavelet(name="UserSuppliedWavelet", filter_bank=builtinWavelet)

print "data:", data
a, d = pywt.dwt(data, myWavelet)
print "a:", a
print "d:", d
print "rec:", pywt.idwt(a, d, myWavelet)