pyewt.ewt1d module

pyewt.ewt1d.dual_filterbank(mfb)[source]

Build the dual filterbank

Parameters:

mfb (-) – List containing the original empirical wavelet filters.

Returns:

- dualmfb – List which elements are the dual filters of each filter of the input filterbank.

Return type:

list

Notes

This function builds the dual filterbank used for the reconstruction.

Author: Jerome Gilles Institution: San Diego State University Version: 1.0 (01/07/2025)

pyewt.ewt1d.ewt1d(f, params)[source]

1D Empirical Wavelet Transform

Parameters:
  • f (-) – input signal.

  • params (-) – must be set properly accordingly to the options described in the notes section below.

Returns:

  • - ewt (list) – each element of that list is a ndarray containing the corresponding components of the EWT (note, they could be either real of complex depending on the used mother wavelet).

  • - mfb (list) – each element of that list is a ndarray containing the different filters built accordingly to the detected supports and the chosen mother wavelet.

  • - boundaries (ndarray) – list of boundaries normalized in [0,pi) if f is real, or [0,2pi) if f is complex (i.e. no fftshift has been applied).

Notes

This function performs the 1D Empirical Wavelet Transform (EWT) of the input signal f, using the parameters provided in params. It has three main steps: 1) detect the supports boundaries, 2) build the wavelet filter bank, 3) perform the transform itself. The options for steps 1) and 2) are described hereafter.

STEP 1): boundary detection

If params[“log”] is set to True, then the detection is performed on the logarithm of f, otherwise it will be on f itself.

Two types of preprocessing are available to “clean” the spectrum:

  • A global trend remover method is set via params[“globtrend”]:
    • “none” : does nothing, returns f

    • “powerlaw”uses a power law to estimate the trend, returns

      f - powerlaw(f)

    • “polylaw”: uses a polynomial interpolation of degree specified
      by params[“degree”] to estimate the trend, returns

      f - polynomial(f)

    • “morpho”uses morphological operators, returns

      f - (opening(f)+closing(f))/2

    • “tophat”uses morphological operators, returns

      f - opening(f)

    • “opening”returns

      opening(f)

  • A regularization method is set via params[“reg”]:
    • “none” : does nothing, returns f

    • “gaussian”convolve f with a Gaussian of length and standard

      deviation given by params[“lengthfilter”] and params[“sigmafilter”], respectively

    • “average”: convolve f with a constant filter of length given

      by params[“lengthfilter”]

    • “closing”applies the morphological closing operator of length

      given by params[“lengthfilter”]

The wanted boundary detection method must be set in params[“detect”]. The available options are: - “localmax” : select the mid-point between consecutive maxima.

params[“N”] must be set to the expected number of modes.

  • “localmaxmin”select the lowest minima between consecutive

    maxima of the preprocessed spectrum. params[“N”] must be set to the expected number of modes.

  • “localmaxminf”select the lowest minima between consecutive

    maxima where the minima are detected on the original spectrum instead of the preprocessed one. params[“N”] must be set to the expected number of modes.

  • “adaptivereg”this method re-adjust a set of provided initial

    boundaries based on the actual lowest minima of the preprocessed spectrum params[“InitBounds”] must be set with a vector of initial boundaries

  • “adaptive”this method re-adjust a set of provided initial

    boundaries based on the actual lowest minima of the original spectrum params[“InitBounds”] must be set with a vector of initial boundaries

  • “scalespace”uses the scale-space detection technique to

    automatically find the boundaries (including their number) params[“typeDetect”] must be set to the wanted classification method. The available options are: - “otsu” : uses Otsu’s technique - “halfnormal” : uses a half-normal law to model the problem - “empiricallaw” : uses the data itself to build a model of the problem - “mean” : threshold is fixed as the mean of the data - “kmeans” : uses kmeans to classify

For the automatic detection methods, a completion step is available is the number of detected modes is lower than an expected value params[“N”]. If needed, the last high frequency support is evenly splitted. This step is performed if params[“Completion”] is set to True.

