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-dimansional 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 ilustrates the inheritance tree:
- BaseNode - common interface for 1D and 2D nodes:
- Node - data carrier node in a 1D decomposition tree
- Node2D - data carrier node in a 2D decomposition tree
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 documentat 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 decopmosition 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.
Parameter: | 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.
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.
-
__delitem__(path)
Used to delete node from the decomposition tree.
-
get_leaf_nodes([decompose=False])
Traverses through the decomposition tree and collects leaf nodes (nodes
without any subnodes).
Parameter: | 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: |
|
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: |
|
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 for decomposition and
reconstruction.
- 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 for decomposition and
reconstruction.
- 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.