lib.pywt

Discrete forward and inverse wavelet transform, stationary wavelet transform, wavelet packets signal decomposition and reconstruction module.

MODES

class supreme.lib.pywt.MODES

Bases: object

Different ways of dealing with border distortion problem while performing Discrete Wavelet Transform analysis.

To reduce this effect the signal or image can be extended by adding extra samples.

zpd - zero-padpadding 0 0 | x1 x2 ... xn | 0 0 cpd - constant-padding x1 x1 | x1 x2 ... xn | xn xn sym - symmetric-padding x2 x1 | x1 x2 ... xn | xn xn-1 ppd - periodic-padding xn-1 xn | x1 x2 ... xn | x1 x2 sp1 - smooth-padding (1st derivative interpolation)

DWT performed for these extension modes is slightly redundant, but ensure a perfect reconstruction for IDWT.

per - periodization - like periodic-padding but gives the smallest number
of decomposition coefficients. IDWT must be performed with the same mode.

Methods

from_object
__init__()
x.__init__(...) initializes x; see x.__class__.__doc__ for signature
from_object()

Wavelet

class supreme.lib.pywt.Wavelet

Bases: object

Wavelet(name, filter_bank=None) object describe properties of a wavelet identified by name.

In order to use a built-in wavelet the parameter name must be a valid name from the wavelist() list. To create a custom wavelet object, filter_bank parameter must be specified. It can be either a list of four filters or an object that a filter_bank attribute which returns a list of four filters - just like the Wavelet instance itself.

Methods

get_filters_coeffs
get_reverse_filters_coeffs
wavefun([level]) Calculates aproximations of scaling function (phi) and wavelet function (psi) on xgrid (x) at a given level of refinement.
__init__()
x.__init__(...) initializes x; see x.__class__.__doc__ for signature
biorthogonal
Is biorthogonal
dec_hi
Highpass decomposition filter
dec_len
Decomposition filters length
dec_lo
Lowpass decomposition filter
family_name
Wavelet family name
filter_bank
Returns tuple of wavelet filters coefficients (dec_lo, dec_hi, rec_lo, rec_hi)
get_filters_coeffs()
get_reverse_filters_coeffs()
inverse_filter_bank
Tuple of inverse wavelet filters coefficients (rec_lo[::-1], rec_hi[::-1], dec_lo[::-1], dec_hi[::-1])
name
number
orthogonal
Is orthogonal
rec_hi
Highpass reconstruction filter
rec_len
Reconstruction filters length
rec_lo
Lowpass reconstruction filter
short_family_name
Short wavelet family name
symmetry
Wavelet symmetry
vanishing_moments_phi
Number of vanishing moments for scaling function
vanishing_moments_psi
Number of vanishing moments for wavelet function
wavefun(int level=8)

Calculates aproximations of scaling function (phi) and wavelet function (psi) on xgrid (x) at a given level of refinement.

For orthogonal wavelets returns scaling function, wavelet function and xgrid - [phi, psi, x].

For biorthogonal wavelets returns scaling and wavelet function both for decomposition and reconstruction and xgrid - [phi_d, psi_d, phi_r, psi_r, x].

BaseNode

class supreme.lib.pywt.BaseNode(parent, data, node_name)

Bases: object

__init__(parent, data, node_name)
decompose()
Decompose node data creating DWT coefficients subnodes.”
get_leaf_nodes(decompose=False)
Returns leaf nodes.
get_subnode(part, decompose=True)

Returns subnode.

part - subnode name decompose - if True and subnode does not exist, it will be created using

coefficients from DWT decomposition of the current node.
has_any_subnode
is_empty
maxlevel
node_name
reconstruct(update=False)

Reconstruct node from subnodes. If update param is True, then reconstructed data replaces the current node data.

Returns:
  • original node data if subnodes do not exist
  • IDWT of subnodes otherwise.
walk(func, args=(), kwargs={}, decompose=True)

Walk tree and call func on every node -> func(node, *args) If func returns True, descending to subnodes will continue.

func - callable args - func parms kwargs - func keyword params

walk_depth(func, args=(), kwargs={}, decompose=False)

