Skip to main content

PySDKit: signal decomposition in Python

PyPI version License Python Downloads codestyle

A Python library for signal decomposition algorithms 🥳

Installation | Example Script | Target | Acknowledgements

Logo_sd

Installation 🚀

You can install PySDKit through pip:

pip install pysdkit

We only used NumPy, Scipy and matplotlib when developing the project.

Example Script ✨

This project integrates simple signal processing methods, signal decomposition and visualization, and builds a general interface similar to Scikit-learn. It is mainly divided into three steps:

  1. Import the signal decomposition method;
  2. Create an instance for signal decomposition;
  3. Use the fit_transform method to implement signal decomposition;
  4. Visualize and analyze the original signal and the intrinsic mode functions IMFs obtained by decomposition.
import numpy as np
from pysdkit import EMD
from pysdkit.plot import plot_IMFs

t = np.linspace(0, 1, 1000)
signal = np.sin(2 * np.pi * 5 * t) + 0.7 * np.sin(2 * np.pi * 25 * t) + 0.45 * np.sin(2 * np.pi * 80 * t)

emd = EMD()
IMFs = emd.fit_transform(signal, max_imfs=3)
plot_IMFs(signal, IMFs, view="2d_freq", fs=1000, freq_max=150)

example

The EMD in the above example is the most classic empirical mode decomposition algorithm in signal decomposition. For more complex signals, you can try other algorithms such as variational mode decomposition (VMD).

from pysdkit import VMD
from pysdkit.data import test_vmd
from pysdkit.plot import plot_IMFs

t, signal, fs = test_vmd()

vmd = VMD(alpha=2000, K=4, tau=0.0, tol=1e-7)
IMFs = vmd.fit_transform(signal)
plot_IMFs(signal, IMFs, view="2d_freq", fs=fs, freq_max=fs / 2)

vmd_example

For multichannel recordings, algorithms such as multivariate VMD (MVMD) keep shared oscillations mode-aligned across channels:

import numpy as np
from pysdkit import MVMD
from pysdkit.plot import plot_IMFs

t = np.arange(0, 1, 0.001)
# ch1: 2+36 Hz, ch2: 24+36 Hz, ch3: 80+36 Hz (36 Hz shared)
signal = np.vstack([
    np.cos(2*np.pi*2*t) + np.cos(2*np.pi*36*t),
    np.cos(2*np.pi*24*t) + np.cos(2*np.pi*36*t),
    np.cos(2*np.pi*80*t) + np.cos(2*np.pi*36*t),
])

mvmd = MVMD(alpha=2000, K=4, tau=0.0, init="uniform")
IMFs = mvmd.fit_transform(signal)   # shape: (K, T, C)
plot_IMFs(signal, IMFs)             # per-channel panels

mvmd_example

Target 🎯

PySDKit is still under development. We are currently working on reproducing the signal decomposition algorithms in the table below, including not only common decomposition algorithms for univariate signals such as EMD, VMD, OVMD, AVNCMD, ALIF and APMD, but also decomposition algorithms for multivariate signals such as MEMD and MVMD. We will also further reproduce the decomposition algorithms for two-dimensional images to make PySDKit not only suitable for signal processing, but also for image analysis and understanding. See Mission for the reasons why we developed PySDKit.

