### Navigation

- index
- next |
- previous |
- Home »
- PyWavelets »
- API Reference »

# Wavelets

## Wavelet `families()`

`pywt.``families`()

  Returns a list of available built-in wavelet families. Currently the built-in families are:

  - Haar (`haar`)
  - Daubechies (`db`)
  - Symlets (`sym`)
  - Coiflets (`coif`)
  - Biorthogonal (`bior`)
  - Reverse biorthogonal (`rbio`)
  - “Discrete” FIR approximation of Meyer wavelet (`dmey`)

  Example:

      >>> import pywt
      >>> print pywt.families()
      ['haar', 'db', 'sym', 'coif', 'bior', 'rbio', 'dmey']

## Built-in wavelets - `wavelist()`

`pywt.``wavelist`([family])

  The `wavelist()` function returns a list of names of the built-in wavelets.

  If the family name is `None` then names of all the built-in wavelets are returned. Otherwise the function returns names of wavelets that belong to the given family.

  Example:

      >>> import pywt
      >>> print pywt.wavelist('coif')
      ['coif1', 'coif2', 'coif3', 'coif4', 'coif5']

  Custom user wavelets are also supported through the `Wavelet` object constructor as described below.

## `Wavelet` object

class `pywt.``Wavelet`(name[, filter_bank=None])

  Describes properties of a wavelet identified by the specified wavelet name. In order to use a built-in wavelet the name parameter must be a valid wavelet name from the `pywt.wavelist()` list.

  Custom Wavelet objects can be created by passing a user-defined filters set with the filter_bank parameter.

  Parameters:

  - name – Wavelet name
  - filter_bank – Use a user supplied filter bank instead of a built-in `Wavelet`.

  The filter bank object can be a list of four filters coefficients or an object with `filter_bank` attribute, which returns a list of such filters in the following order:

      [dec_lo, dec_hi, rec_lo, rec_hi]

  Wavelet objects can also be used as a base filter banks. See section on using custom wavelets for more information.

  Example:

      >>> import pywt
      >>> wavelet = pywt.Wavelet('db1')

  `name`

    Wavelet name.

  `short_name`

    Short wavelet name.

  `dec_lo`

    Decomposition filter values.

  `dec_hi`

    Decomposition filter values.

  `rec_lo`

    Reconstruction filter values.

  `rec_hi`

    Reconstruction filter values.

  `dec_len`

    Decomposition filter length.

  `rec_len`

    Reconstruction filter length.

  `filter_bank`

    Returns filters list for the current wavelet in the following order:

        [dec_lo, dec_hi, rec_lo, rec_hi]

  `inverse_filter_bank`

    Returns list of reverse wavelet filters coefficients. The mapping from the filter_coeffs list is as follows:

        [rec_lo[::-1], rec_hi[::-1], dec_lo[::-1], dec_hi[::-1]]

  `short_family_name`

    Wavelet short family name

  `family_name`

    Wavelet family name

  `orthogonal`

    Set if wavelet is orthogonal

  `biorthogonal`

    Set if wavelet is biorthogonal

  `symmetry`

    `asymmetric`, `near symmetric`, `symmetric`

  `vanishing_moments_psi`

    Number of vanishing moments for the wavelet function

  `vanishing_moments_phi`

    Number of vanishing moments for the scaling function

  Example:

      >>> def format_array(arr):
      ...     return "[%s]" % ", ".join(["%.14f" % x for x in arr])

      >>> import pywt
      >>> wavelet = pywt.Wavelet('db1')
      >>> print wavelet
      Wavelet db1
        Family name:    Daubechies
        Short name:     db
        Filters length: 2
        Orthogonal:     True
        Biorthogonal:   True
        Symmetry:       asymmetric
      >>> print format_array(wavelet.dec_lo), format_array(wavelet.dec_hi)
      [0.70710678118655, 0.70710678118655] [-0.70710678118655, 0.70710678118655]
      >>> print format_array(wavelet.rec_lo), format_array(wavelet.rec_hi)
      [0.70710678118655, 0.70710678118655] [0.70710678118655, -0.70710678118655]

### Approximating wavelet and scaling functions - `Wavelet.wavefun()`

`Wavelet.``wavefun`(level)

  Changed in version 0.2: The time (space) localisation of approximation function points was added.

  The `wavefun()` method can be used to calculate approximations of scaling function (phi) and wavelet function (psi) at the given level of refinement.

  For `orthogonal` wavelets returns approximations of scaling function and wavelet function with corresponding x-grid coordinates:

      [phi, psi, x] = wavelet.wavefun(level)

  Example:

      >>> import pywt
      >>> wavelet = pywt.Wavelet('db2')
      >>> phi, psi, x = wavelet.wavefun(level=5)

  For other (`biorthogonal` but not `orthogonal`) wavelets returns approximations of scaling and wavelet function both for decomposition and reconstruction and corresponding x-grid coordinates:

      [phi_d, psi_d, phi_r, psi_r, x] = wavelet.wavefun(level)

  Example:

      >>> import pywt
      >>> wavelet = pywt.Wavelet('bior3.5')
      >>> phi_d, psi_d, phi_r, psi_r, x = wavelet.wavefun(level=5)

  See also

  You can find live examples of `wavefun()` usage and images of all the built-in wavelets on the Wavelet Properties Browser page.

## Using custom wavelets

PyWavelets comes with a `long list` of the most popular wavelets built-in and ready to use. If you need to use a specific wavelet which is not included in the list it is very easy to do so. Just pass a list of four filters or an object with a `filter_bank` attribute as a filter_bank argument to the `Wavelet` constructor.

The filters list, either in a form of a simple Python list or returned via the `filter_bank` attribute, must be in the following order:

> - lowpass decomposition filter
> - highpass decomposition filter
> - lowpass reconstruction filter
> - highpass reconstruction filter

just as for the `filter_bank` attribute of the `Wavelet` class.

The Wavelet object created in this way is a standard `Wavelet` instance.

The following example illustrates the way of creating custom Wavelet objects from plain Python lists of filter coefficients and a filter bank-like objects.

> Example:

>     >>> import pywt, math
>     >>> c = math.sqrt(2)/2
>     >>> dec_lo, dec_hi, rec_lo, rec_hi = [c, c], [-c, c], [c, c], [c, -c]
>     >>> filter_bank = [dec_lo, dec_hi, rec_lo, rec_hi]
>     >>> myWavelet = pywt.Wavelet(name="myHaarWavelet", filter_bank=filter_bank)
>     >>>
>     >>> class HaarFilterBank(object):
>     ...     @property
>     ...     def filter_bank(self):
>     ...         c = math.sqrt(2)/2
>     ...         dec_lo, dec_hi, rec_lo, rec_hi = [c, c], [-c, c], [c, c], [c, -c]
>     ...         return [dec_lo, dec_hi, rec_lo, rec_hi]
>     >>> filter_bank = HaarFilterBank()
>     >>> myOtherWavelet = pywt.Wavelet(name="myHaarWavelet", filter_bank=filter_bank)

### Navigation

- index
- next |
- previous |
- Home »
- PyWavelets »
- API Reference »