Walk tree and call func on every node starting from the bottom-most nodes.

func - callable args - func parms kwargs - func keyword params

Node

class supreme.lib.pywt.Node(parent, data, node_name)

Bases: supreme.lib.pywt.wavelet_packets.BaseNode

WaveletPacket tree node.

Subnodes are called a and d, just like approximation and detail coefficients in the Discrete Wavelet Transform.

Methods

decompose() Decompose node data creating DWT coefficients subnodes.”
get_leaf_nodes([decompose]) Returns leaf nodes.
get_subnode(part[, decompose]) Returns subnode.
reconstruct([update]) Reconstruct node from subnodes.
walk(func[, args, kwargs, decompose]) Walk tree and call func on every node -> func(node, *args)
walk_depth(func[, args, kwargs, decompose]) Walk tree and call func on every node starting from the bottom-most nodes.
__init__(parent, data, node_name)
decompose()
Decompose node data creating DWT coefficients subnodes.”
get_leaf_nodes(decompose=False)
Returns leaf nodes.
get_subnode(part, decompose=True)

Returns subnode.

part - subnode name decompose - if True and subnode does not exist, it will be created using

coefficients from DWT decomposition of the current node.
has_any_subnode
is_empty
maxlevel
node_name
reconstruct(update=False)

Reconstruct node from subnodes. If update param is True, then reconstructed data replaces the current node data.

Returns:
  • original node data if subnodes do not exist
  • IDWT of subnodes otherwise.
walk(func, args=(), kwargs={}, decompose=True)

Walk tree and call func on every node -> func(node, *args) If func returns True, descending to subnodes will continue.

func - callable args - func parms kwargs - func keyword params

walk_depth(func, args=(), kwargs={}, decompose=False)

Walk tree and call func on every node starting from the bottom-most nodes.

func - callable args - func parms kwargs - func keyword params

WaveletPacket

class supreme.lib.pywt.WaveletPacket(data, wavelet, mode='sym', maxlevel=None)

Bases: supreme.lib.pywt.wavelet_packets.Node

Data structure representing Wavelet Packet decomposition of signal.

data - original data (signal) wavelet - wavelet used in DWT decomposition and reconstruction mode - signal extension mode - see MODES maxlevel - maximum level of decomposition (will be computed if not

specified)

Methods

decompose() Decompose node data creating DWT coefficients subnodes.”
get_leaf_nodes([decompose]) Returns leaf nodes.
get_level(level[, order, decompose]) Returns all nodes on the specified level.
get_subnode(part[, decompose]) Returns subnode.
reconstruct([update]) Reconstruct data value using coefficients from subnodes.
walk(func[, args, kwargs, decompose]) Walk tree and call func on every node -> func(node, *args)
walk_depth(func[, args, kwargs, decompose]) Walk tree and call func on every node starting from the bottom-most nodes.
__init__(data, wavelet, mode='sym', maxlevel=None)
decompose()
Decompose node data creating DWT coefficients subnodes.”
get_leaf_nodes(decompose=False)
Returns leaf nodes.
get_level(level, order='natural', decompose=True)

Returns all nodes on the specified level.

order - “natural” - left to right in tree
  • “freq” - band ordered
get_subnode(part, decompose=True)

Returns subnode.

part - subnode name decompose - if True and subnode does not exist, it will be created using

coefficients from DWT decomposition of the current node.
has_any_subnode
is_empty
maxlevel
node_name
reconstruct(update=True)

Reconstruct data value using coefficients from subnodes.

If update is True, then data values will be replaced by reconstruction values, also in subnodes.

walk(func, args=(), kwargs={}, decompose=True)

Walk tree and call func on every node -> func(node, *args) If func returns True, descending to subnodes will continue.

func - callable args - func parms kwargs - func keyword params

walk_depth(func, args=(), kwargs={}, decompose=False)

Walk tree and call func on every node starting from the bottom-most nodes.

func - callable args - func parms kwargs - func keyword params

Node2D

class supreme.lib.pywt.Node2D(parent, data, node_name)