STEP 2): construction of the wavelet filter bank The name of the wanted mother wavelet must be given in params[“wavname”]. The available options are:

  • “littlewood-paley”

  • “meyer”

  • “shannon”

  • “gabor1”

  • “gabor 2”

Author: Jerome Gilles Institution: San Diego State University Version: 1.0 (01/07/2025)

pyewt.ewt1d.gabor1_filterbank(boundaries, N, cpx)[source]

Gabor wavelet filters - Option 1

Parameters:
  • boundaries (-) – It is expected that these boundaries lie in [0,pi) for a real case, and [0,2pi) for a complex case.

  • N (-) – Should correspond to the length of the Fourier transform of the signal used to detect the boundaries

  • cpx (-)

Returns:

- mfb – Each element of that list is a ndarray corresponding to each filter

Return type:

list

Notes

This function builds the set of Gabor filters corresponding to the given set of boundaries. This option build the last filter as a full Gabor filter.

Author: Jerome Gilles Institution: San Diego State University Version: 1.0 (01/07/2025)

pyewt.ewt1d.gabor2_filterbank(boundaries, N, cpx)[source]

Gabor wavelet filters - option 2

Parameters:
  • boundaries (-) – It is expected that these boundaries lie in [0,pi) for a real case, and [0,2pi) for a complex case.

  • N (-) – Should correspond to the length of the Fourier transform of the signal used to detect the boundaries

  • cpx (-)

Returns:

- mfb – Each element of that list is a ndarray corresponding to each filter

Return type:

list

Notes

This function builds the set of Gabor filters corresponding to the given set of boundaries. This option build the last filter as half a Gabor filter and the other half as a constant.

Author: Jerome Gilles Institution: San Diego State University Version: 1.0 (01/07/2025)

pyewt.ewt1d.iewt1d(ewt, mfb, cpx)[source]

Inverse 1D Empirical Wavelet Transform

Parameters:
  • -ewt (List) – Each element in that list is a ndarray containing the empirical wavelet components.

  • -mfb (List) – Each element in that list is a ndarray containing the empirical wavelet filters used to extract ewt

  • -cpx (True is the original signal was complex, False otherwise)

Returns:

Reconstructed signal

Return type:

  • rec ndarray

Notes

This function performs the inverse empirical wavelet transform from the empirical components stored in ewt.

Author: Jerome Gilles Institution: San Diego State University Version: 1.0 (01/07/2025)

pyewt.ewt1d.ifcleaning(fin, lb, ub)[source]

Instantaneous frequencies cleaning

Parameters:
  • fin (-) – contains the set of frequencies to clean

  • lb (-)

  • ub (-)

Returns:

- f – contains the cleaned frequencies

Return type:

ndarray

Notes

This function removes outliers (i.e. frequencies that are not in [lb,ub]) using interpolation.

Author: Jerome Gilles Institution: San Diego State University Version: 1.0 (01/07/2025)

pyewt.ewt1d.instantaneous_components(ewt, boundaries)[source]

Extract instantaneous amplitude and frequencies

Parameters:
  • ewt (-) – wavelet components

  • boundaries (-) – wavelet filters.

Returns:

  • - HilbA (list that contains ndarray with the instantaneous amplitude)

  • - HilbF (list that contains ndarray with the instantaneous frequencies)

Notes

This function extracts the instantaneous amplitude and frequencies for each empirical wavelet component using the Hilbert transform.

Author: Jerome Gilles Institution: San Diego State University Version: 1.0 (01/07/2025)

pyewt.ewt1d.lp_filterbank(boundaries, N, cpx)[source]

Littlewood-Paley wavelet filters

Parameters:
  • boundaries (-) – It is expected that these boundaries lie in [0,pi) for a real case, and [0,2pi) for a complex case.

  • N (-) – Should correspond to the length of the Fourier transform of the signal used to detect the boundaries

  • cpx (-)

Returns:

- mfb – Each element of that list is a ndarray corresponding to each filter

Return type:

list

Notes

This function builds the set of Littlewood-Paley filters corresponding to the given set of boundaries.

Author: Jerome Gilles Institution: San Diego State University Version: 1.0 (01/07/2025)

pyewt.ewt1d.meyer_filterbank(boundaries, N, cpx)[source]

