Synchrosqueezing, wavelet transforms, and time-frequency analysis in Python
Project description
Synchrosqueezing in Python
Synchrosqueezing is a powerful reassignment method that focuses time-frequency representations, and allows extraction of instantaneous amplitudes and frequencies. Friendly overview.
Features
- Forward & inverse CWT-based Synchrosqueezing
- Forward & inverse Continuous Wavelet Transform (CWT)
- Clean code with explanations and learning references
- Wavelet visualizations
Coming soon
- Forward & inverse Short-Time Fourier Transform (STFT)
- STFT-based Synchrosqueezing
- Generalized Morse Wavelets
Installation
pip install ssqueezepy
. Or, for latest version (most likely stable):
pip install git+https://github.com/OverLordGoldDragon/ssqueezepy
Examples
1. Signal recovery under severe noise
2. Medical: EEG
Introspection
ssqueezepy
is equipped with a visualization toolkit, useful for exploring wavelet behavior across scales and configurations. (Also see explanations and code)
Minimal example
import numpy as np
import matplotlib.pyplot as plt
from ssqueezepy import ssq_cwt
def viz(x, Tx, Wx):
plt.plot(x); plt.show()
plt.imshow(np.abs(Wx), aspect='auto', cmap='jet')
plt.show()
plt.imshow(np.flipud(np.abs(Tx)), aspect='auto', vmin=0, vmax=.1, cmap='jet')
plt.show()
#%%# Define signal ####################################
N = 2048
t = np.linspace(0, 10, N, endpoint=False)
xo = np.cos(2 * np.pi * np.exp(t / 3))
x = xo + np.sqrt(4) * np.random.randn(N)
#%%# SSQ CWT + CWT ####################################
Txo, _, Wxo, scales_xo, _ = ssq_cwt(xo, 'morlet')
Wxo /= np.sqrt(scales_xo) # L1 norm
viz(xo, Txo, Wxo)
Tx, _, Wx, scales_x, _ = ssq_cwt(x, 'morlet')
Wx /= np.sqrt(scales_x) # L1 norm
viz(x, Tx, Wx)
References
ssqueezepy
was originally ported from MATLAB's Synchrosqueezing Toolbox, authored by E. Brevdo and G. Thakur [1]. Synchrosqueezed Wavelet Transform was introduced by I. Daubechies and S. Maes [2], which was followed-up in [3]. Many implementation details draw from [4].
- G. Thakur, E. Brevdo, N.-S. Fučkar, and H.-T. Wu. "The Synchrosqueezing algorithm for time-varying spectral analysis: robustness properties and new paleoclimate applications", Signal Processing 93:1079-1094, 2013.
- I. Daubechies, S. Maes. "A Nonlinear squeezing of the CWT Based on Auditory Nerve Models".
- I. Daubechies, J. Lu, H.T. Wu. "Synchrosqueezed Wavelet Transforms: a Tool for Empirical Mode Decomposition", Applied and Computational Harmonic Analysis 30(2):243-261, 2011.
- Mallat, S. "Wavelet Tour of Signal Processing 3rd ed".
License
ssqueezepy is MIT licensed, as found in the LICENSE file. Some source functions may be under other authorship/licenses; see NOTICE.txt.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for ssqueezepy-0.5.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cfae66991ec4438e47df4cb7df2fd8d2f7a887ee6a6d3f28f06d1cc50b2b203b |
|
MD5 | 8fd91befb352f8b5785a0e01b8bf6c0c |
|
BLAKE2b-256 | 4b35a5a2928a45423daad505b11b275c9bdbe05e95dc61af9f26007489bc3c85 |