### Navigation

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

# Wavelet Packets

New in version 0.2.

Version 0.2 of PyWavelets includes many new features and improvements. One of such new feature is a two-dimensional wavelet packet transform structure that is almost completely sharing programming interface with the one-dimensional tree structure.

In order to achieve this simplification, a new inheritance scheme was used in which a `BaseNode` base node class is a superclass for both `Node` and `Node2D` node classes.

The node classes are used as data wrappers and can be organized in trees (binary trees for 1D transform case and quad-trees for the 2D one). They are also superclasses to the `WaveletPacket` class and `WaveletPacket2D` class that are used as the decomposition tree roots and contain a couple additional methods.

The below diagram illustrates the inheritance tree:

> - `BaseNode` - common interface for 1D and 2D nodes:
>   - `Node` - data carrier node in a 1D decomposition tree
>     - `WaveletPacket` - 1D decomposition tree root node
>   - `Node2D` - data carrier node in a 2D decomposition tree
>     - `WaveletPacket2D` - 2D decomposition tree root node

## BaseNode - a common interface of WaveletPacket and WaveletPacket2D

class `pywt.``BaseNode`
class `pywt.``Node`(BaseNode)
class `pywt.``WaveletPacket`(Node)
class `pywt.``Node2D`(BaseNode)
class `pywt.``WaveletPacket2D`(Node2D)

  Note

  The BaseNode is a base class for `Node` and `Node2D`. It should not be used directly unless creating a new transformation type. It is included here to document the common interface of 1D and 2D node an wavelet packet transform classes.

  `__init__`(parent, data, node_name)

    Parameters:

    - parent – parent node. If parent is `None` then the node is considered detached.
    - data – data associated with the node. 1D or 2D numeric array, depending on the transform type.
    - node_name – a name identifying the coefficients type. See `Node.node_name` and `Node2D.node_name` for information on the accepted subnodes names.

  `data`

    Data associated with the node. 1D or 2D numeric array (depends on the transform type).

  `parent`

    Parent node. Used in tree navigation. `None` for root node.

  `wavelet`

    `Wavelet` used for decomposition and reconstruction. Inherited from parent node.

  `mode`

    Signal extension mode for the `dwt()` (`dwt2()`) and `idwt()` (`idwt2()`) decomposition and reconstruction functions. Inherited from parent node.

  `level`

    Decomposition level of the current node. `0` for root (original data), `1` for the first decomposition level, etc.

  `path`

    Path string defining position of the node in the decomposition tree.

  `node_name`

    Node name describing `data` coefficients type of the current subnode.

    See `Node.node_name` and `Node2D.node_name`.

  `maxlevel`

    Maximum allowed level of decomposition. Evaluated from parent or child nodes.

  `is_empty`

    Checks if `data` attribute is `None`.

  `has_any_subnode`

    Checks if node has any subnodes (is not a leaf node).

  `decompose`()

    Performs Discrete Wavelet Transform on the `data` and returns transform coefficients.

  `reconstruct`([update=False])

    Performs Inverse Discrete Wavelet Transform on subnodes coefficients and returns reconstructed data for the current level.

    Parameters: | update – If set, the `data` attribute will be updated with the reconstructed value.

    Note

    Descends to subnodes and recursively calls `reconstruct()` on them.

  `get_subnode`(part[, decompose=True])

    Returns subnode or None (see decomposition flag description).

    Parameters:

    - part – Subnode name
    - decompose – If True and subnode does not exist, it will be created using coefficients from the DWT decomposition of the current node.

  `__getitem__`(path)

    Used to access nodes in the decomposition tree by string path.

    Parameters: | path – Path string composed from valid node names. See `Node.node_name` and `Node2D.node_name` for node naming convention.

    Similar to `get_subnode()` method with decompose=True, but can access nodes on any level in the decomposition tree.

    If node does not exist yet, it will be created by decomposition of its parent node.

  `__setitem__`(path, data)

    Used to set node or node’s data in the decomposition tree. Nodes are identified by string path.

    Parameters:

    - path – Path string composed from valid node names. See `Node.node_name` and `Node2D.node_name` for node naming convention.
    - data – numeric array or `BaseNode` subclass.

  `__delitem__`(path)

    Used to delete node from the decomposition tree.

    Parameters: | path – Path string composed from valid node names. See `Node.node_name` and `Node2D.node_name` for node naming convention.

  `get_leaf_nodes`([decompose=False])

    Traverses through the decomposition tree and collects leaf nodes (nodes without any subnodes).

    Parameters: | decompose – If decompose is `True`, the method will try to decompose the tree up to the `maximum level`.

  `walk`(self, func[, args=()[, kwargs={}[, decompose=True]]])

    Traverses the decomposition tree and calls `func(node, *args, **kwargs)` on every node. If func returns `True`, descending to subnodes will continue.

    Parameters:

    - func –

      callable accepting `BaseNode` as the first param and optional positional and keyword arguments:

          func(node, *args, **kwargs)

    - decompose – If decompose is `True` (default), the method will also try to decompose the tree up to the `maximum level`.

    Args : | arguments to pass to the func
    Kwargs : | keyword arguments to pass to the func

  `walk_depth`(self, func[, args=()[, kwargs={}[, decompose=False]]])

    Similar to `walk()` but traverses the tree in depth-first order.

    Parameters:

    - func –

      callable accepting `BaseNode` as the first param and optional positional and keyword arguments:

          func(node, *args, **kwargs)

    - decompose – If decompose is `True`, the method will also try to decompose the tree up to the `maximum level`.

    Args : | arguments to pass to the func
    Kwargs : | keyword arguments to pass to the func