Meyer wavelet filters

Parameters:
  • boundaries (-) – It is expected that these boundaries lie in [0,pi) for a real case, and [0,2pi) for a complex case.

  • N (-) – Should correspond to the length of the Fourier transform of the signal used to detect the boundaries

  • cpx (-)

Returns:

- mfb – Each element of that list is a ndarray corresponding to each filter

Return type:

list

Notes

This function builds the set of Meyer filters corresponding to the given set of boundaries.

Author: Jerome Gilles Institution: San Diego State University Version: 1.0 (01/07/2025)

pyewt.ewt1d.plot_ewt1d(ewt, indep=False, SamplingRate=6.283185307179586)[source]

Plot the empirical wavelet components

Parameter

  • ewt: list

    contains the 1D numpy arrays corresponding to each emprical wavelet components

  • indep: True of False (default)

    if False the components are plotted in different subplots. If True, they are plotted in different figures

  • SamplingRate: Sampling frequency

    if known we can indicate the used sampling frequency. If unknown, set it to 2*np.pi (default) to have a normalized frequancy axis, i.e. [-pi,pi)

Notes

This function plots the empirical wavelet components extracted by the EWT. If the components are complex, it plot the real and imaginary parts separately.

Author: Jerome Gilles Institution: San Diego State University Version: 1.0 (01/07/2025)

pyewt.ewt1d.plot_filterBank1d(mfb, spectrum=[], Grouped=False, SamplingRate=6.283185307179586)[source]

Plot 1D empirical wavelet filterbank

Parameters:
  • mfb (-) – contains the 1D numpy arrays corresponding to each filter

  • spectrum (-) – we assume it has not been fftshift.

  • Grouped (-) – if False, each filter is plotted on a different subplot, otherwise they are all plotted on the same figure.

  • SamplingRate (-) – if known we can indicate the used sampling frequency. If unknown, set it to 2*np.pi (default) to have a normalized frequancy axis, i.e. [-pi,pi)

Notes

This function plots the filter bank on top of the spectrum (if provided). If the filters are complex, it plots the magnitude.

Author: Jerome Gilles Institution: San Diego State University Version: 1.0 (01/07/2025)

pyewt.ewt1d.shannon_filterbank(boundaries, N, cpx)[source]

Shannon wavelet filters

Parameters:
  • boundaries (-) – It is expected that these boundaries lie in [0,pi) for a real case, and [0,2pi) for a complex case.

  • N (-) – Should correspond to the length of the Fourier transform of the signal used to detect the boundaries

  • cpx (-)

Returns:

- mfb – Each element of that list is a ndarray corresponding to each filter

Return type:

list

Notes

This function builds the set of Shannon filters corresponding to the given set of boundaries.

Author: Jerome Gilles Institution: San Diego State University Version: 1.0 (01/07/2025)

pyewt.ewt1d.timefrequency_plot(ewt, boundaries, sig, color=True, SamplingRate=6.283185307179586, GlobalNorm=True, Logmag=False)[source]

Time-Frequency plot

Parameters:
  • ewt (-) – contains the 1D numpy arrays corresponding to each emprical wavelet components

  • boundaries (-) – contains the boundaries used in the construction of the empirical wavelet filters.

  • sig (-) – original signal

  • color (-) – indicate if the plot must be done in color (True) or grayscale (False)

  • SamplingRate (-) – if known we can indicate the used sampling frequency. If unknown, set it to 2*np.pi (default) to have a normalized frequancy axis, i.e. [-pi,pi)

  • GlobalNorm (-) – indicate if the magnitude of each time-frequency curve must be normalized globally (i.e. by the maximum across all component) or individually (i.e by its own maximum). Note: if individual normalization tends to provide a more visually appealing plot, be aware the maxima for each curve (despite having the same color) are different!

  • Logmag (-) – indicate if we plot the logarithm of the magnitude.

Notes

This function extract the time-frequency information from the empirical wavelet components and plot them in the time-frequency domain. This function works only for real signals.

Author: Jerome Gilles Institution: San Diego State University Version: 1.0 (01/07/2025)