Skip to content

Commit a8aae5f

Browse files
committed
whenxuan: black init
1 parent 1568906 commit a8aae5f

9 files changed

Lines changed: 656 additions & 799 deletions

File tree

‎README.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,6 @@ plot_IMFs(signal, IMFs) # per-channel panels
107107
| [`BMEMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_emd2d/bmemd.py) (Bidimensional Multivariate Empirical Mode Decomposition) | [[paper]](https://ieeexplore.ieee.org/document/8805082) | [[code]](https://www.mathworks.com/matlabcentral/fileexchange/72343-bidimensional-multivariate-empirical-mode-decomposition?s_tid=FX_rc1_behav) | ✔️ |
108108
| [`CEEMDAN`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_emd/ceemdan.py) (Complete Ensemble EMD with Adaptive Noise) | [[paper]](https://ieeexplore.ieee.org/document/5947265) | [[code]](https://github.com/laszukdawid/PyEMD/blob/master/PyEMD/EEMD.py) | ✔️ |
109109
| [`TVF_EMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_emd/tvf_emd.py) (Time Varying Filter Based EMD) | [[paper]](https://www.sciencedirect.com/science/article/pii/S0165168417301135) | [[code]](https://github.com/stfbnc/pytvfemd/tree/master) | ✔️ |
110-
| [`EFD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_emd/efd.py) (Empirical Fourier Decomposition) | [[paper]](https://www.sciencedirect.com/science/article/abs/pii/S0888327021005355) | [[code]](https://www.mathworks.com/matlabcentral/fileexchange/97747-empirical-fourier-decomposition-efd) | ✔️ |
111110
| [`FAEMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_faemd/faemd.py) (Fast and Adaptive EMD) | [[paper]](https://ieeexplore.ieee.org/document/8447300) | [[code]](https://www.mathworks.com/matlabcentral/fileexchange/71270-fast-and-adaptive-multivariate-and-multidimensional-emd) | ✔️ |
112111
| [`FAEMD2D`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_faemd/faemd2d.py) (Two-Dimensional Fast and Adaptive EMD) | [[paper]](https://ieeexplore.ieee.org/document/8447300) | [[code]](https://www.mathworks.com/matlabcentral/fileexchange/71270-fast-and-adaptive-multivariate-and-multidimensional-emd) | ✔️ |
113112
| [`FAEMD3D`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_faemd/faemd3d.py) (Three-Dimensional Fast and Adaptive EMD) | [[paper]](https://ieeexplore.ieee.org/document/8447300) | [[code]](https://www.mathworks.com/matlabcentral/fileexchange/71270-fast-and-adaptive-multivariate-and-multidimensional-emd) | ✔️ |
@@ -121,6 +120,7 @@ plot_IMFs(signal, IMFs) # per-channel panels
121120
| [`FMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_tid/fmd.py) (Feature Mode Decomposition) | [[paper]](https://ieeexplore.ieee.org/document/9732251) | [[code]](https://www.mathworks.com/matlabcentral/fileexchange/108099-feature-mode-decomposition-fmd) | ✔️ |
122121
| [`SSA`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_tid/ssa.py) (Singular Spectral Analysis) | [[paper]](https://orca.cardiff.ac.uk/id/eprint/15208/1/Zhiglavsky_SSA_encyclopedia.pdf) | [[code]](https://www.mathworks.com/matlabcentral/fileexchange/58967-singular-spectrum-analysis-beginners-guide) | ✔️ |
123122
| [`EWT`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_ewt/ewt.py) (Empirical Wavelet Transform) | [[paper]](https://ieeexplore.ieee.org/document/6522142) | [[code]](https://www.mathworks.com/help/wavelet/ug/empirical-wavelet-transform.html) | ✔️ |
123+
| [`EFD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_ewt/efd.py) (Empirical Fourier Decomposition) | [[paper]](https://www.sciencedirect.com/science/article/abs/pii/S0888327021005355) | [[code]](https://www.mathworks.com/matlabcentral/fileexchange/97747-empirical-fourier-decomposition-efd) | ✔️ |
124124
| [`EWT2D`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_ewt/ewt2d.py) (2D Empirical Wavelet Transform) | [[paper]](https://arxiv.org/abs/2405.06188) | [[code]](https://github.com/bhurat/EWT-Python) | ✔️ |
125125
| [`VMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_vmd/vmd_c.py) (Variational Mode Decomposition) | [[paper]](https://ieeexplore.ieee.org/document/6655981) | [[code]](https://github.com/vrcarva/vmdpy) | ✔️ |
126126
| [`MVMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_vmd/mvmd.py) (Multivariate Variational Mode Decomposition) | [[paper]](https://ieeexplore.ieee.org/document/8890883) | [[code]](https://github.com/yunyueye/MVMD) | ✔️ |
@@ -145,7 +145,7 @@ plot_IMFs(signal, IMFs) # per-channel panels
145145
| [`MJMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_jmd/mjmd.py) (Multivariate Jump Plus AM-FM Mode Decomposition) | [[paper]](https://arxiv.org/abs/2407.07800) | [[code]](https://www.mathworks.com/matlabcentral/fileexchange/169393-multivariate-jump-plus-am-fm-mode-decomposition-mjmd?s_tid=prof_contriblnk) | ✔️ |
146146
| [`SJMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_jmd/sjmd.py) / `SMJMD` (Successive Jump and Mode Decomposition) | [[paper]](https://arxiv.org/abs/2504.08453) | [[code]]() | ✔️ |
147147
| [`ESMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_emd/esmd.py) (Extreme-Point Symmetric Mode Decomposition) | [[paper]](https://arxiv.org/abs/1303.6540) | [[code]](https://github.com/WuShichao/esmd) | ✔️ |
148-
| [`STNBMD`]() (Short-Time Narrow-Band Mode Decomposition) | [[paper]](https://www.sciencedirect.com/science/article/pii/S0022460X16002443?via%3Dihub) | [[code]](https://ww2.mathworks.cn/matlabcentral/fileexchange/56226-short-time-narrow-band-mode-decomposition-stnbmd-toolbox) | ✔️ |
148+
| [`STNBMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_vncmd/stnbmd.py) (Short-Time Narrow-Band Mode Decomposition) | [[paper]](https://www.sciencedirect.com/science/article/pii/S0022460X16002443?via%3Dihub) | [[code]](https://ww2.mathworks.cn/matlabcentral/fileexchange/56226-short-time-narrow-band-mode-decomposition-stnbmd-toolbox) | ✔️ |
149149
| [`VTFMTD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_tfa/vftmtd.py) (Variational TF Mode Tracking Decomposition) | [[paper]](https://www.sciencedirect.com/science/article/pii/S0165168426001179) | [[code]](https://www.mathworks.com/matlabcentral/fileexchange/183389-variational-time-frequency-mode-tracking-decomposition) | ✔️ |
150150
| [`SWD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_osd/swd.py) (Swarm Decomposition) | [[paper]](https://doi.org/10.1016/j.sigpro.2016.09.004) | [[code]](https://github.com/gkaposto/Swarm-Decomposition) | ✔️ |
151151
| [`OSD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_osd/osd.py) (Optimization-based Signal Decomposition) | [[paper]](https://web.stanford.edu/~boyd/papers/sig_decomp_mprox.html) | [[code]](https://github.com/cvxgrp/signal-decomposition) | ✔️ |

‎examples/acmd/acmd.ipynb‎

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -339,13 +339,17 @@
339339
")\n",
340340
"if1 = 25 + 8 * t2 - 2.4 * t2**2 + 0.28 * t2**3\n",
341341
"\n",
342-
"c2 = 0.9 * np.exp(-0.06 * t2) * np.cos(\n",
343-
" 2 * np.pi * (2.6 + 40 * t2 + 8 * t2**2 - 1.6 * t2**3 + 0.14 * t2**4)\n",
342+
"c2 = (\n",
343+
" 0.9\n",
344+
" * np.exp(-0.06 * t2)\n",
345+
" * np.cos(2 * np.pi * (2.6 + 40 * t2 + 8 * t2**2 - 1.6 * t2**3 + 0.14 * t2**4))\n",
344346
")\n",
345347
"if2 = 40 + 16 * t2 - 4.8 * t2**2 + 0.56 * t2**3\n",
346348
"\n",
347-
"c3 = 0.8 * np.exp(-0.09 * t2) * np.cos(\n",
348-
" 2 * np.pi * (3.9 + 60 * t2 + 12 * t2**2 - 2.4 * t2**3 + 0.21 * t2**4)\n",
349+
"c3 = (\n",
350+
" 0.8\n",
351+
" * np.exp(-0.09 * t2)\n",
352+
" * np.cos(2 * np.pi * (3.9 + 60 * t2 + 12 * t2**2 - 2.4 * t2**3 + 0.21 * t2**4))\n",
349353
")\n",
350354
"if3 = 60 + 24 * t2 - 7.2 * t2**2 + 0.84 * t2**3\n",
351355
"\n",

‎examples/acmd/dd_acmd.ipynb‎

Lines changed: 610 additions & 599 deletions
Large diffs are not rendered by default.

‎examples/print_functions.ipynb‎

Lines changed: 0 additions & 161 deletions
This file was deleted.

‎pysdkit/__init__.py‎

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,6 @@
2525
# Time Varying Filter based Empirical Mode Decomposition
2626
from ._emd import TVF_EMD
2727

28-
# Empirical Fourier Decomposition
29-
from ._emd import EFD
30-
3128
# Fast and Adaptive Empirical Mode Decomposition
3229
from ._faemd import FAEMD, FAEMD2D, FAEMD3D
3330

@@ -130,6 +127,9 @@
130127
# Empirical Wavelet Transform
131128
from ._ewt import ewt, EWT
132129

130+
# Empirical Fourier Decomposition (spectrum segmentation + ideal filter bank)
131+
from ._ewt import efd, EFD
132+
133133
# Empirical Wavelet Transform for 2D Images
134134
from ._ewt import ewt2d, EWT2D
135135

@@ -188,7 +188,6 @@ def print_functions():
188188
Multivariate Empirical Mode Decomposition | MEMD
189189
Serial Empirical Mode Decomposition | SEMD
190190
Time Varying Filter based EMD | TVF_EMD
191-
Empirical Fourier Decomposition | EFD
192191
Fast and Adaptive Empirical Mode Decomposition | FAEMD
193192
Bidimensional FAEMD | FAEMD2D
194193
Tridimensional FAEMD | FAEMD3D
@@ -223,6 +222,7 @@ def print_functions():
223222
Adaptive Polymorphic Mode Decomposition | APMD
224223
Impulsive Mode Decomposition | IMD
225224
Empirical Wavelet Transform | EWT
225+
Empirical Fourier Decomposition | EFD
226226
Empirical Wavelet Transform for 2D Image | EWT2D
227227
Jump Plus AM-FM Mode Decomposition | JMD
228228
Multivariate Jump Plus AM-FM Mode Decomposition | MJMD
@@ -245,7 +245,6 @@ def print_functions():
245245
"MEMD",
246246
"SEMD",
247247
"TVF_EMD",
248-
"EFD",
249248
"FAEMD",
250249
"FAEMD2D",
251250
"FAEMD3D",
@@ -298,6 +297,8 @@ def print_functions():
298297
"imd",
299298
"ewt",
300299
"EWT",
300+
"efd",
301+
"EFD",
301302
"ewt2d",
302303
"EWT2D",
303304
"JMD",

‎pysdkit/_acmd/acmd.py‎

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ def stft(
146146
win_len = int(np.ceil(win_len / 2.0) * 2)
147147
t_win = np.linspace(-1.0, 1.0, win_len)
148148
sigma = 0.28
149-
win_fun = (np.pi * sigma**2) ** (-0.25) * np.exp((- (t_win**2)) / (2.0 * sigma**2))
149+
win_fun = (np.pi * sigma**2) ** (-0.25) * np.exp((-(t_win**2)) / (2.0 * sigma**2))
150150
lh = (win_len - 1) / 2.0
151151

152152
spec = np.zeros((n_fft, sig_len), dtype=complex)
@@ -199,9 +199,9 @@ def _spsolve_safe(a, b: np.ndarray) -> np.ndarray:
199199
"""Sparse solve with dense lstsq fallback (MATLAB ``\\`` robustness)."""
200200
x = spsolve(a, b)
201201
if not np.all(np.isfinite(x)):
202-
x = np.linalg.lstsq(a.toarray(), np.asarray(b, dtype=float).ravel(), rcond=None)[
203-
0
204-
]
202+
x = np.linalg.lstsq(
203+
a.toarray(), np.asarray(b, dtype=float).ravel(), rcond=None
204+
)[0]
205205
return np.asarray(x, dtype=float).ravel()
206206

207207

@@ -275,9 +275,7 @@ def init_IF1(signal: np.ndarray, SampFreq: float, N: int) -> np.ndarray:
275275
return peak_fre * np.ones(N, dtype=float)
276276

277277
@staticmethod
278-
def differ(
279-
y: np.ndarray, delta: float, dtype: np.dtype = np.float64
280-
) -> np.ndarray:
278+
def differ(y: np.ndarray, delta: float, dtype: np.dtype = np.float64) -> np.ndarray:
281279
"""Instance-accessible wrapper around module-level ``differ``."""
282280
out = differ(y, delta)
283281
return np.asarray(out, dtype=dtype)

‎pysdkit/_acmd/ba_acmd.py‎

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,7 @@ def gini_squared_envelope(signal: np.ndarray) -> float:
8181
return float(1.0 - 2.0 * temp / (np.linalg.norm(se, 1) + np.finfo(float).eps))
8282

8383

84-
def extract_if_ia(
85-
y: np.ndarray, fs: float
86-
) -> Tuple[np.ndarray, np.ndarray]:
84+
def extract_if_ia(y: np.ndarray, fs: float) -> Tuple[np.ndarray, np.ndarray]:
8785
"""
8886
Instantaneous frequency / amplitude via padded analytic signal
8987
(MATLAB ``IFIAextrc``).
@@ -190,15 +188,11 @@ def coef_overcomplete_fourier(
190188
if (j + 1) > half:
191189
k = (j + 1) - half
192190
tmatrix_inte[:, j] = (
193-
-1.0
194-
/ (2.0 * np.pi * f0 * k)
195-
* np.cos(2.0 * np.pi * f0 * k * dt)
191+
-1.0 / (2.0 * np.pi * f0 * k) * np.cos(2.0 * np.pi * f0 * k * dt)
196192
)
197193

198194
eye_m = np.eye(order_amp)
199-
coeff = np.linalg.solve(
200-
alpha * eye_m + tmatrix.T @ tmatrix, tmatrix.T @ f
201-
)
195+
coeff = np.linalg.solve(alpha * eye_m + tmatrix.T @ tmatrix, tmatrix.T @ f)
202196
fitf = tmatrix @ coeff
203197
finte = tmatrix_inte @ coeff
204198
return fitf, finte
@@ -232,9 +226,7 @@ def spectrum_trend_generate(
232226

233227
# Local minima of the spectrum trend
234228
minima, _ = find_peaks(-spec_trend)
235-
temp_index = np.concatenate(
236-
([0], minima.astype(int), [freq_bin.size - 1])
237-
)
229+
temp_index = np.concatenate(([0], minima.astype(int), [freq_bin.size - 1]))
238230

239231
temp_frn = temp_index[:-1]
240232
temp_end = temp_index[1:]

0 commit comments

Comments
 (0)