Bases: supreme.lib.pywt.wavelet_packets.BaseNode

WaveletPacket tree node. Subnodes are called ‘a’ (LL), ‘h’ (LH), ‘v’ (HL) and ‘d’ (HH), like approximation and detail coefficients in 2D Discrete Wavelet Transform

Methods

decompose() Decompose node data creating DWT coefficients subnodes.”
expand_2d_path(path)
get_leaf_nodes([decompose]) Returns leaf nodes.
get_subnode(part[, decompose]) Returns subnode.
reconstruct([update]) Reconstruct node from subnodes.
walk(func[, args, kwargs, decompose]) Walk tree and call func on every node -> func(node, *args)
walk_depth(func[, args, kwargs, decompose]) Walk tree and call func on every node starting from the bottom-most nodes.
__init__(parent, data, node_name)
decompose()
Decompose node data creating DWT coefficients subnodes.”
expand_2d_path(path)
get_leaf_nodes(decompose=False)
Returns leaf nodes.
get_subnode(part, decompose=True)

Returns subnode.

part - subnode name decompose - if True and subnode does not exist, it will be created using

coefficients from DWT decomposition of the current node.
has_any_subnode
is_empty
maxlevel
node_name
reconstruct(update=False)

Reconstruct node from subnodes. If update param is True, then reconstructed data replaces the current node data.

Returns:
  • original node data if subnodes do not exist
  • IDWT of subnodes otherwise.
walk(func, args=(), kwargs={}, decompose=True)

Walk tree and call func on every node -> func(node, *args) If func returns True, descending to subnodes will continue.

func - callable args - func parms kwargs - func keyword params

walk_depth(func, args=(), kwargs={}, decompose=False)

Walk tree and call func on every node starting from the bottom-most nodes.

func - callable args - func parms kwargs - func keyword params

WaveletPacket2D

class supreme.lib.pywt.WaveletPacket2D(data, wavelet, mode='sp1', maxlevel=None)

Bases: supreme.lib.pywt.wavelet_packets.Node2D

Data structure representing 2D Wavelet Packet decomposition of signal.

data - original data (signal) wavelet - wavelet used in DWT decomposition and reconstruction mode - signal extension mode - see MODES maxlevel - maximum level of decomposition (will be computed if not

specified)

Methods

decompose() Decompose node data creating DWT coefficients subnodes.”
expand_2d_path(path)
get_leaf_nodes([decompose]) Returns leaf nodes.
get_level(level[, order, decompose]) Returns all nodes from specified level.
get_subnode(part[, decompose]) Returns subnode.
reconstruct([update]) Reconstruct data using coefficients from subnodes.
walk(func[, args, kwargs, decompose]) Walk tree and call func on every node -> func(node, *args)
walk_depth(func[, args, kwargs, decompose]) Walk tree and call func on every node starting from the bottom-most nodes.
__init__(data, wavelet, mode='sp1', maxlevel=None)
decompose()
Decompose node data creating DWT coefficients subnodes.”
expand_2d_path(path)
get_leaf_nodes(decompose=False)
Returns leaf nodes.
get_level(level, order='natural', decompose=True)

Returns all nodes from specified level.

If order is natural, a flat list is returned.

If order is freq, a 2d structure with rows and cols sorted by corresponding dimension frequency of 2d coefficient array (adapted from 1d case).

get_subnode(part, decompose=True)

Returns subnode.

part - subnode name decompose - if True and subnode does not exist, it will be created using

coefficients from DWT decomposition of the current node.
has_any_subnode
is_empty
maxlevel
node_name
reconstruct(update=True)

Reconstruct data using coefficients from subnodes.

If update is set to True then the coefficients of the current node and its subnodes will be replaced with values from reconstruction.

walk(func, args=(), kwargs={}, decompose=True)

Walk tree and call func on every node -> func(node, *args) If func returns True, descending to subnodes will continue.

func - callable args - func parms kwargs - func keyword params

walk_depth(func, args=(), kwargs={}, decompose=False)

Walk tree and call func on every node starting from the bottom-most nodes.

func - callable args - func parms kwargs - func keyword params

