wavedec

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

Python wrapper for PAL multi-level discrete wavelet transform.

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), 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, optional

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.

compressionbool, optional

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

Defaults to False.

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

Specifies the thresholding method applied to wavelet coefficients.

  • 'no' : No thresholding.

  • 'soft' : Soft-thresholding.

  • 'hard' : Hard-thresholding.

Defaults to 'no'.

thresholdfloat, optional

Specifies the uniform thresholding value for soft/hard-thresholding.

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

Defaults to 1e-9.

level_thresholdsListOfTuples, optional

Specifies level-wise thresholding values via a list of tuples, with the 1st element of each tuple being the level, and 2nd element being the respective thresholding value. For example, [(1, 1e-2), (2, 1e-3)] means using threshold 1e-2 for level 1 wavelet coefficients for thresholding, and 1e-3 for level-2 wavelet coefficients for thresholding.

If both threshold and level_thresholds are specified, level_thresholds takes precedence.

Returns:
A DWT object

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

For more details, see the Attributes section of DWT.

Examples

Input time-series DataFrame df:

>>> df.collect()
    ID    VAL
0    1  266.0
1    2  145.9
...
13  14  149.5

2-level decomposition of the input data using 'db2' filter, symmetric padding method:

>>> dwt = wavedec(data=df, wavelet='db2', boundary='symmetric', level=2)

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

>>> dwt.coeff_.collect()
    LEVEL  ID  COEFFICIENTS
0       0   0    451.442328
1       0   1    405.506091
...
17      2   4    -70.401833