wpdec

hana_ml.algorithms.pal.tsa.wavelet.wpdec(data, wavelet, key=None, col=None, boundary=None, level=None, order=None, compression=None, method=None, threshold=None)

Python wrapper for PAL multi-level (discrete) wavelet packet transformation.

Parameters:
dataDataFrame

Time-series data to apply discrete wavelet transform to. It should be comprised of the following two columns:

  • 1st column : Time-stamp, type INTEGER. The stamp values do not need to be in order.

  • 2nd column : Signal values, type DOUBLE or DECIMAL(p,s). The values must be evenly-spaced in time.

waveletstr

Specifies the wavelet filter used for discrete wavelet transform. Valid options include:

  • Daubechies family : 'db1' ~ 'db20'

  • Biorthogonal family: 'bior1.1', 'bior1.3', 'bior1.5', 'bior2.2', 'bior2.4', 'bior2.6', 'bior2.8', 'bior3.1', 'bior3.3', 'bior3.5', 'bior3.7', 'bior3.9', 'bior4.4', 'bior5.5', 'bior6.8'

  • Reverse Biorthogonal family : 'rbio1.1', 'rbio1.3', 'rbio1.5', 'rbio2.2', 'rbio2.4', 'rbio2.6', 'rbio2.8', 'rbio3.1', 'rbio3.3', 'rbio3.5', 'rbio3.7', 'rbio3.9', 'rbio4.4', 'rbio5.5', 'rbio6.8'

  • Coifman family: 'coif1' ~ 'coif5'

  • Symmetric family: 'sym2' ~ 'sym20'

keystr

Specifies the time-stamp column in data.

The column should be of type INTEGER. The values do not need to be in order, but must be equal-spaced.

colstr, optional

Specifies the signal values for wavelet transformation, should be of type DOUBLE or DECIMAL(p,s).

If not specified, it defaults to the first non-key column of data.

boundarystr, optional

Specifies the padding method for boundary values. Valid options include:

  • 'zero' : Zero padding

  • 'symmetric' : Symmetric padding

  • 'periodic' : Periodic padding

  • 'reflect' : Reflect padding

  • 'smooth' : Smooth padding

  • 'constant' : Constant padding

Defaults to 'zero'.

levelint, optional

Specifies the decompose level for wavelet transform.

Defaults to 1.

order{'index', 'frequency'}

Specifies the order of node in the wavelet packet coefficients table.

  • 'index' : ordered by the indices of nodes(ascending).

  • 'frequency' : ordered by the frequencies of nodes, from low to high.

compressionbool, optional

Specifies whether or not to discard zero values in wavelet packet coefficients.

Defaults to False.

method{'no', 'soft', 'hard'}, optional

Specifies the thresholding method applied to wavelet packet coefficients.

  • 'no' : No thresholding

  • 'soft' : Soft-thresholding

  • 'hard' : Hard-thresholding

Defaults to 'no'.

thresholdfloat, optional

Specifies the threshold value for soft/hard-thresholding.

Valid only when method is set as 'soft' or 'hard'.

Defaults to 1e-9.

Returns:
A DWT object

The returned DWT object contains all related information for the wavelet packet transformation, including wavelet filter, boundary extension type, decomposition level, etc. In particular, it contains the wavelet packet transformation of data in its coeff_ attribute.

For more details, see the Attributes section of DWT.

Examples

Input time-series data for discrete wavelet transformation:

>>> data.collect()
    ID    VAL
0    1  266.0
1    2  145.9
2    3  181.3
3    4  119.3
4    5  180.3
5    6  168.5
6    7  231.8
7    8  224.5
8    9  192.8
9   10  122.9
10  11  336.5
11  12  185.9
12  13  194.3
13  14  149.5

2-level wavelet packet transformation of the input data using 'db2' filter and symmetric padding method, with wavelet packet coefficients ordered by nodes' frequencies.

>>> wpres = wpdec(data=data, wavelet='db2', boundary='symmetric', level=2)

wpres is a DWT object containing the decomposition result in its attribute coeff_:

>>> wpres.coeff_.collect()
    NODE  ID  COEFFICIENTS
0      0   0    451.442328
1      0   1    405.506091
2      0   2    350.691644
3      0   3    412.118406
4      0   4    362.046517
5      1   0     35.520329
6      1   1    -53.885358
7      1   2     71.258862
8      1   3     78.767514
9      1   4    -70.401833
10     3   0     28.554022
11     3   1    -11.228318
12     3   2    -57.112074
13     3   3    -16.468003
14     3   4    -19.933824
15     2   0     87.523979
16     2   1     59.195043
17     2   2     16.514617
18     2   3    131.581926
19     2   4    -27.289140
>>> wpres.stats_.collect()
               NAME                     VAL
0  LEVEL_COEFF_SIZE  {"coeffSize":[14,8,5]}
>>> wpres.packet
True