Algorithm Paper Source State
EMD (Empirical Mode Decomposition) [paper] [code] ✔️
MEMD (Multivariate Empirical Mode Decomposition) [paper] [code] ✔️
EEMD (Ensemble Empirical Mode Decomposition) [paper] [code] ✔️
REMD (Robust Empirical Mode Decomposition) [paper] [code] ✔️
EMD2D (Empirical Mode Decomposition 2D for images) [paper] [code] ✔️
BMEMD (Bidimensional Multivariate Empirical Mode Decomposition) [paper] [code] ✔️
CEEMDAN (Complete Ensemble EMD with Adaptive Noise) [paper] [code] ✔️
TVF_EMD (Time Varying Filter Based EMD) [paper] [code] ✔️
FAEMD (Fast and Adaptive EMD) [paper] [code] ✔️
FAEMD2D (Two-Dimensional Fast and Adaptive EMD) [paper] [code] ✔️
FAEMD3D (Three-Dimensional Fast and Adaptive EMD) [paper] [code] ✔️
HVD (Hilbert Vibration Decomposition) [paper] [code] ✔️
ITD (Intrinsic Time-Scale Decomposition) [paper] [code] ✔️
ALIF (Adaptive Local Iterative Filtering) [paper] [code] ✔️
IMD (Impulsive Mode Decomposition) [paper] [code] ✔️
APMD (Adaptive Polymorphic Mode Decomposition) [paper] [code] ✔️
LMD (Local Mean Decomposition) [paper] [code] ✔️
RLMD (Robust Local Mean Decomposition) [paper] [code] ✔️
FMD (Feature Mode Decomposition) [paper] [code] ✔️
SSA (Singular Spectral Analysis) [paper] [code] ✔️
EWT (Empirical Wavelet Transform) [paper] [code] ✔️
EFD (Empirical Fourier Decomposition) [paper] [code] ✔️
EWT2D (2D Empirical Wavelet Transform) [paper] [code] ✔️
VMD (Variational Mode Decomposition) [paper] [code] ✔️
MVMD (Multivariate Variational Mode Decomposition) [paper] [code] ✔️
VMD2D (Two-Dimensional Variational Mode Decomposition) [paper] [code] ✔️
CVMD2D (Two-Dimensional Compact Variational Mode Decomposition) [paper] [code] ✔️
VME (Variational Mode Extraction) [paper] [code] ✔️
OVMD (Orthogonalized Variational Mode Decomposition) [paper] [code] ✔️
SVMD (Successive Variational Mode Decomposition) [paper] [code] ✔️
STVMD (Short Time Variational Mode Decomposition) [paper] [code] ✔️
VNCMD (Variational Nonlinear Chirp Mode Decomposition) [paper] [code] ✔️
INCMD (Iterative Nonlinear Chirp Mode Decomposition) [paper] [code] ✔️
MNCMD (Multivariate Nonlinear Chirp Mode Decomposition) [paper] [code] ✖️
AVNCMD (Adaptive Variational Nonlinear Chirp Mode Decomposition) [paper] [code] ✔️
ACMD (Adaptive Chirp Mode Decomposition) [paper] [code] ✔️
BA-ACMD (Bandwidth-aware Adaptive Chirp Mode Decomposition) [paper] [code] ✔️
DD-ACMD (Data-driven Adaptive Chirp Mode Decomposition) [paper] [code] ✔️
GDMD (Generalized Dispersion Mode Decomposition) [paper] [code] ✔️
VGNMD (Variational Generalized Nonlinear Mode Decomposition) [paper] [code] ✔️
IVGNMD (Improved Variational Generalized Nonlinear Mode Decomposition) [paper] [code] ✔️
AGNCMD (Adaptive Generalized Dispersive Mode Decomposition) [paper] [code] ✔️
JMD (Jump Plus AM-FM Mode Decomposition) [paper] [code] ️✔️
MJMD (Multivariate Jump Plus AM-FM Mode Decomposition) [paper] [code] ✔️
SJMD / SMJMD (Successive Jump and Mode Decomposition) [paper] [code] ✔️
ESMD (Extreme-Point Symmetric Mode Decomposition) [paper] [code] ✔️
STNBMD (Short-Time Narrow-Band Mode Decomposition) [paper] [code] ✔️
VTFMTD (Variational TF Mode Tracking Decomposition) [paper] [code] ✔️
SWD (Swarm Decomposition) [paper] [code] ✔️
OSD (Optimization-based Signal Decomposition) [paper] [code] ✔️
STL (Seasonal-Trend decomposition using LOESS) [paper] [code] ✔️
MSTL (Multivariate Seasonal-Trend decomposition using LOESS) [paper] [code] ✔️

