SignalFilters/README.md

3.6 KiB

Signal Filtering and Generation of Synthetic Time-Series

Reference

Characteristics

  • The code has been written and tested in Python 3.7.7.
  • Implementation of several digital signal filters and functions for the generation of synthetic (surrogate) time-series.
  • Filters (filters.py):
    • Generic Generic filter.
    • SMA Simple moving average.
    • EMA Exponential moving average.
    • WMA Weighted moving average.
    • MSMA Modified simple moving average.
    • MLSQ Modified least-squares quadratic.
    • ButterOrig Butterworth original filter.
    • ButterMod Butterworth modified filter.
    • SuperSmooth Supersmoother filter.
    • GaussLow Gauss low pass filter.
    • GaussHigh Gauss high pass filter.
    • BandPass Band-pass filter.
    • BandStop Band-stop filter.
    • ZEMA1 Zero-lag EMA (type 1).
    • ZEMA2 Zero-lag EMA (type 2).
    • InstTrend Instantaneous trendline.
    • SincFilter Sinc function filter.
    • Decycler De-cycler filter.
    • DecyclerOsc De-cycle oscillator.
    • ABG Alpha-beta-gamma filter.
    • Kalman One-dimensional steady-state Kalman filter.
  • Synthetic time-series (synthetic.py):
    • synthetic_wave Generates multi-sine wave given periods, amplitudes, and phases.
    • synthetic_sampling Generates surrogates using randomized-sampling (bootstrap) with or without replacement.
    • synthetic_FFT Generates surrogates using the phase-randomized Fourier-transform algorithm.
    • synthetic_MEboot Generates surrogates using the maximum entropy bootstrap algorithm.
  • File filters.py includes also functions to plot the filter signal, frequency response, and group delay.
  • File synthetic.py includes also functions to differentiate, integrate, normalize, and scale the discrete time-series.
  • Usage: python test.py example.

Main Parameters

example Name of the example to run (Filters, Kalman, FFT_boot, ME_boot, Response).

data_file File with the dataset (csv format). The extension is added automatically.

X Dataset to filter/time-series (input). It must be a 1D array, i.e. of shape (:, ), (:, 1), or (1, :).

b Transfer response coefficients (numerator).

a Transfer response coefficients (denominator).

Y Filtered dataset (output).

X_synt Surrogate/synthetic generated time-series (output).

n_reps Number of surrogates/synthetic time-series to generate.

Examples

There are five examples (all of them use the dataset in spx.csv). The results are shown here.

  • Filter Example showing filtering using an EMA, a Butterworth modified filter, and a type 2 Zero-lag EMA.

  • Kalman Example showing filtering using the three types of Kalman filter (alpha, alpha-beta, and alpha-beta-gamma).

  • FFT_boot Example showing the generation of surrogates time-series using the Fourier-transform algorithm and discrete differences.

  • ME_boot Example showing the generation of surrogates time-series using the maximum entropy bootstrap algorithm and discrete differences.

  • Response Example showing the frequency response and lag/group delay for a band-pass filter.