#!/usr/bin/env python3
import pywt

# why 0.0 ?
# => https://github.com/PyWavelets/pywt/issues/194

dec_low  = [0.0, 0.026748757411,  -0.016864118443, -0.078223266529,  0.266864118443, 0.602949018236,  0.266864118443, -0.078223266529, -0.016864118443, 0.026748757411]
#                                                                                    ┗━━ middle ━━┛
dec_high = [0.0, 0.091271763114,  -0.057543526229, -0.591271763114,  1.11508705,    -0.591271763114, -0.057543526229,  0.091271763114,             0.0,            0.0]
#                                                                   ┗━ middle ━┛
rec_low  = [0.0, -0.091271763114, -0.057543526229,  0.591271763114,  1.11508705,     0.591271763114, -0.057543526229, -0.091271763114,             0.0,            0.0]
#                                                                   ┗━ middle ━┛
rec_high = [0.0, 0.026748757411,   0.016864118443, -0.078223266529, -0.266864118443, 0.602949018236, -0.266864118443, -0.078223266529,  0.016864118443, 0.026748757411]
#                                                                                    ┗━━ middle ━━┛

wavelet = pywt.Wavelet(
	name = 'Daubechies CDF 9/7', 
	filter_bank = (dec_low, dec_high, rec_low, rec_high)
)
wavelet.orthogonal = False
wavelet.biorthogonal = True

print(wavelet)
print("  dec_lo:\t ", *wavelet.dec_lo)
print("  dec_hi:\t ", *wavelet.dec_hi)
print("  rec_lo:\t ", *wavelet.rec_lo)
print("  rec_hi:\t ", *wavelet.rec_hi)

(phi_d, psi_d, phi_r, psi_r, x) = wavelet.wavefun(level=1)
print("  scaling dec:\t ", *phi_d)
print("  wavelet dec:\t ", *psi_d)
print("  scaling rec:\t ", *phi_r)
print("  wavelet rec:\t ", *psi_r)
print("  xgrid coords:\t ", *x)

signal = [ 1, 2, 3, 4 ]
print(*pywt.dwt(signal, wavelet))

