Signal Extension ModesΒΆ

Import pywt first

>>> import pywt

List of availble signal extension modes:

>>> print pywt.MODES.modes
['zpd', 'cpd', 'sym', 'ppd', 'sp1', 'per']

Test that dwt() and idwt() can be performed using every mode:

>>> x = [1,2,1,5,-1,8,4,6]
>>> for mode in pywt.MODES.modes:
...     cA, cD = pywt.dwt(x, 'db2', mode)
...     print "Mode:", mode
...     print "cA:", cA
...     print "cD:", cD
...     print "Reconstruction:", pywt.idwt(cA, cD, 'db2', mode)
Mode: zpd
cA: [-0.03467518  1.73309178  3.40612438  6.32928585  6.95094948]
cD: [-0.12940952 -2.15599552 -5.95034847 -1.21545369 -1.8625013 ]
Reconstruction: [ 1.  2.  1.  5. -1.  8.  4.  6.]
Mode: cpd
cA: [ 1.28480404  1.73309178  3.40612438  6.32928585  7.51935555]
cD: [-0.48296291 -2.15599552 -5.95034847 -1.21545369  0.25881905]
Reconstruction: [ 1.  2.  1.  5. -1.  8.  4.  6.]
Mode: sym
cA: [ 1.76776695  1.73309178  3.40612438  6.32928585  7.77817459]
cD: [-0.61237244 -2.15599552 -5.95034847 -1.21545369  1.22474487]
Reconstruction: [ 1.  2.  1.  5. -1.  8.  4.  6.]
Mode: ppd
cA: [ 6.9162743   1.73309178  3.40612438  6.32928585  6.9162743 ]
cD: [-1.99191082 -2.15599552 -5.95034847 -1.21545369 -1.99191082]
Reconstruction: [ 1.  2.  1.  5. -1.  8.  4.  6.]
Mode: sp1
cA: [-0.51763809  1.73309178  3.40612438  6.32928585  7.45000519]
cD: [ -9.90069138e-13  -2.15599552e+00  -5.95034847e+00  -1.21545369e+00
  -1.98063788e-12]
Reconstruction: [ 1.  2.  1.  5. -1.  8.  4.  6.]
Mode: per
cA: [ 4.053172    3.05257099  2.85381112  8.42522221]
cD: [ 0.18946869  4.18258152  4.33737503  2.60428326]
Reconstruction: [ 1.  2.  1.  5. -1.  8.  4.  6.]

Invalid mode name should rise a ValueError:

>>> pywt.dwt([1,2,3,4], 'db2', 'invalid')
...
ValueError: Unknown mode name 'invalid'.

You can also refer to modes via MODES class attributes:

>>> for mode_name in ['zpd', 'cpd', 'sym', 'ppd', 'sp1', 'per']:
...     mode = getattr(pywt.MODES, mode_name)
...     cA, cD = pywt.dwt([1,2,1,5,-1,8,4,6], 'db2', mode)
...     print "Mode:", mode, "(%s)" % mode_name
...     print "cA:", cA
...     print "cD:", cD
...     print "Reconstruction:", pywt.idwt(cA, cD, 'db2', mode)
Mode: 0 (zpd)
cA: [-0.03467518  1.73309178  3.40612438  6.32928585  6.95094948]
cD: [-0.12940952 -2.15599552 -5.95034847 -1.21545369 -1.8625013 ]
Reconstruction: [ 1.  2.  1.  5. -1.  8.  4.  6.]
Mode: 2 (cpd)
cA: [ 1.28480404  1.73309178  3.40612438  6.32928585  7.51935555]
cD: [-0.48296291 -2.15599552 -5.95034847 -1.21545369  0.25881905]
Reconstruction: [ 1.  2.  1.  5. -1.  8.  4.  6.]
Mode: 1 (sym)
cA: [ 1.76776695  1.73309178  3.40612438  6.32928585  7.77817459]
cD: [-0.61237244 -2.15599552 -5.95034847 -1.21545369  1.22474487]
Reconstruction: [ 1.  2.  1.  5. -1.  8.  4.  6.]
Mode: 4 (ppd)
cA: [ 6.9162743   1.73309178  3.40612438  6.32928585  6.9162743 ]
cD: [-1.99191082 -2.15599552 -5.95034847 -1.21545369 -1.99191082]
Reconstruction: [ 1.  2.  1.  5. -1.  8.  4.  6.]
Mode: 3 (sp1)
cA: [-0.51763809  1.73309178  3.40612438  6.32928585  7.45000519]
cD: [ -9.90069138e-13  -2.15599552e+00  -5.95034847e+00  -1.21545369e+00
  -1.98063788e-12]
Reconstruction: [ 1.  2.  1.  5. -1.  8.  4.  6.]
Mode: 5 (per)
cA: [ 4.053172    3.05257099  2.85381112  8.42522221]
cD: [ 0.18946869  4.18258152  4.33737503  2.60428326]
Reconstruction: [ 1.  2.  1.  5. -1.  8.  4.  6.]

Some invalid mode values:

>>> pywt.dwt(x, 'db2', -1)
...
ValueError: Invalid mode.
>>> pywt.dwt(x, 'db2', 7)
...
ValueError: Invalid mode.
>>> pywt.dwt(x, 'db2', None)
...
TypeError: expected string or Unicode object, NoneType found

The default mode is sym:

>>> cA, cD = pywt.dwt(x, 'db2')
>>> print cA
[ 1.76776695  1.73309178  3.40612438  6.32928585  7.77817459]
>>> print cD
[-0.61237244 -2.15599552 -5.95034847 -1.21545369  1.22474487]
>>> print pywt.idwt(cA, cD, 'db2')
[ 1.  2.  1.  5. -1.  8.  4.  6.]

And using a keyword argument:

>>> cA, cD = pywt.dwt(x, 'db2', mode='sym')
>>> print cA
[ 1.76776695  1.73309178  3.40612438  6.32928585  7.77817459]
>>> print cD
[-0.61237244 -2.15599552 -5.95034847 -1.21545369  1.22474487]
>>> print pywt.idwt(cA, cD, 'db2')
[ 1.  2.  1.  5. -1.  8.  4.  6.]

Previous topic

The Wavelet object

Next topic

DWT and IDWT

This Page

Quick links