supreme.lib.pywt.dwt (cA, cD) = dwt(data, wavelet, mode=’sym’)
supreme.lib.pywt.dwt_coeff_len dwt_coeff_len(int data_len, int filter_len, mode) -> int
supreme.lib.pywt.dwt_max_level dwt_max_level(int data_len, int filter_len) -> int
supreme.lib.pywt.idwt(cA, cD, wavelet[, ...]) Single level Inverse Discrete Wavelet Transform
supreme.lib.pywt.swt(data, wavelet, level) Performs multilevel Stationary Wavelet Transform.
supreme.lib.pywt.swt_max_level(input_len) Returns maximum level of Stationary Wavelet Transform for data of given length.
supreme.lib.pywt.upcoef(part, coeffs, wavelet) Direct reconstruction from cefficients.
supreme.lib.pywt.downcoef(part, data, wavelet) Partial Discrete Wavelet Transform data decomposition.
supreme.lib.pywt.wavelist wavelist(family=None) -> []
supreme.lib.pywt.families
supreme.lib.pywt.wavedec(data, wavelet[, ...]) Multilevel 1D Discrete Wavelet Transform of data.
supreme.lib.pywt.waverec(coeffs, wavelet[, mode]) Multilevel 1D Inverse Discrete Wavelet Transform.
supreme.lib.pywt.wavedec2(data, wavelet[, ...]) Multilevel 2D Discrete Wavelet Transform.
supreme.lib.pywt.waverec2(coeffs, wavelet[, ...]) Multilevel 2D Inverse Discrete Wavelet Transform.
supreme.lib.pywt.dwt2(data, wavelet[, mode]) 2D Discrete Wavelet Transform.
supreme.lib.pywt.idwt2(coeffs, wavelet[, mode]) 2D Inverse Discrete Wavelet Transform. Reconstruct data from coefficients
supreme.lib.pywt.swt2(data, wavelet, level) 2D Stationary Wavelet Transform.
supreme.lib.pywt.dwtn(data, wavelet[, mode]) Single-level n-dimensional Discrete Wavelet Transform.
supreme.lib.pywt.intwave(wavelet[, precision]) intwave(wavelet, precision=8) -> [int_psi, x] - for orthogonal wavelets
supreme.lib.pywt.centfrq(wavelet[, precision]) centfrq(wavelet, precision=8) -> float - for orthogonal wavelets
supreme.lib.pywt.scal2frq(wavelet, scale, delta) scal2frq(wavelet, scale, delta, precision=8) -> float - for orthogonal wavelets
supreme.lib.pywt.qmf(filter)
supreme.lib.pywt.orthfilt(scaling_filter)

dwt

supreme.lib.pywt.dwt()

(cA, cD) = dwt(data, wavelet, mode=’sym’)

Single level Discrete Wavelet Transform

data - input signal wavelet - wavelet to use (Wavelet object or name) mode - signal extension mode, see MODES

Returns approximation (cA) and detail (cD) coefficients.

Length of coefficients arrays depends on the selected mode:

for all modes except periodization:
len(cA) == len(cD) == floor((len(data) + wavelet.dec_len - 1) / 2)
for periodization mode (“per”):
len(cA) == len(cD) == ceil(len(data) / 2)

dwt_coeff_len

supreme.lib.pywt.dwt_coeff_len()

dwt_coeff_len(int data_len, int filter_len, mode) -> int

Returns length of dwt output for given data length, filter length and mode:

  • for all modes except periodization:

    len(cA) == len(cD) == floor((len(data) + wavelet.dec_len - 1) / 2)

  • for periodization mode (“per”):

    len(cA) == len(cD) == ceil(len(data) / 2)

dwt_max_level

supreme.lib.pywt.dwt_max_level()

dwt_max_level(int data_len, int filter_len) -> int

Compute the maximum usefull level of decomposition for given input data length and wavelet filter length.

idwt

supreme.lib.pywt.idwt(cA, cD, wavelet, mode='sym', correct_size=0)

Single level Inverse Discrete Wavelet Transform