## WaveletPacket and WaveletPacket tree Node

class `pywt.``Node`(BaseNode)
class `pywt.``WaveletPacket`(Node)
  `node_name`

    Node name describing `data` coefficients type of the current subnode.

    For `WaveletPacket` case it is just as in `dwt()`:
      - `a` - approximation coefficients
      - `d` - details coefficients
  `decompose`()

    See also

    - `dwt()` for 1D Discrete Wavelet Transform output coefficients.

class `pywt.``WaveletPacket`(Node)
  `__init__`(data, wavelet[, mode='sym'[, maxlevel=None]])

    Parameters:

    - data – data associated with the node. 1D numeric array.
    - wavelet – Wavelet to use in the transform. This can be a name of the wavelet from the `wavelist()` list or a `Wavelet` object instance.
    - mode – Signal extension mode for the `dwt()` and `idwt()` decomposition and reconstruction functions.
    - maxlevel – Maximum allowed level of decomposition. If not specified it will be calculated based on the wavelet and data length using `pywt.dwt_max_level()`.

  `get_level`(level[, order="natural"[, decompose=True]])

    Collects nodes from the given level of decomposition.

    Parameters:

    - level – Specifies decomposition level from which the nodes will be collected.
    - order – Specifies nodes order - natural (`natural`) or frequency (`freq`).
    - decompose – If set then the method will try to decompose the data up to the specified level.

    If nodes at the given level are missing (i.e. the tree is partially decomposed) and the decompose is set to `False`, only existing nodes will be returned.

## WaveletPacket2D and WaveletPacket2D tree Node2D

class `pywt.``Node2D`(BaseNode)
class `pywt.``WaveletPacket2D`(Node2D)
  `node_name`
    For `WaveletPacket2D` case it is just as in `dwt2()`:
      - `a` - approximation coefficients (LL)
      - `h` - horizontal detail coefficients (LH)
      - `v` - vertical detail coefficients (HL)
      - `d` - diagonal detail coefficients (HH)
  `decompose`()

    See also

    `dwt2()` for 2D Discrete Wavelet Transform output coefficients.

  `expand_2d_path(self, path):`

class `pywt.``WaveletPacket2D`(Node2D)
  `__init__`(data, wavelet[, mode='sym'[, maxlevel=None]])

    Parameters:

    - data – data associated with the node. 2D numeric array.
    - wavelet – Wavelet to use in the transform. This can be a name of the wavelet from the `wavelist()` list or a `Wavelet` object instance.
    - mode – Signal extension mode for the `dwt()` and `idwt()` decomposition and reconstruction functions.
    - maxlevel – Maximum allowed level of decomposition. If not specified it will be calculated based on the wavelet and data length using `pywt.dwt_max_level()`.

  `get_level`(level[, order="natural"[, decompose=True]])

    Collects nodes from the given level of decomposition.

    Parameters:

    - level – Specifies decomposition level from which the nodes will be collected.
    - order – Specifies nodes order - natural (`natural`) or frequency (`freq`).
    - decompose – If set then the method will try to decompose the data up to the specified level.

    If nodes at the given level are missing (i.e. the tree is partially decomposed) and the decompose is set to `False`, only existing nodes will be returned.

### Navigation

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