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”)
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.