Acknowledgements 🎖️

We would like to thank the researchers in signal processing for providing us with valuable algorithms and promoting the continuous progress in this field. However, since the main programming language used in signal processing is Matlab, and Python is the main battlefield of machine learning and deep learning, the usage of signal decomposition in machine learning and deep learning is far less extensive than wavelet transformation. In order to further promote the organic combination of signal decomposition and machine learning, we developed PySDKit. We would like to express our gratitude to PyEMD, Sktime, Scikit-learn, Scikit-Image, statsmodels, vmdpy, MEMD-Python-, ewtpy, EWT-Python, PyLMD, pywt, SP_Lib, dsatools and signal-decomposition.

Contributing 🤗

This project exists thanks to all the people who contribute.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pysdkit-0.4.51.tar.gz (1.9 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pysdkit-0.4.51-py3-none-any.whl (2.0 MB view details)

Uploaded Python 3

File details

Details for the file pysdkit-0.4.51.tar.gz.

File metadata

  • Download URL: pysdkit-0.4.51.tar.gz
  • Upload date:
  • Size: 1.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for pysdkit-0.4.51.tar.gz
Algorithm Hash digest
SHA256 584ae15fdc29f0051e7aff5dcf5699669d2d0e37017122e2c8238537e61d8c92
MD5 3a57b44169aae78eaca338febf9620fc
BLAKE2b-256 ec98691229d3ea08876bfa950dd634a7565ad5362c66499f8af14236bf087c51

See more details on using hashes here.

Provenance

The following attestation bundles were made for pysdkit-0.4.51.tar.gz:

Publisher: publish.yml on wwhenxuan/PySDKit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pysdkit-0.4.51-py3-none-any.whl.

File metadata

  • Download URL: pysdkit-0.4.51-py3-none-any.whl
  • Upload date:
  • Size: 2.0 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for pysdkit-0.4.51-py3-none-any.whl
Algorithm Hash digest
SHA256 9a04cb61c885cfeeafc157b4f4dd407fb5f4566710c6b227a6aedace4b5a456b
MD5 1de4acf2e3124fa61006dc310ee9b947
BLAKE2b-256 dc59eab71a2efe88a6a44acf902b5015d3c5787498eb17a7d2f121e2a55e7c08

See more details on using hashes here.

Provenance

The following attestation bundles were made for pysdkit-0.4.51-py3-none-any.whl:

Publisher: publish.yml on wwhenxuan/PySDKit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.5.0

2 files

0.4.56

2 files

0.4.55

2 files

0.4.54

2 files

0.4.53

2 files

0.4.52

2 files

This release

0.4.51 This release

2 files

0.4.50

2 files

0.4.49

2 files

0.4.48

2 files

0.4.47

2 files

0.4.46

2 files

0.4.45

2 files

0.4.44

2 files

0.4.43

2 files

0.4.42

2 files

0.4.41

2 files

0.4.40

2 files

0.4.39

2 files

0.4.38

2 files

0.4.37

2 files

0.4.36

2 files

0.4.35

2 files

0.4.34

2 files

0.4.33

2 files

0.4.32

2 files

0.4.31

2 files

0.4.30

2 files

0.4.29

2 files

0.4.28

2 files

0.4.27

2 files

0.4.26

2 files

0.4.25

2 files

0.4.24

2 files

0.4.23

2 files

0.4.22

2 files

0.4.21

2 files

0.4.20

2 files

0.4.19

2 files

0.4.18

2 files

0.4.17

2 files

0.4.16

2 files

0.4.15

2 files

0.4.14

2 files

0.4.13

2 files

0.4.12

2 files

0.4.11

2 files

0.4.10

2 files

0.4.7

2 files

0.4.6

2 files

0.4.5

2 files

0.4.4

2 files

0.4.2

2 files

0.4.1

2 files

0.4

2 files

0.3

2 files

0.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page