cA - approximation coefficients cD - detail coefficients wavelet - wavelet to use (Wavelet object or name) mode - signal extension mode, see MODES

correct_size - under normal conditions (all data lengths dyadic) Ca and cD
coefficients lists must have the same lengths. With correct_size set to True, length of cA may be greater by one than length of cA. Useful when doing multilevel decomposition and reconstruction of non-dyadic length signals.

Returns single level reconstruction of signal from given coefficients.

swt

supreme.lib.pywt.swt(object data, object wavelet, int level)

Performs multilevel Stationary Wavelet Transform.

data - input signal wavelet - wavelet to use (Wavelet object or name) level - transform level

Returns list of approximation and details coefficients pairs in form
[(cAn, cDn), ..., (cA2, cD2), (cA1, cD1)], where n = level

swt_max_level

supreme.lib.pywt.swt_max_level(int input_len)
Returns maximum level of Stationary Wavelet Transform for data of given length.

upcoef

supreme.lib.pywt.upcoef(part, coeffs, wavelet, level=1, take=0)

Direct reconstruction from cefficients.

part - coefficients type:
‘a’ - approximations reconstruction is performed ‘d’ - details reconstruction is performed

coeffs - coefficients array wavelet - wavelet to use (Wavelet object or name) level - multilevel reconstruction level take - take central part of length equal to ‘take’ from the result

downcoef

supreme.lib.pywt.downcoef(part, data, wavelet, mode='sym', level=1)

Partial Discrete Wavelet Transform data decomposition.

part - decomposition type:
‘a’ - compute approximations coefficients ‘d’ - compute details coefficients

data - input signal wavelet - wavelet to use (Wavelet object or name) mode - signal extension mode, see MODES level - decomposition level

wavelist

supreme.lib.pywt.wavelist()

wavelist(family=None) -> []

Returns list of available wavelet names for the given family name.

family - short family name (“haar”, “db”, “sym”, “coif”, “bior”, “rbio” or “dmey”)

families

supreme.lib.pywt.families()

wavedec

supreme.lib.pywt.wavedec(data, wavelet, mode='sym', level=None)

Multilevel 1D Discrete Wavelet Transform of data. Returns coefficients list - [cAn, cDn, cDn-1, ..., cD2, cD1]

data - input data wavelet - wavelet to use (Wavelet object or name string) mode - signal extension mode, see MODES level - decomposition level. If level is None then it will be

calculated using dwt_max_level function.

waverec

supreme.lib.pywt.waverec(coeffs, wavelet, mode='sym')

Multilevel 1D Inverse Discrete Wavelet Transform.

coeffs - coefficients list [cAn, cDn, cDn-1, ..., cD2, cD1] wavelet - wavelet to use (Wavelet object or name string) mode - signal extension mode, see MODES

wavedec2

supreme.lib.pywt.wavedec2(data, wavelet, mode='sym', level=None)

Multilevel 2D Discrete Wavelet Transform.

data - 2D input data wavelet - wavelet to use (Wavelet object or name string) mode - signal extension mode, see MODES level - decomposition level. If level is None then it will be

calculated using dwt_max_level function .

Returns coefficients list - [cAn, (cHn, cVn, cDn), ... (cH1, cV1, cD1)]

waverec2

supreme.lib.pywt.waverec2(coeffs, wavelet, mode='sym')

Multilevel 2D Inverse Discrete Wavelet Transform.

coeffs - coefficients list [cAn, (cHn, cVn, cDn), ... (cH1, cV1, cD1)] wavelet - wavelet to use (Wavelet object or name string) mode - signal extension mode, see MODES

Returns 2D array of reconstructed data.

dwt2

supreme.lib.pywt.dwt2(data, wavelet, mode='sym')

2D Discrete Wavelet Transform.

data - 2D array with input data wavelet - wavelet to use (Wavelet object or name string) mode - signal extension mode, see MODES

Returns approximaion and three details 2D coefficients arrays.

The result form four 2D coefficients arrays organized in tuples:

(approximation,
(horizontal details, vertical details, diagonal details)

)

