PySDKit 0.4.30__tar.gz → 0.4.31__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. {pysdkit-0.4.30 → pysdkit-0.4.31}/LICENSE +21 -21
  2. {pysdkit-0.4.30 → pysdkit-0.4.31}/PKG-INFO +194 -194
  3. {pysdkit-0.4.30 → pysdkit-0.4.31}/PySDKit.egg-info/PKG-INFO +194 -194
  4. {pysdkit-0.4.30 → pysdkit-0.4.31}/PySDKit.egg-info/SOURCES.txt +4 -3
  5. {pysdkit-0.4.30 → pysdkit-0.4.31}/README.md +140 -140
  6. {pysdkit-0.4.30 → pysdkit-0.4.31}/pyproject.toml +68 -68
  7. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/__init__.py +224 -218
  8. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_alif/__init__.py +6 -6
  9. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_alif/alif.py +191 -191
  10. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_alif/data/__init__.py +1 -1
  11. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_alif/iterative_filtering.py +405 -405
  12. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_apmd/__init__.py +7 -7
  13. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_apmd/apmd.py +829 -829
  14. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_emd/__init__.py +27 -27
  15. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_emd/_find_extrema.py +146 -146
  16. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_emd/_prepare_points.py +275 -275
  17. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_emd/_splines.py +130 -130
  18. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_emd/ceemdan.py +381 -381
  19. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_emd/eemd.py +296 -296
  20. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_emd/efd.py +204 -204
  21. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_emd/emd.py +551 -551
  22. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_emd/hht/__init__.py +7 -7
  23. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_emd/hht/frequency.py +105 -105
  24. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_emd/hht/hht.py +251 -251
  25. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_emd/memd.py +833 -833
  26. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_emd/remd.py +545 -545
  27. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_emd/tvf_emd.py +671 -671
  28. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_emd2d/__init__.py +7 -7
  29. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_emd2d/bemd.py +6 -6
  30. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_emd2d/bmemd.py +23 -23
  31. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_emd2d/emd2d.py +410 -410
  32. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_esmd/__init__.py +6 -6
  33. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_esmd/esmd.py +12 -12
  34. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_ewt/__init__.py +13 -9
  35. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_ewt/ewt.py +567 -567
  36. pysdkit-0.4.31/pysdkit/_ewt/ewt2d.py +828 -0
  37. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_faemd/__init__.py +12 -12
  38. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_faemd/extrema.py +137 -137
  39. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_faemd/faemd.py +460 -460
  40. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_faemd/faemd2d.py +35 -35
  41. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_faemd/faemd3d.py +32 -32
  42. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_faemd/filter.py +45 -45
  43. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_fmd/__init__.py +7 -7
  44. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_fmd/fmd.py +302 -302
  45. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_fmd/nfmd.py +25 -25
  46. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_hvd/__init__.py +7 -7
  47. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_hvd/hvd.py +213 -213
  48. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_itd/__init__.py +7 -7
  49. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_itd/itd.py +189 -189
  50. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_jmd/__init__.py +11 -11
  51. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_jmd/jmd.py +288 -288
  52. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_jmd/mjmd.py +302 -302
  53. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_jmd/sjmd.py +464 -464
  54. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_lmd/__init__.py +9 -9
  55. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_lmd/lmd.py +323 -323
  56. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_lmd/rlmd.py +747 -747
  57. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_osd/__init__.py +21 -21
  58. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_ssa/__init__.py +7 -7
  59. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_ssa/ssa.py +147 -147
  60. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_vmd/__init__.py +18 -18
  61. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_vmd/acmd.py +246 -246
  62. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_vmd/avmd.py +27 -27
  63. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_vmd/ba_acmd.py +35 -35
  64. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_vmd/base.py +82 -82
  65. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_vmd/mvmd.py +259 -259
  66. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_vmd/ovmd.py +244 -244
  67. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_vmd/svmd.py +401 -401
  68. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_vmd/vmd_c.py +273 -273
  69. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_vmd/vmd_f.py +157 -157
  70. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_vmd/vme.py +219 -219
  71. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_vmd2d/__init__.py +9 -9
  72. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_vmd2d/cvmd2d.py +470 -470
  73. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_vmd2d/vmd2d.py +281 -281
  74. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_vncmd/__init__.py +11 -11
  75. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_vncmd/avncmd.py +491 -491
  76. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_vncmd/incmd.py +326 -326
  77. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_vncmd/mncmd.py +11 -11
  78. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_vncmd/vncmd.py +350 -350
  79. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/data/__init__.py +93 -93
  80. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/data/_add_noise.py +29 -29
  81. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/data/_cube.py +291 -291
  82. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/data/_generator.py +420 -420
  83. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/data/_image.py +375 -375
  84. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/data/_models.py +35 -35
  85. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/data/_test_univariate.py +399 -399
  86. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/data/_time_series.py +137 -137
  87. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/data/texture.txt +256 -256
  88. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/entropy/__init__.py +21 -21
  89. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/entropy/_approxiamte_entropy.py +7 -7
  90. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/entropy/_permutation_entropy.py +149 -149
  91. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/entropy/_sample_entropy.py +198 -198
  92. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/models/__init__.py +10 -10
  93. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/models/_base.py +115 -115
  94. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/models/_kmeans.py +6 -6
  95. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/models/_knn.py +200 -200
  96. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/models/_pca.py +230 -230
  97. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/plot/__init__.py +24 -24
  98. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/plot/_fourier_spectra.py +226 -226
  99. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/plot/_functions.py +102 -102
  100. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/plot/_plot_images.py +222 -222
  101. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/plot/_plot_imfs.py +587 -587
  102. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/plot/_plot_signal.py +135 -135
  103. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/tests/__init__.py +12 -12
  104. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/tests/data/__init__.py +2 -2
  105. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/tests/data/test_generator_cube.py +6 -6
  106. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/tests/data/test_generator_image.py +6 -6
  107. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/tests/data/test_generator_signal.py +244 -244
  108. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/tests/data/test_generator_univariate_signal.py +152 -152
  109. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/tests/models/__init__.py +2 -2
  110. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/tests/models/test_knn.py +190 -190
  111. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/tests/models/test_pca.py +80 -80
  112. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/tests/run_all.py +57 -57
  113. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/tests/test_alif.py +106 -106
  114. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/tests/test_apmd.py +124 -124
  115. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/tests/test_avncmd.py +127 -127
  116. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/tests/test_ceemdan.py +285 -285
  117. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/tests/test_emd.py +290 -290
  118. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/tests/test_ewt.py +166 -166
  119. pysdkit-0.4.31/pysdkit/tests/test_ewt2d.py +162 -0
  120. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/tests/test_faemd.py +206 -206
  121. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/tests/test_faemd2d.py +11 -11
  122. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/tests/test_faemd3d.py +11 -11
  123. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/tests/test_itd.py +116 -116
  124. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/tests/test_jmd.py +108 -108
  125. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/tests/test_lmd.py +80 -80
  126. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/tests/test_moving_decomp.py +262 -262
  127. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/tests/test_ovmd.py +100 -100
  128. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/tests/test_rlmd.py +80 -80
  129. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/tests/test_sjmd.py +160 -160
  130. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/tests/test_stl.py +153 -153
  131. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/tests/test_vmd.py +217 -217
  132. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/tests/test_vmd2d.py +153 -153
  133. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/tsa/__init__.py +14 -14
  134. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/tsa/_dtw.py +54 -54
  135. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/tsa/_moving_decomp.py +251 -251
  136. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/tsa/_mstl.py +24 -24
  137. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/tsa/_stl.py +464 -464
  138. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/utils/__init__.py +115 -115
  139. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/utils/_cite.py +33 -33
  140. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/utils/_correlation.py +342 -342
  141. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/utils/_diagnalization.py +224 -224
  142. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/utils/_differ.py +34 -34
  143. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/utils/_fft.py +32 -32
  144. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/utils/_function.py +357 -357
  145. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/utils/_hilbert.py +208 -208
  146. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/utils/_instantaneous.py +262 -262
  147. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/utils/_kernel_matrix.py +287 -287
  148. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/utils/_mirror.py +47 -47
  149. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/utils/_process.py +156 -156
  150. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/utils/_smooth1d.py +124 -124
  151. {pysdkit-0.4.30 → pysdkit-0.4.31}/setup.cfg +4 -4
  152. pysdkit-0.4.30/pysdkit/_ewt/ewt2d.py +0 -11
  153. {pysdkit-0.4.30 → pysdkit-0.4.31}/PySDKit.egg-info/dependency_links.txt +0 -0
  154. {pysdkit-0.4.30 → pysdkit-0.4.31}/PySDKit.egg-info/requires.txt +0 -0
  155. {pysdkit-0.4.30 → pysdkit-0.4.31}/PySDKit.egg-info/top_level.txt +0 -0
  156. {pysdkit-0.4.30 → pysdkit-0.4.31}/pysdkit/_alif/data/prefixed_double_filter.npy +0 -0
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2019 Whenxuan Wang
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2019 Whenxuan Wang
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -1,194 +1,194 @@
1
- Metadata-Version: 2.4
2
- Name: PySDKit
3
- Version: 0.4.30
4
- Summary: A Python library for signal decomposition algorithms with a unified interface.
5
- Author: josefinez, Deeksha Manjunath, Yuan Feng, JacktheFowler
6
- Author-email: Whenxuan Wang <wwhenxuan@gmail.com>, RuiZhe Wang <3133986068@qq.com>, WenTong Zhao <23049200290@stu.xidian.edu.cn>
7
- Maintainer-email: Whenxuan Wang <wwhenxuan@gmail.com>
8
- License: MIT License
9
-
10
- Copyright (c) 2019 Whenxuan Wang
11
-
12
- Permission is hereby granted, free of charge, to any person obtaining a copy
13
- of this software and associated documentation files (the "Software"), to deal
14
- in the Software without restriction, including without limitation the rights
15
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
16
- copies of the Software, and to permit persons to whom the Software is
17
- furnished to do so, subject to the following conditions:
18
-
19
- The above copyright notice and this permission notice shall be included in all
20
- copies or substantial portions of the Software.
21
-
22
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
25
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
27
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
28
- SOFTWARE.
29
-
30
- Project-URL: Homepage, https://github.com/wwhenxuan/PySDKit
31
- Project-URL: Repository, https://github.com/wwhenxuan/PySDKit
32
- Project-URL: Issues, https://github.com/wwhenxuan/PySDKit/issues
33
- Keywords: signal decomposition,signal processing,machine learning
34
- Classifier: Development Status :: 3 - Alpha
35
- Classifier: Intended Audience :: Science/Research
36
- Classifier: Topic :: Scientific/Engineering :: Mathematics
37
- Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
38
- Classifier: License :: OSI Approved :: MIT License
39
- Classifier: Programming Language :: Python :: 3
40
- Classifier: Programming Language :: Python :: 3.8
41
- Classifier: Programming Language :: Python :: 3.9
42
- Classifier: Programming Language :: Python :: 3.10
43
- Classifier: Programming Language :: Python :: 3.11
44
- Classifier: Programming Language :: Python :: 3.12
45
- Requires-Python: >=3.8
46
- Description-Content-Type: text/markdown
47
- License-File: LICENSE
48
- Requires-Dist: numpy>=1.24.3
49
- Requires-Dist: scipy>=1.11.1
50
- Requires-Dist: matplotlib>=3.7.2
51
- Requires-Dist: tqdm>=4.66.5
52
- Requires-Dist: requests>=2.32.3
53
- Dynamic: license-file
54
-
55
- # PySDKit: signal decomposition in Python
56
-
57
- <div align="center">
58
-
59
- [![PyPI version](https://badge.fury.io/py/PySDKit.svg)](https://pypi.org/project/PySDKit/)
60
- ![License](https://img.shields.io/github/license/wwhenxuan/PySDKit)
61
- [![Python](https://img.shields.io/badge/python-3.8+-blue?logo=python)](https://www.python.org/)
62
- [![Downloads](https://pepy.tech/badge/pysdkit)](https://pepy.tech/project/pysdkit)
63
- [![codestyle](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
64
-
65
- A Python library for signal decomposition algorithms 🥳
66
-
67
- [Installation](#Installation) |
68
- [Example Script](#Example-Script) |
69
- [Target](#Target) |
70
- [Acknowledgements](#Acknowledgements)
71
-
72
- <img src="https://raw.githubusercontent.com/wwhenxuan/PySDKit/main/images/Logo_sd.png" alt="Logo_sd" width="500"/>
73
-
74
- </div>
75
-
76
- ## Installation 🚀 <a id="Installation"></a>
77
-
78
- You can install `PySDKit` through pip:
79
-
80
- ~~~
81
- pip install pysdkit
82
- ~~~
83
-
84
- We only used [`NumPy`](https://numpy.org/), [`Scipy`](https://scipy.org/) and [`matplotlib`](https://matplotlib.org/) when developing the project.
85
-
86
- ## Example Script ✨ <a id="Example-Script"></a>
87
-
88
- This project integrates simple signal processing methods, signal decomposition and visualization, and builds a general interface similar to [`Scikit-learn`](https://scikit-learn.org/stable/). It is mainly divided into three steps:
89
- 1. Import the signal decomposition method;
90
- 2. Create an instance for signal decomposition;
91
- 3. Use the `fit_transform` method to implement signal decomposition;
92
- 4. Visualize and analyze the original signal and the intrinsic mode functions IMFs obtained by decomposition.
93
-
94
- ~~~python
95
- from pysdkit import EMD
96
- from pysdkit.data import test_emd
97
- from pysdkit.plot import plot_IMFs
98
-
99
- t, signal = test_emd()
100
-
101
- # create an instance for signal decomposition
102
- emd = EMD()
103
- # implement signal decomposition
104
- IMFs = emd.fit_transform(signal, max_imfs=2)
105
- plot_IMFs(signal, IMFs)
106
- ~~~
107
-
108
- ![example](https://raw.githubusercontent.com/wwhenxuan/PySDKit/main/images/example.jpg)
109
-
110
- The EMD in the above example is the most classic [`empirical mode decomposition`](https://www.mathworks.com/help/signal/ref/emd.html) algorithm in signal decomposition. For more complex signals, you can try other algorithms such as variational mode decomposition ([`VMD`](https://ieeexplore.ieee.org/abstract/document/6655981)).
111
-
112
- ~~~python
113
- import numpy as np
114
- from pysdkit import VMD
115
-
116
- # load new signal
117
- signal = np.load("./example/example.npy")
118
-
119
- # use variational mode decomposition
120
- vmd = VMD(alpha=500, K=3, tau=0.0, tol=1e-9)
121
- IMFs = vmd.fit_transform(signal=signal)
122
- print(IMFs.shape)
123
-
124
- vmd.plot_IMFs(save_figure=True)
125
- ~~~
126
-
127
- ![vmd_example](https://raw.githubusercontent.com/wwhenxuan/PySDKit/main/images/vmd_example.jpg)
128
-
129
- Better observe the characteristics of the decomposed intrinsic mode function in the frequency domain.
130
-
131
- ~~~python
132
- from pysdkit.plot import plot_IMFs_amplitude_spectra
133
-
134
- # frequency domain visualization
135
- plot_IMFs_amplitude_spectra(IMFs, smooth="exp") # use exp smooth
136
- ~~~
137
-
138
- ![frequency_example](https://raw.githubusercontent.com/wwhenxuan/PySDKit/main/images/frequency_example.jpg)
139
-
140
- ## Target 🎯 <a id="Target"></a>
141
-
142
- `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`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/README.md) for the reasons why we developed PySDKit.
143
-
144
- | Algorithm | Paper | Code | State |
145
- |:---------------------------------------------------------------------------------------------------------------------------------------------:| :----------------------------------------------------------: | :----------------------------------------------------------: |:--------:|
146
- | [`EMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_emd/emd.py) (Empirical Mode Decomposition) | [[paper]](https://royalsocietypublishing.org/doi/abs/10.1098/rspa.1998.0193) | [[code]](https://www.mathworks.com/help/signal/ref/emd.html) | ✔️ |
147
- | [`MEMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_emd/memd.py) (Multivariate Empirical Mode Decomposition) | [[paper]](https://royalsocietypublishing.org/doi/full/10.1098/rspa.2009.0502) | [[code]](https://www.mathworks.com/matlabcentral/fileexchange/71270-fast-and-adaptive-multivariate-and-multidimensional-emd) | ✔️ |
148
- | [`BEMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_emd2d/bemd.py) (Bidimensional Empirical Mode Decomposition) | [[paper]](https://www.sciencedirect.com/science/article/abs/pii/S0262885603000945) | [[code]](https://github.com/laszukdawid/PyEMD/blob/master/PyEMD/BEMD.py) | ✖️ |
149
- | [`CEMD`]() (Complex Empirical Mode Decomposition) | [[paper]](https://ieeexplore.ieee.org/abstract/document/4063369) | [[code]]() | ✖️ |
150
- | [`EEMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_emd/eemd.py) (Ensemble Empirical Mode Decomposition) | [[paper]](https://www.sciencedirect.com/topics/physics-and-astronomy/ensemble-empirical-mode-decomposition) | [[code]](https://github.com/laszukdawid/PyEMD/blob/master/PyEMD/EEMD.py) | ✔️ |
151
- | [`REMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_emd/remd.py) (Robust Empirical Mode Decomposition) | [[paper]](https://www.sciencedirect.com/science/article/pii/S0019057821003785) | [[code]](https://www.mathworks.com/matlabcentral/fileexchange/70032-robust-empirical-mode-decomposition-remd) | ✔️ |
152
- | [`EMD2D`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_emd2d/emd2d.py) (Empirical Mode Decomposition 2D for images) | [[paper]](http://aquador.vovve.net/IEMD/) | [[code]](http://aquador.vovve.net/IEMD/) | ✔️ |
153
- | [`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) | ✖️ |
154
- | [`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) | ✔️ |
155
- | [`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) | ✔️ |
156
- | [`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) | ✔️ |
157
- | [`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) | ✔️ |
158
- | [`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) | ✖️ |
159
- | [`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) | ✖️ |
160
- | [`HVD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_hvd/hvd.py) (Hilbert Vibration Decomposition) | [[paper]](https://www.sciencedirect.com/science/article/pii/S0022460X06001556) | [[code]](https://www.mathworks.com/matlabcentral/fileexchange/178804-hilbert-vibration-decomposition?s_tid=FX_rc1_behav) | ✔️ |
161
- | [`ITD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_itd/itd.py) (Intrinsic Time-Scale Decomposition) | [[paper]](https://royalsocietypublishing.org/doi/10.1098/rspa.2006.1761) | [[code]](https://www.mathworks.com/matlabcentral/fileexchange/69380-intrinsic-time-scale-decomposition-itd) | ✔️ |
162
- | [`ALIF`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_alif/alif.py) (Adaptive Local Iterative Filtering) | [[paper]](https://arxiv.org/abs/1411.6051) | [[code]](https://github.com/Cicone/ALIF) | ✔️ |
163
- | [`APMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_apmd/apmd.py) (Adaptive Polymorphic Mode Decomposition) | [[paper]](https://doi.org/10.1016/j.dsp.2024.104913) | [[code]](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_apmd/apmd.py) | ✔️ |
164
- | [`LMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_lmd/lmd.py) (Local Mean Decomposition) | [[paper]](https://www.sciencedirect.com/science/article/abs/pii/S1051200418308133?via%3Dihub) | [[code]](https://github.com/shownlin/PyLMD/blob/master/PyLMD/LMD.py) | ✔️ |
165
- | [`RLMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_lmd/rlmd.py) (Robust Local Mean Decomposition) | [[paper]](https://www.sciencedirect.com/science/article/abs/pii/S0888327017301619) | [[code]](https://www.mathworks.com/matlabcentral/fileexchange/66935-robust-local-mean-decomposition-rlmd) | ✔️ |
166
- | [`FMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_fmd/fmd.py) (Feature Mode Decomposition) | [[paper]](https://ieeexplore.ieee.org/document/9732251) | [[code]](https://www.mathworks.com/matlabcentral/fileexchange/108099-feature-mode-decomposition-fmd) | ✔️ |
167
- | [`NFMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_fmd/nfmd.py) (Non-stationary Feature Mode Decomposition) | [[paper]](https://ieeexplore.ieee.org/document/9732251) | [[code]](https://github.com/sheadan/NFMD-ExtractionInstantaneous/blob/master/nfmd/NFMD.py) | ✖️ |
168
- | [`SSA`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_ssa/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) | ✔️ |
169
- | [`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) | ✔️ |
170
- | [`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) | ✖️ |
171
- | [`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) | ✔️ |
172
- | [`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) | ✔️ |
173
- | [`VMD2D`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_vmd2d/vmd2d.py) (Two-Dimensional Variational Mode Decomposition) | [[paper]](https://ww3.math.ucla.edu/camreport/cam14-16.pdf) | [[code]](https://www.mathworks.com/matlabcentral/fileexchange/45918-two-dimensional-variational-mode-decomposition?s_tid=srchtitle) | ✔️ |
174
- | [`CVMD2D`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_vmd2d/cvmd2d.py) (Two-Dimensional Compact Variational Mode Decomposition) | [[paper]](https://link.springer.com/article/10.1007/s10851-017-0710-z) | [[code]](https://ww2.mathworks.cn/matlabcentral/fileexchange/67285-two-dimensional-compact-variational-mode-decomposition-2d-tv-vmd?s_tid=FX_rc2_behav) | ✔️ |
175
- | [`VME`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_vmd/vme.py) (Variational Mode Extraction) | [[paper]](https://ieeexplore.ieee.org/document/7997854) | [[code]](https://www.mathworks.com/matlabcentral/fileexchange/76003-variational-mode-extraction-vme-m?s_tid=srchtitle) | ✔️ |
176
- | [`OVMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_vmd/ovmd.py) (Orthogonalized Variational Mode Decomposition) | [[paper]](https://doi.org/10.1016/j.sigpro.2025.110251) | [[code]](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_vmd/ovmd.py) | ✔️ |
177
- | [`SVMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_vmd/svmd.py) (Successive Variational Mode Decomposition) | [[paper]](https://www.sciencedirect.com/science/article/pii/S0165168420301535) | [[code]](https://www.mathworks.com/matlabcentral/fileexchange/98649-successive-variational-mode-decomposition-svmd-m?s_tid=FX_rc3_behav) | ✖️ |
178
- | [`VNCMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_vncmd/vncmd.py) (Variational Nonlinear Chirp Mode Decomposition) | [[paper]](https://ieeexplore.ieee.org/document/7990179) | [[code]](https://www.mathworks.com/matlabcentral/fileexchange/64292-variational-nonlinear-chirp-mode-decomposition) | ✔️ |
179
- | [`INCMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_vncmd/incmd.py) (Iterative Nonlinear Chirp Mode Decomposition) | [[paper]](https://www.sciencedirect.com/science/article/pii/S0022460X2030403X?via%3Dihub) | [[code]](https://github.com/sheadan/IterativeNCMD) | ✔️ |
180
- | [`MNCMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_vncmd/mncmd.py) (Multivariate Nonlinear Chirp Mode Decomposition) | [[paper]](https://www.sciencedirect.com/science/article/abs/pii/S0165168420302103) | [[code]]() | ✖️ |
181
- | [`AVNCMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_vncmd/avncmd.py) (Adaptive Variational Nonlinear Chirp Mode Decomposition) | [[paper]](https://ieeexplore.ieee.org/abstract/document/9746147) | [[code]](https://github.com/HauLiang/AVNCMD) | ✔️ |
182
- | [`ACMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_vmd/acmd.py) (Adaptive Chirp Mode Decomposition) | [[paper]]() | [[code]](https://www.mathworks.com/matlabcentral/fileexchange/121373-data-driven-adaptive-chirp-mode-decomposition?s_tid=srchtitle) | ✔️ |
183
- | [`BA-ACMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_vmd/ba_acmd.py) (Bandwidth-aware adaptive chirp mode decomposition) | [[paper]](https://journals.sagepub.com/doi/abs/10.1177/14759217231174699) | [[code]](https://www.mathworks.com/matlabcentral/fileexchange/132792-bandwidth-aware-adaptive-chirp-mode-decomposition-ba-acmd?s_tid=srchtitle) | ✖️ |
184
- | [`JMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_jmd/jmd.py) (Jump Plus AM-FM Mode Decomposition) | [[paper]](https://arxiv.org/abs/2407.07800) | [[code]](https://www.mathworks.com/matlabcentral/fileexchange/169388-jump-plus-am-fm-mode-decomposition-jmd?s_tid=prof_contriblnk) | ️✔️ |
185
- | [`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) | ✔️ |
186
- | [`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]]() | ✔️ |
187
- | [`ESMD`]() (Extreme-Point Symmetric Mode Decomposition) | [[paper]](https://arxiv.org/abs/1303.6540) | [[code]](https://github.com/WuShichao/esmd) | ✖️ |
188
- | [`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) | ✖️ |
189
- | [`STL`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/tsa/_stl.py) (Seasonal-Trend decomposition using LOESS) | [[paper]](https://www.nniiem.ru/file/news/2016/stl-statistical-model.pdf) | [[code]](https://www.statsmodels.org/stable/examples/notebooks/generated/stl_decomposition.html) | ✔️ |
190
- | [`MSTL`]() (Multivariate Seasonal-Trend decomposition using LOESS) | [[paper]](https://www.nniiem.ru/file/news/2016/stl-statistical-model.pdf) | [[code]](https://www.statsmodels.org/stable/examples/notebooks/generated/mstl_decomposition.html) | ✖️ |
191
-
192
- ## Acknowledgements 🎖️ <a id="Acknowledgements"></a>
193
-
194
- 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](https://github.com/laszukdawid/PyEMD), [Sktime](https://www.sktime.net/en/latest/index.html), [Scikit-learn](https://scikit-learn.org/stable/), [Scikit-Image](https://scikit-image.org/docs/stable/), [statsmodels](https://www.statsmodels.org/stable/index.html), [vmdpy](https://github.com/vrcarva/vmdpy), [MEMD-Python-](https://github.com/mariogrune/MEMD-Python-), [ewtpy](https://github.com/vrcarva/ewtpy), [EWT-Python](https://github.com/bhurat/EWT-Python), [PyLMD](https://github.com/shownlin/PyLMD), [pywt](https://github.com/PyWavelets/pywt), [SP_Lib](https://github.com/hustcxl/SP_Lib)and [dsatools](https://github.com/MVRonkin/dsatools), [signal-decomposition](https://github.com/wwhenxuan/signal-decomposition).
1
+ Metadata-Version: 2.4
2
+ Name: PySDKit
3
+ Version: 0.4.31
4
+ Summary: A Python library for signal decomposition algorithms with a unified interface.
5
+ Author: josefinez, Deeksha Manjunath, Yuan Feng, JacktheFowler
6
+ Author-email: Whenxuan Wang <wwhenxuan@gmail.com>, RuiZhe Wang <3133986068@qq.com>, WenTong Zhao <23049200290@stu.xidian.edu.cn>
7
+ Maintainer-email: Whenxuan Wang <wwhenxuan@gmail.com>
8
+ License: MIT License
9
+
10
+ Copyright (c) 2019 Whenxuan Wang
11
+
12
+ Permission is hereby granted, free of charge, to any person obtaining a copy
13
+ of this software and associated documentation files (the "Software"), to deal
14
+ in the Software without restriction, including without limitation the rights
15
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
16
+ copies of the Software, and to permit persons to whom the Software is
17
+ furnished to do so, subject to the following conditions:
18
+
19
+ The above copyright notice and this permission notice shall be included in all
20
+ copies or substantial portions of the Software.
21
+
22
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
25
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
27
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
28
+ SOFTWARE.
29
+
30
+ Project-URL: Homepage, https://github.com/wwhenxuan/PySDKit
31
+ Project-URL: Repository, https://github.com/wwhenxuan/PySDKit
32
+ Project-URL: Issues, https://github.com/wwhenxuan/PySDKit/issues
33
+ Keywords: signal decomposition,signal processing,machine learning
34
+ Classifier: Development Status :: 3 - Alpha
35
+ Classifier: Intended Audience :: Science/Research
36
+ Classifier: Topic :: Scientific/Engineering :: Mathematics
37
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
38
+ Classifier: License :: OSI Approved :: MIT License
39
+ Classifier: Programming Language :: Python :: 3
40
+ Classifier: Programming Language :: Python :: 3.8
41
+ Classifier: Programming Language :: Python :: 3.9
42
+ Classifier: Programming Language :: Python :: 3.10
43
+ Classifier: Programming Language :: Python :: 3.11
44
+ Classifier: Programming Language :: Python :: 3.12
45
+ Requires-Python: >=3.8
46
+ Description-Content-Type: text/markdown
47
+ License-File: LICENSE
48
+ Requires-Dist: numpy>=1.24.3
49
+ Requires-Dist: scipy>=1.11.1
50
+ Requires-Dist: matplotlib>=3.7.2
51
+ Requires-Dist: tqdm>=4.66.5
52
+ Requires-Dist: requests>=2.32.3
53
+ Dynamic: license-file
54
+
55
+ # PySDKit: signal decomposition in Python
56
+
57
+ <div align="center">
58
+
59
+ [![PyPI version](https://badge.fury.io/py/PySDKit.svg)](https://pypi.org/project/PySDKit/)
60
+ ![License](https://img.shields.io/github/license/wwhenxuan/PySDKit)
61
+ [![Python](https://img.shields.io/badge/python-3.8+-blue?logo=python)](https://www.python.org/)
62
+ [![Downloads](https://pepy.tech/badge/pysdkit)](https://pepy.tech/project/pysdkit)
63
+ [![codestyle](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
64
+
65
+ A Python library for signal decomposition algorithms 🥳
66
+
67
+ [Installation](#Installation) |
68
+ [Example Script](#Example-Script) |
69
+ [Target](#Target) |
70
+ [Acknowledgements](#Acknowledgements)
71
+
72
+ <img src="https://raw.githubusercontent.com/wwhenxuan/PySDKit/main/images/Logo_sd.png" alt="Logo_sd" width="500"/>
73
+
74
+ </div>
75
+
76
+ ## Installation 🚀 <a id="Installation"></a>
77
+
78
+ You can install `PySDKit` through pip:
79
+
80
+ ~~~
81
+ pip install pysdkit
82
+ ~~~
83
+
84
+ We only used [`NumPy`](https://numpy.org/), [`Scipy`](https://scipy.org/) and [`matplotlib`](https://matplotlib.org/) when developing the project.
85
+
86
+ ## Example Script ✨ <a id="Example-Script"></a>
87
+
88
+ This project integrates simple signal processing methods, signal decomposition and visualization, and builds a general interface similar to [`Scikit-learn`](https://scikit-learn.org/stable/). It is mainly divided into three steps:
89
+ 1. Import the signal decomposition method;
90
+ 2. Create an instance for signal decomposition;
91
+ 3. Use the `fit_transform` method to implement signal decomposition;
92
+ 4. Visualize and analyze the original signal and the intrinsic mode functions IMFs obtained by decomposition.
93
+
94
+ ~~~python
95
+ from pysdkit import EMD
96
+ from pysdkit.data import test_emd
97
+ from pysdkit.plot import plot_IMFs
98
+
99
+ t, signal = test_emd()
100
+
101
+ # create an instance for signal decomposition
102
+ emd = EMD()
103
+ # implement signal decomposition
104
+ IMFs = emd.fit_transform(signal, max_imfs=2)
105
+ plot_IMFs(signal, IMFs)
106
+ ~~~
107
+
108
+ ![example](https://raw.githubusercontent.com/wwhenxuan/PySDKit/main/images/example.jpg)
109
+
110
+ The EMD in the above example is the most classic [`empirical mode decomposition`](https://www.mathworks.com/help/signal/ref/emd.html) algorithm in signal decomposition. For more complex signals, you can try other algorithms such as variational mode decomposition ([`VMD`](https://ieeexplore.ieee.org/abstract/document/6655981)).
111
+
112
+ ~~~python
113
+ import numpy as np
114
+ from pysdkit import VMD
115
+
116
+ # load new signal
117
+ signal = np.load("./example/example.npy")
118
+
119
+ # use variational mode decomposition
120
+ vmd = VMD(alpha=500, K=3, tau=0.0, tol=1e-9)
121
+ IMFs = vmd.fit_transform(signal=signal)
122
+ print(IMFs.shape)
123
+
124
+ vmd.plot_IMFs(save_figure=True)
125
+ ~~~
126
+
127
+ ![vmd_example](https://raw.githubusercontent.com/wwhenxuan/PySDKit/main/images/vmd_example.jpg)
128
+
129
+ Better observe the characteristics of the decomposed intrinsic mode function in the frequency domain.
130
+
131
+ ~~~python
132
+ from pysdkit.plot import plot_IMFs_amplitude_spectra
133
+
134
+ # frequency domain visualization
135
+ plot_IMFs_amplitude_spectra(IMFs, smooth="exp") # use exp smooth
136
+ ~~~
137
+
138
+ ![frequency_example](https://raw.githubusercontent.com/wwhenxuan/PySDKit/main/images/frequency_example.jpg)
139
+
140
+ ## Target 🎯 <a id="Target"></a>
141
+
142
+ `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`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/README.md) for the reasons why we developed PySDKit.
143
+
144
+ | Algorithm | Paper | Code | State |
145
+ |:---------------------------------------------------------------------------------------------------------------------------------------------:| :----------------------------------------------------------: | :----------------------------------------------------------: |:--------:|
146
+ | [`EMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_emd/emd.py) (Empirical Mode Decomposition) | [[paper]](https://royalsocietypublishing.org/doi/abs/10.1098/rspa.1998.0193) | [[code]](https://www.mathworks.com/help/signal/ref/emd.html) | ✔️ |
147
+ | [`MEMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_emd/memd.py) (Multivariate Empirical Mode Decomposition) | [[paper]](https://royalsocietypublishing.org/doi/full/10.1098/rspa.2009.0502) | [[code]](https://www.mathworks.com/matlabcentral/fileexchange/71270-fast-and-adaptive-multivariate-and-multidimensional-emd) | ✔️ |
148
+ | [`BEMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_emd2d/bemd.py) (Bidimensional Empirical Mode Decomposition) | [[paper]](https://www.sciencedirect.com/science/article/abs/pii/S0262885603000945) | [[code]](https://github.com/laszukdawid/PyEMD/blob/master/PyEMD/BEMD.py) | ✖️ |
149
+ | [`CEMD`]() (Complex Empirical Mode Decomposition) | [[paper]](https://ieeexplore.ieee.org/abstract/document/4063369) | [[code]]() | ✖️ |
150
+ | [`EEMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_emd/eemd.py) (Ensemble Empirical Mode Decomposition) | [[paper]](https://www.sciencedirect.com/topics/physics-and-astronomy/ensemble-empirical-mode-decomposition) | [[code]](https://github.com/laszukdawid/PyEMD/blob/master/PyEMD/EEMD.py) | ✔️ |
151
+ | [`REMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_emd/remd.py) (Robust Empirical Mode Decomposition) | [[paper]](https://www.sciencedirect.com/science/article/pii/S0019057821003785) | [[code]](https://www.mathworks.com/matlabcentral/fileexchange/70032-robust-empirical-mode-decomposition-remd) | ✔️ |
152
+ | [`EMD2D`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_emd2d/emd2d.py) (Empirical Mode Decomposition 2D for images) | [[paper]](http://aquador.vovve.net/IEMD/) | [[code]](http://aquador.vovve.net/IEMD/) | ✔️ |
153
+ | [`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) | ✖️ |
154
+ | [`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) | ✔️ |
155
+ | [`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) | ✔️ |
156
+ | [`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) | ✔️ |
157
+ | [`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) | ✔️ |
158
+ | [`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) | ✖️ |
159
+ | [`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) | ✖️ |
160
+ | [`HVD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_hvd/hvd.py) (Hilbert Vibration Decomposition) | [[paper]](https://www.sciencedirect.com/science/article/pii/S0022460X06001556) | [[code]](https://www.mathworks.com/matlabcentral/fileexchange/178804-hilbert-vibration-decomposition?s_tid=FX_rc1_behav) | ✔️ |
161
+ | [`ITD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_itd/itd.py) (Intrinsic Time-Scale Decomposition) | [[paper]](https://royalsocietypublishing.org/doi/10.1098/rspa.2006.1761) | [[code]](https://www.mathworks.com/matlabcentral/fileexchange/69380-intrinsic-time-scale-decomposition-itd) | ✔️ |
162
+ | [`ALIF`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_alif/alif.py) (Adaptive Local Iterative Filtering) | [[paper]](https://arxiv.org/abs/1411.6051) | [[code]](https://github.com/Cicone/ALIF) | ✔️ |
163
+ | [`APMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_apmd/apmd.py) (Adaptive Polymorphic Mode Decomposition) | [[paper]](https://doi.org/10.1016/j.dsp.2024.104913) | [[code]](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_apmd/apmd.py) | ✔️ |
164
+ | [`LMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_lmd/lmd.py) (Local Mean Decomposition) | [[paper]](https://www.sciencedirect.com/science/article/abs/pii/S1051200418308133?via%3Dihub) | [[code]](https://github.com/shownlin/PyLMD/blob/master/PyLMD/LMD.py) | ✔️ |
165
+ | [`RLMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_lmd/rlmd.py) (Robust Local Mean Decomposition) | [[paper]](https://www.sciencedirect.com/science/article/abs/pii/S0888327017301619) | [[code]](https://www.mathworks.com/matlabcentral/fileexchange/66935-robust-local-mean-decomposition-rlmd) | ✔️ |
166
+ | [`FMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_fmd/fmd.py) (Feature Mode Decomposition) | [[paper]](https://ieeexplore.ieee.org/document/9732251) | [[code]](https://www.mathworks.com/matlabcentral/fileexchange/108099-feature-mode-decomposition-fmd) | ✔️ |
167
+ | [`NFMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_fmd/nfmd.py) (Non-stationary Feature Mode Decomposition) | [[paper]](https://ieeexplore.ieee.org/document/9732251) | [[code]](https://github.com/sheadan/NFMD-ExtractionInstantaneous/blob/master/nfmd/NFMD.py) | ✖️ |
168
+ | [`SSA`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_ssa/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) | ✔️ |
169
+ | [`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) | ✔️ |
170
+ | [`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) | ✖️ |
171
+ | [`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) | ✔️ |
172
+ | [`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) | ✔️ |
173
+ | [`VMD2D`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_vmd2d/vmd2d.py) (Two-Dimensional Variational Mode Decomposition) | [[paper]](https://ww3.math.ucla.edu/camreport/cam14-16.pdf) | [[code]](https://www.mathworks.com/matlabcentral/fileexchange/45918-two-dimensional-variational-mode-decomposition?s_tid=srchtitle) | ✔️ |
174
+ | [`CVMD2D`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_vmd2d/cvmd2d.py) (Two-Dimensional Compact Variational Mode Decomposition) | [[paper]](https://link.springer.com/article/10.1007/s10851-017-0710-z) | [[code]](https://ww2.mathworks.cn/matlabcentral/fileexchange/67285-two-dimensional-compact-variational-mode-decomposition-2d-tv-vmd?s_tid=FX_rc2_behav) | ✔️ |
175
+ | [`VME`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_vmd/vme.py) (Variational Mode Extraction) | [[paper]](https://ieeexplore.ieee.org/document/7997854) | [[code]](https://www.mathworks.com/matlabcentral/fileexchange/76003-variational-mode-extraction-vme-m?s_tid=srchtitle) | ✔️ |
176
+ | [`OVMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_vmd/ovmd.py) (Orthogonalized Variational Mode Decomposition) | [[paper]](https://doi.org/10.1016/j.sigpro.2025.110251) | [[code]](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_vmd/ovmd.py) | ✔️ |
177
+ | [`SVMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_vmd/svmd.py) (Successive Variational Mode Decomposition) | [[paper]](https://www.sciencedirect.com/science/article/pii/S0165168420301535) | [[code]](https://www.mathworks.com/matlabcentral/fileexchange/98649-successive-variational-mode-decomposition-svmd-m?s_tid=FX_rc3_behav) | ✖️ |
178
+ | [`VNCMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_vncmd/vncmd.py) (Variational Nonlinear Chirp Mode Decomposition) | [[paper]](https://ieeexplore.ieee.org/document/7990179) | [[code]](https://www.mathworks.com/matlabcentral/fileexchange/64292-variational-nonlinear-chirp-mode-decomposition) | ✔️ |
179
+ | [`INCMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_vncmd/incmd.py) (Iterative Nonlinear Chirp Mode Decomposition) | [[paper]](https://www.sciencedirect.com/science/article/pii/S0022460X2030403X?via%3Dihub) | [[code]](https://github.com/sheadan/IterativeNCMD) | ✔️ |
180
+ | [`MNCMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_vncmd/mncmd.py) (Multivariate Nonlinear Chirp Mode Decomposition) | [[paper]](https://www.sciencedirect.com/science/article/abs/pii/S0165168420302103) | [[code]]() | ✖️ |
181
+ | [`AVNCMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_vncmd/avncmd.py) (Adaptive Variational Nonlinear Chirp Mode Decomposition) | [[paper]](https://ieeexplore.ieee.org/abstract/document/9746147) | [[code]](https://github.com/HauLiang/AVNCMD) | ✔️ |
182
+ | [`ACMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_vmd/acmd.py) (Adaptive Chirp Mode Decomposition) | [[paper]]() | [[code]](https://www.mathworks.com/matlabcentral/fileexchange/121373-data-driven-adaptive-chirp-mode-decomposition?s_tid=srchtitle) | ✔️ |
183
+ | [`BA-ACMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_vmd/ba_acmd.py) (Bandwidth-aware adaptive chirp mode decomposition) | [[paper]](https://journals.sagepub.com/doi/abs/10.1177/14759217231174699) | [[code]](https://www.mathworks.com/matlabcentral/fileexchange/132792-bandwidth-aware-adaptive-chirp-mode-decomposition-ba-acmd?s_tid=srchtitle) | ✖️ |
184
+ | [`JMD`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/_jmd/jmd.py) (Jump Plus AM-FM Mode Decomposition) | [[paper]](https://arxiv.org/abs/2407.07800) | [[code]](https://www.mathworks.com/matlabcentral/fileexchange/169388-jump-plus-am-fm-mode-decomposition-jmd?s_tid=prof_contriblnk) | ️✔️ |
185
+ | [`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) | ✔️ |
186
+ | [`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]]() | ✔️ |
187
+ | [`ESMD`]() (Extreme-Point Symmetric Mode Decomposition) | [[paper]](https://arxiv.org/abs/1303.6540) | [[code]](https://github.com/WuShichao/esmd) | ✖️ |
188
+ | [`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) | ✖️ |
189
+ | [`STL`](https://github.com/wwhenxuan/PySDKit/blob/main/pysdkit/tsa/_stl.py) (Seasonal-Trend decomposition using LOESS) | [[paper]](https://www.nniiem.ru/file/news/2016/stl-statistical-model.pdf) | [[code]](https://www.statsmodels.org/stable/examples/notebooks/generated/stl_decomposition.html) | ✔️ |
190
+ | [`MSTL`]() (Multivariate Seasonal-Trend decomposition using LOESS) | [[paper]](https://www.nniiem.ru/file/news/2016/stl-statistical-model.pdf) | [[code]](https://www.statsmodels.org/stable/examples/notebooks/generated/mstl_decomposition.html) | ✖️ |
191
+
192
+ ## Acknowledgements 🎖️ <a id="Acknowledgements"></a>
193
+
194
+ 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](https://github.com/laszukdawid/PyEMD), [Sktime](https://www.sktime.net/en/latest/index.html), [Scikit-learn](https://scikit-learn.org/stable/), [Scikit-Image](https://scikit-image.org/docs/stable/), [statsmodels](https://www.statsmodels.org/stable/index.html), [vmdpy](https://github.com/vrcarva/vmdpy), [MEMD-Python-](https://github.com/mariogrune/MEMD-Python-), [ewtpy](https://github.com/vrcarva/ewtpy), [EWT-Python](https://github.com/bhurat/EWT-Python), [PyLMD](https://github.com/shownlin/PyLMD), [pywt](https://github.com/PyWavelets/pywt), [SP_Lib](https://github.com/hustcxl/SP_Lib)and [dsatools](https://github.com/MVRonkin/dsatools), [signal-decomposition](https://github.com/wwhenxuan/signal-decomposition).