which sometimes is also interpreted as layed out in one 2D array of coefficients, where:

                        -----------------
                        |       |       |
                        | A(LL) | H(LH) |
                        |       |       |
(A, (H, V, D))  <--->   -----------------
                        |       |       |
                        | V(HL) | D(HH) |
                        |       |       |
                        -----------------

idwt2

supreme.lib.pywt.idwt2(coeffs, wavelet, mode='sym')

2D Inverse Discrete Wavelet Transform. Reconstruct data from coefficients arrays.

coeffs - four 2D coefficients arrays arranged as follows (in the same way
as dwt2 output – see dwt2 description for details):
(approximation,
(horizontal details, vertical details, diagonal details)

)

wavelet - wavelet to use (Wavelet object or name string) mode - signal extension mode, see MODES

swt2

supreme.lib.pywt.swt2(data, wavelet, level, start_level=0)

2D Stationary Wavelet Transform.

data - 2D array with input data wavelet - wavelet to use (Wavelet object or name string) level - how many decomposition steps to perform start_level - the level at which the decomposition will start

Returns list of approximation and details coefficients:

[
(cA_n,
(cH_n, cV_n, cD_n)

), (cA_n+1,

(cH_n+1, cV_n+1, cD_n+1)

), ..., (cA_n+level,

(cH_n+level, cV_n+level, cD_n+level)

)

]

where cA is approximation, cH is horizontal details, cV is vertical details, cD is diagonal details and n is start_level.

dwtn

supreme.lib.pywt.dwtn(data, wavelet, mode='sym')

Single-level n-dimensional Discrete Wavelet Transform.

data - n-dimensional array wavelet - wavelet to use (Wavelet object or name string) mode - signal extension mode, see MODES

Results are arranged in a dictionary, where key specifies the transform type on each dimension and value is a n-dimensional coefficients array.

For example, for a 2D case the result will look something like this:
{
‘aa’: <coeffs> # A(LL) - approx. on 1st dim, approx. on 2nd dim ‘ad’: <coeffs> # H(LH) - approx. on 1st dim, det. on 2nd dim ‘da’: <coeffs> # V(HL) - det. on 1st dim, approx. on 2nd dim ‘dd’: <coeffs> # D(HH) - det. on 1st dim, det. on 2nd dim

}

intwave

supreme.lib.pywt.intwave(wavelet, precision=8)

intwave(wavelet, precision=8) -> [int_psi, x] - for orthogonal wavelets intwave(wavelet, precision=8) -> [int_psi_d, int_psi_r, x] - for other wavelets intwave((function_approx, x), precision=8) -> [int_function, x] - for (function approx., x grid) pair

Integrate psi wavelet function from -Inf to x using the rectangle integration method.

wavelet - Wavelet to integrate (Wavelet object, wavelet name string
or (wavelet function approx., x grid) pair)
precision = 8 - Precision that will be used for wavelet function
approximation computed with the wavefun(level=precision) Wavelet’s method.
(function_approx, x) - Function to integrate on the x grid. Used instead
of Wavelet object to allow custom wavelet functions.

centfrq

supreme.lib.pywt.centfrq(wavelet, precision=8)

centfrq(wavelet, precision=8) -> float - for orthogonal wavelets centfrq((function_aprox, x), precision=8) -> float - for (function approx., x grid) pair

Computes the central frequency of the psi wavelet function.

wavelet - Wavelet (Wavelet object, wavelet name string
or (wavelet function approx., x grid) pair)
precision = 8 - Precision that will be used for wavelet function
approximation computed with the wavefun(level=precision) Wavelet’s method.
(function_approx, xgrid) - Function defined on xgrid. Used instead
of Wavelet object to allow custom wavelet functions.

scal2frq

supreme.lib.pywt.scal2frq(wavelet, scale, delta, precision=8)

scal2frq(wavelet, scale, delta, precision=8) -> float - for orthogonal wavelets scal2frq(wavelet, scale, delta, precision=8) -> float - for (function approx., x grid) pair

wavelet scale delta - sampling

qmf

supreme.lib.pywt.qmf(filter)

orthfilt

supreme.lib.pywt.orthfilt(scaling_filter)