PySDKit 0.4.44__tar.gz → 0.4.46__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 (191) hide show
  1. {pysdkit-0.4.44 → pysdkit-0.4.46}/PKG-INFO +32 -24
  2. {pysdkit-0.4.44 → pysdkit-0.4.46}/PySDKit.egg-info/PKG-INFO +32 -24
  3. {pysdkit-0.4.44 → pysdkit-0.4.46}/PySDKit.egg-info/SOURCES.txt +8 -0
  4. {pysdkit-0.4.44 → pysdkit-0.4.46}/README.md +31 -23
  5. {pysdkit-0.4.44 → pysdkit-0.4.46}/pyproject.toml +2 -0
  6. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/__init__.py +8 -2
  7. pysdkit-0.4.46/pysdkit/_tfa/__init__.py +41 -0
  8. pysdkit-0.4.46/pysdkit/_tfa/data/__init__.py +2 -0
  9. pysdkit-0.4.46/pysdkit/_tfa/data/dual_signal_noise.npy +0 -0
  10. pysdkit-0.4.46/pysdkit/_tfa/data/map2.npy +0 -0
  11. pysdkit-0.4.46/pysdkit/_tfa/data/single_nsignal.npy +0 -0
  12. pysdkit-0.4.46/pysdkit/_tfa/vtfmtd.py +439 -0
  13. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_vmd/vmd_c.py +116 -50
  14. pysdkit-0.4.46/pysdkit/_vmd/vmd_f.py +192 -0
  15. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/data/__init__.py +4 -0
  16. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/data/_generator.py +24 -0
  17. pysdkit-0.4.46/pysdkit/data/vmd_example.npy +0 -0
  18. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/plot/__init__.py +1 -1
  19. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/plot/_plot_imfs.py +274 -15
  20. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/test_vmd.py +26 -0
  21. pysdkit-0.4.46/pysdkit/tests/test_vtfmtd.py +273 -0
  22. pysdkit-0.4.44/pysdkit/_vmd/vmd_f.py +0 -156
  23. {pysdkit-0.4.44 → pysdkit-0.4.46}/LICENSE +0 -0
  24. {pysdkit-0.4.44 → pysdkit-0.4.46}/PySDKit.egg-info/dependency_links.txt +0 -0
  25. {pysdkit-0.4.44 → pysdkit-0.4.46}/PySDKit.egg-info/requires.txt +0 -0
  26. {pysdkit-0.4.44 → pysdkit-0.4.46}/PySDKit.egg-info/top_level.txt +0 -0
  27. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_emd/__init__.py +0 -0
  28. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_emd/_find_extrema.py +0 -0
  29. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_emd/_prepare_points.py +0 -0
  30. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_emd/_splines.py +0 -0
  31. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_emd/ceemdan.py +0 -0
  32. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_emd/eemd.py +0 -0
  33. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_emd/efd.py +0 -0
  34. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_emd/emd.py +0 -0
  35. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_emd/esmd.py +0 -0
  36. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_emd/hht/__init__.py +0 -0
  37. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_emd/hht/frequency.py +0 -0
  38. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_emd/hht/hht.py +0 -0
  39. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_emd/memd.py +0 -0
  40. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_emd/remd.py +0 -0
  41. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_emd/semd.py +0 -0
  42. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_emd/tvf_emd.py +0 -0
  43. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_emd2d/__init__.py +0 -0
  44. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_emd2d/bemd.py +0 -0
  45. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_emd2d/bmemd.py +0 -0
  46. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_emd2d/emd2d.py +0 -0
  47. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_ewt/__init__.py +0 -0
  48. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_ewt/ewt.py +0 -0
  49. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_ewt/ewt2d.py +0 -0
  50. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_faemd/__init__.py +0 -0
  51. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_faemd/extrema.py +0 -0
  52. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_faemd/faemd.py +0 -0
  53. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_faemd/faemd2d.py +0 -0
  54. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_faemd/faemd3d.py +0 -0
  55. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_faemd/filter.py +0 -0
  56. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_fmd/__init__.py +0 -0
  57. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_fmd/fmd.py +0 -0
  58. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_fmd/nfmd.py +0 -0
  59. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_gdmd/__init__.py +0 -0
  60. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_gdmd/agncmd.py +0 -0
  61. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_gdmd/gdmd.py +0 -0
  62. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_gdmd/ivgnmd.py +0 -0
  63. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_gdmd/vgnmd.py +0 -0
  64. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_imd/__init__.py +0 -0
  65. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_imd/apmd.py +0 -0
  66. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_imd/data/gearbox_fault_snippet.npy +0 -0
  67. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_imd/data/input_sig.npy +0 -0
  68. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_imd/imd.py +0 -0
  69. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_jmd/__init__.py +0 -0
  70. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_jmd/jmd.py +0 -0
  71. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_jmd/mjmd.py +0 -0
  72. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_jmd/sjmd.py +0 -0
  73. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_lmd/__init__.py +0 -0
  74. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_lmd/lmd.py +0 -0
  75. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_lmd/rlmd.py +0 -0
  76. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_osd/__init__.py +0 -0
  77. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_osd/components.py +0 -0
  78. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_osd/osd.py +0 -0
  79. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_osd/swd.py +0 -0
  80. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_tid/__init__.py +0 -0
  81. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_tid/alif.py +0 -0
  82. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_tid/data/__init__.py +0 -0
  83. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_tid/data/prefixed_double_filter.npy +0 -0
  84. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_tid/hvd.py +0 -0
  85. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_tid/itd.py +0 -0
  86. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_tid/iterative_filtering.py +0 -0
  87. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_tid/ssa.py +0 -0
  88. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_vmd/__init__.py +0 -0
  89. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_vmd/acmd.py +0 -0
  90. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_vmd/avmd.py +0 -0
  91. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_vmd/ba_acmd.py +0 -0
  92. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_vmd/base.py +0 -0
  93. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_vmd/mvmd.py +0 -0
  94. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_vmd/ovmd.py +0 -0
  95. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_vmd/stvmd.py +0 -0
  96. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_vmd/svmd.py +0 -0
  97. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_vmd/vme.py +0 -0
  98. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_vmd2d/__init__.py +0 -0
  99. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_vmd2d/cvmd2d.py +0 -0
  100. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_vmd2d/vmd2d.py +0 -0
  101. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_vncmd/__init__.py +0 -0
  102. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_vncmd/avncmd.py +0 -0
  103. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_vncmd/incmd.py +0 -0
  104. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/_vncmd/vncmd.py +0 -0
  105. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/data/_add_noise.py +0 -0
  106. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/data/_cube.py +0 -0
  107. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/data/_image.py +0 -0
  108. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/data/_models.py +0 -0
  109. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/data/_test_univariate.py +0 -0
  110. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/data/_time_series.py +0 -0
  111. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/data/fmd_demo.npy +0 -0
  112. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/data/texture.txt +0 -0
  113. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/entropy/__init__.py +0 -0
  114. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/entropy/_approxiamte_entropy.py +0 -0
  115. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/entropy/_permutation_entropy.py +0 -0
  116. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/entropy/_sample_entropy.py +0 -0
  117. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/models/__init__.py +0 -0
  118. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/models/_base.py +0 -0
  119. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/models/_kmeans.py +0 -0
  120. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/models/_knn.py +0 -0
  121. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/models/_pca.py +0 -0
  122. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/plot/_fourier_spectra.py +0 -0
  123. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/plot/_functions.py +0 -0
  124. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/plot/_plot_images.py +0 -0
  125. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/plot/_plot_signal.py +0 -0
  126. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/__init__.py +0 -0
  127. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/data/__init__.py +0 -0
  128. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/data/test_generator_cube.py +0 -0
  129. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/data/test_generator_image.py +0 -0
  130. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/data/test_generator_signal.py +0 -0
  131. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/data/test_generator_univariate_signal.py +0 -0
  132. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/models/__init__.py +0 -0
  133. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/models/test_knn.py +0 -0
  134. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/models/test_pca.py +0 -0
  135. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/run_all.py +0 -0
  136. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/test_agncmd.py +0 -0
  137. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/test_alif.py +0 -0
  138. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/test_apmd.py +0 -0
  139. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/test_avncmd.py +0 -0
  140. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/test_bmemd.py +0 -0
  141. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/test_ceemdan.py +0 -0
  142. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/test_cvmd2d.py +0 -0
  143. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/test_eemd.py +0 -0
  144. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/test_emd.py +0 -0
  145. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/test_esmd.py +0 -0
  146. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/test_ewt.py +0 -0
  147. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/test_ewt2d.py +0 -0
  148. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/test_faemd.py +0 -0
  149. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/test_faemd2d.py +0 -0
  150. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/test_faemd3d.py +0 -0
  151. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/test_fmd.py +0 -0
  152. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/test_gdmd.py +0 -0
  153. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/test_hvd.py +0 -0
  154. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/test_imd.py +0 -0
  155. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/test_itd.py +0 -0
  156. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/test_ivgnmd.py +0 -0
  157. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/test_jmd.py +0 -0
  158. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/test_lmd.py +0 -0
  159. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/test_moving_decomp.py +0 -0
  160. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/test_mstl.py +0 -0
  161. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/test_osd.py +0 -0
  162. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/test_ovmd.py +0 -0
  163. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/test_rlmd.py +0 -0
  164. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/test_semd.py +0 -0
  165. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/test_sjmd.py +0 -0
  166. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/test_ssa.py +0 -0
  167. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/test_stl.py +0 -0
  168. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/test_stvmd.py +0 -0
  169. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/test_svmd.py +0 -0
  170. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/test_swd.py +0 -0
  171. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/test_vgnmd.py +0 -0
  172. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/test_vmd2d.py +0 -0
  173. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tests/test_vncmd.py +0 -0
  174. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tsa/__init__.py +0 -0
  175. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tsa/_dtw.py +0 -0
  176. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tsa/_moving_decomp.py +0 -0
  177. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tsa/_mstl.py +0 -0
  178. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/tsa/_stl.py +0 -0
  179. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/utils/__init__.py +0 -0
  180. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/utils/_correlation.py +0 -0
  181. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/utils/_diagnalization.py +0 -0
  182. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/utils/_differ.py +0 -0
  183. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/utils/_fft.py +0 -0
  184. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/utils/_function.py +0 -0
  185. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/utils/_hilbert.py +0 -0
  186. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/utils/_instantaneous.py +0 -0
  187. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/utils/_kernel_matrix.py +0 -0
  188. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/utils/_mirror.py +0 -0
  189. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/utils/_process.py +0 -0
  190. {pysdkit-0.4.44 → pysdkit-0.4.46}/pysdkit/utils/_smooth1d.py +0 -0
  191. {pysdkit-0.4.44 → pysdkit-0.4.46}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PySDKit
3
- Version: 0.4.44
3
+ Version: 0.4.46
4
4
  Summary: A Python library for signal decomposition algorithms with a unified interface.
5
5
  Author: Whenxuan Wang, RuiZhe Wang, Rongkun Zhu, Kai Wu, Lei Wang, josefinez, Deeksha Manjunath, Yuan Feng, WenTong Zhao, JacktheFowler
6
6
  Maintainer-email: Whenxuan Wang <wwhenxuan@gmail.com>, RuiZhe Wang <3133986068@qq.com>
@@ -51,10 +51,10 @@ Requires-Dist: tqdm>=4.66.5
51
51
  Requires-Dist: requests>=2.32.3
52
52
  Dynamic: license-file
53
53
 
54
- # PySDKit: signal decomposition in Python
55
-
56
54
  <div align="center">
57
55
 
56
+ # PySDKit: signal decomposition in Python
57
+
58
58
  [![PyPI version](https://badge.fury.io/py/PySDKit.svg)](https://pypi.org/project/PySDKit/)
59
59
  ![License](https://img.shields.io/github/license/wwhenxuan/PySDKit)
60
60
  [![Python](https://img.shields.io/badge/python-3.8+-blue?logo=python)](https://www.python.org/)
@@ -91,50 +91,57 @@ This project integrates simple signal processing methods, signal decomposition a
91
91
  4. Visualize and analyze the original signal and the intrinsic mode functions IMFs obtained by decomposition.
92
92
 
93
93
  ~~~python
94
+ import numpy as np
94
95
  from pysdkit import EMD
95
- from pysdkit.data import test_emd
96
96
  from pysdkit.plot import plot_IMFs
97
97
 
98
- t, signal = test_emd()
98
+ t = np.linspace(0, 1, 1000)
99
+ 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)
99
100
 
100
- # create an instance for signal decomposition
101
101
  emd = EMD()
102
- # implement signal decomposition
103
- IMFs = emd.fit_transform(signal, max_imfs=2)
104
- plot_IMFs(signal, IMFs)
102
+ IMFs = emd.fit_transform(signal, max_imfs=3)
103
+ plot_IMFs(signal, IMFs, view="2d_freq", fs=1000, freq_max=150)
105
104
  ~~~
106
105
 
107
- ![example](https://raw.githubusercontent.com/wwhenxuan/PySDKit/main/images/example.jpg)
106
+ ![example](https://raw.githubusercontent.com/wwhenxuan/PySDKit/main/images/decomposition_demo.jpg)
108
107
 
109
108
  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)).
110
109
 
111
110
  ~~~python
112
- import numpy as np
113
111
  from pysdkit import VMD
112
+ from pysdkit.data import test_vmd
113
+ from pysdkit.plot import plot_IMFs
114
114
 
115
- # load new signal
116
- signal = np.load("./example/example.npy")
117
-
118
- # use variational mode decomposition
119
- vmd = VMD(alpha=500, K=3, tau=0.0, tol=1e-9)
120
- IMFs = vmd.fit_transform(signal=signal)
121
- print(IMFs.shape)
115
+ t, signal, fs = test_vmd()
122
116
 
123
- vmd.plot_IMFs(save_figure=True)
117
+ vmd = VMD(alpha=2000, K=4, tau=0.0, tol=1e-7)
118
+ IMFs = vmd.fit_transform(signal)
119
+ plot_IMFs(signal, IMFs, view="2d_freq", fs=fs, freq_max=fs / 2)
124
120
  ~~~
125
121
 
126
122
  ![vmd_example](https://raw.githubusercontent.com/wwhenxuan/PySDKit/main/images/vmd_example.jpg)
127
123
 
128
- Better observe the characteristics of the decomposed intrinsic mode function in the frequency domain.
124
+ For multichannel recordings, algorithms such as multivariate VMD ([`MVMD`](https://doi.org/10.1109/TSP.2019.2951223)) keep shared oscillations **mode-aligned** across channels:
129
125
 
130
126
  ~~~python
131
- from pysdkit.plot import plot_IMFs_amplitude_spectra
127
+ import numpy as np
128
+ from pysdkit import MVMD
129
+ from pysdkit.plot import plot_IMFs
132
130
 
133
- # frequency domain visualization
134
- plot_IMFs_amplitude_spectra(IMFs, smooth="exp") # use exp smooth
131
+ t = np.arange(0, 1, 0.001)
132
+ # ch1: 2+36 Hz, ch2: 24+36 Hz, ch3: 80+36 Hz (36 Hz shared)
133
+ signal = np.vstack([
134
+ np.cos(2*np.pi*2*t) + np.cos(2*np.pi*36*t),
135
+ np.cos(2*np.pi*24*t) + np.cos(2*np.pi*36*t),
136
+ np.cos(2*np.pi*80*t) + np.cos(2*np.pi*36*t),
137
+ ])
138
+
139
+ mvmd = MVMD(alpha=2000, K=4, tau=0.0, init="uniform")
140
+ IMFs = mvmd.fit_transform(signal) # shape: (K, T, C)
141
+ plot_IMFs(signal, IMFs) # per-channel panels
135
142
  ~~~
136
143
 
137
- ![frequency_example](https://raw.githubusercontent.com/wwhenxuan/PySDKit/main/images/frequency_example.jpg)
144
+ ![mvmd_example](https://raw.githubusercontent.com/wwhenxuan/PySDKit/main/images/mvmd_example.jpg)
138
145
 
139
146
  ## Target 🎯 <a id="Target"></a>
140
147
 
@@ -193,6 +200,7 @@ plot_IMFs_amplitude_spectra(IMFs, smooth="exp") # use exp smooth
193
200
  | [`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]]() | ✔️ |
194
201
  | [`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) | ✔️ |
195
202
  | [`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) | ✖️ |
203
+ | [`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) | ✔️ |
196
204
  | [`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) | ✔️ |
197
205
  | [`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) | ✔️ |
198
206
  | [`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) | ✔️ |
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PySDKit
3
- Version: 0.4.44
3
+ Version: 0.4.46
4
4
  Summary: A Python library for signal decomposition algorithms with a unified interface.
5
5
  Author: Whenxuan Wang, RuiZhe Wang, Rongkun Zhu, Kai Wu, Lei Wang, josefinez, Deeksha Manjunath, Yuan Feng, WenTong Zhao, JacktheFowler
6
6
  Maintainer-email: Whenxuan Wang <wwhenxuan@gmail.com>, RuiZhe Wang <3133986068@qq.com>
@@ -51,10 +51,10 @@ Requires-Dist: tqdm>=4.66.5
51
51
  Requires-Dist: requests>=2.32.3
52
52
  Dynamic: license-file
53
53
 
54
- # PySDKit: signal decomposition in Python
55
-
56
54
  <div align="center">
57
55
 
56
+ # PySDKit: signal decomposition in Python
57
+
58
58
  [![PyPI version](https://badge.fury.io/py/PySDKit.svg)](https://pypi.org/project/PySDKit/)
59
59
  ![License](https://img.shields.io/github/license/wwhenxuan/PySDKit)
60
60
  [![Python](https://img.shields.io/badge/python-3.8+-blue?logo=python)](https://www.python.org/)
@@ -91,50 +91,57 @@ This project integrates simple signal processing methods, signal decomposition a
91
91
  4. Visualize and analyze the original signal and the intrinsic mode functions IMFs obtained by decomposition.
92
92
 
93
93
  ~~~python
94
+ import numpy as np
94
95
  from pysdkit import EMD
95
- from pysdkit.data import test_emd
96
96
  from pysdkit.plot import plot_IMFs
97
97
 
98
- t, signal = test_emd()
98
+ t = np.linspace(0, 1, 1000)
99
+ 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)
99
100
 
100
- # create an instance for signal decomposition
101
101
  emd = EMD()
102
- # implement signal decomposition
103
- IMFs = emd.fit_transform(signal, max_imfs=2)
104
- plot_IMFs(signal, IMFs)
102
+ IMFs = emd.fit_transform(signal, max_imfs=3)
103
+ plot_IMFs(signal, IMFs, view="2d_freq", fs=1000, freq_max=150)
105
104
  ~~~
106
105
 
107
- ![example](https://raw.githubusercontent.com/wwhenxuan/PySDKit/main/images/example.jpg)
106
+ ![example](https://raw.githubusercontent.com/wwhenxuan/PySDKit/main/images/decomposition_demo.jpg)
108
107
 
109
108
  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)).
110
109
 
111
110
  ~~~python
112
- import numpy as np
113
111
  from pysdkit import VMD
112
+ from pysdkit.data import test_vmd
113
+ from pysdkit.plot import plot_IMFs
114
114
 
115
- # load new signal
116
- signal = np.load("./example/example.npy")
117
-
118
- # use variational mode decomposition
119
- vmd = VMD(alpha=500, K=3, tau=0.0, tol=1e-9)
120
- IMFs = vmd.fit_transform(signal=signal)
121
- print(IMFs.shape)
115
+ t, signal, fs = test_vmd()
122
116
 
123
- vmd.plot_IMFs(save_figure=True)
117
+ vmd = VMD(alpha=2000, K=4, tau=0.0, tol=1e-7)
118
+ IMFs = vmd.fit_transform(signal)
119
+ plot_IMFs(signal, IMFs, view="2d_freq", fs=fs, freq_max=fs / 2)
124
120
  ~~~
125
121
 
126
122
  ![vmd_example](https://raw.githubusercontent.com/wwhenxuan/PySDKit/main/images/vmd_example.jpg)
127
123
 
128
- Better observe the characteristics of the decomposed intrinsic mode function in the frequency domain.
124
+ For multichannel recordings, algorithms such as multivariate VMD ([`MVMD`](https://doi.org/10.1109/TSP.2019.2951223)) keep shared oscillations **mode-aligned** across channels:
129
125
 
130
126
  ~~~python
131
- from pysdkit.plot import plot_IMFs_amplitude_spectra
127
+ import numpy as np
128
+ from pysdkit import MVMD
129
+ from pysdkit.plot import plot_IMFs
132
130
 
133
- # frequency domain visualization
134
- plot_IMFs_amplitude_spectra(IMFs, smooth="exp") # use exp smooth
131
+ t = np.arange(0, 1, 0.001)
132
+ # ch1: 2+36 Hz, ch2: 24+36 Hz, ch3: 80+36 Hz (36 Hz shared)
133
+ signal = np.vstack([
134
+ np.cos(2*np.pi*2*t) + np.cos(2*np.pi*36*t),
135
+ np.cos(2*np.pi*24*t) + np.cos(2*np.pi*36*t),
136
+ np.cos(2*np.pi*80*t) + np.cos(2*np.pi*36*t),
137
+ ])
138
+
139
+ mvmd = MVMD(alpha=2000, K=4, tau=0.0, init="uniform")
140
+ IMFs = mvmd.fit_transform(signal) # shape: (K, T, C)
141
+ plot_IMFs(signal, IMFs) # per-channel panels
135
142
  ~~~
136
143
 
137
- ![frequency_example](https://raw.githubusercontent.com/wwhenxuan/PySDKit/main/images/frequency_example.jpg)
144
+ ![mvmd_example](https://raw.githubusercontent.com/wwhenxuan/PySDKit/main/images/mvmd_example.jpg)
138
145
 
139
146
  ## Target 🎯 <a id="Target"></a>
140
147
 
@@ -193,6 +200,7 @@ plot_IMFs_amplitude_spectra(IMFs, smooth="exp") # use exp smooth
193
200
  | [`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]]() | ✔️ |
194
201
  | [`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) | ✔️ |
195
202
  | [`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) | ✖️ |
203
+ | [`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) | ✔️ |
196
204
  | [`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) | ✔️ |
197
205
  | [`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) | ✔️ |
198
206
  | [`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) | ✔️ |
@@ -60,6 +60,12 @@ pysdkit/_osd/__init__.py
60
60
  pysdkit/_osd/components.py
61
61
  pysdkit/_osd/osd.py
62
62
  pysdkit/_osd/swd.py
63
+ pysdkit/_tfa/__init__.py
64
+ pysdkit/_tfa/vtfmtd.py
65
+ pysdkit/_tfa/data/__init__.py
66
+ pysdkit/_tfa/data/dual_signal_noise.npy
67
+ pysdkit/_tfa/data/map2.npy
68
+ pysdkit/_tfa/data/single_nsignal.npy
63
69
  pysdkit/_tid/__init__.py
64
70
  pysdkit/_tid/alif.py
65
71
  pysdkit/_tid/hvd.py
@@ -97,6 +103,7 @@ pysdkit/data/_test_univariate.py
97
103
  pysdkit/data/_time_series.py
98
104
  pysdkit/data/fmd_demo.npy
99
105
  pysdkit/data/texture.txt
106
+ pysdkit/data/vmd_example.npy
100
107
  pysdkit/entropy/__init__.py
101
108
  pysdkit/entropy/_approxiamte_entropy.py
102
109
  pysdkit/entropy/_permutation_entropy.py
@@ -153,6 +160,7 @@ pysdkit/tests/test_vgnmd.py
153
160
  pysdkit/tests/test_vmd.py
154
161
  pysdkit/tests/test_vmd2d.py
155
162
  pysdkit/tests/test_vncmd.py
163
+ pysdkit/tests/test_vtfmtd.py
156
164
  pysdkit/tests/data/__init__.py
157
165
  pysdkit/tests/data/test_generator_cube.py
158
166
  pysdkit/tests/data/test_generator_image.py
@@ -1,7 +1,7 @@
1
- # PySDKit: signal decomposition in Python
2
-
3
1
  <div align="center">
4
2
 
3
+ # PySDKit: signal decomposition in Python
4
+
5
5
  [![PyPI version](https://badge.fury.io/py/PySDKit.svg)](https://pypi.org/project/PySDKit/)
6
6
  ![License](https://img.shields.io/github/license/wwhenxuan/PySDKit)
7
7
  [![Python](https://img.shields.io/badge/python-3.8+-blue?logo=python)](https://www.python.org/)
@@ -38,50 +38,57 @@ This project integrates simple signal processing methods, signal decomposition a
38
38
  4. Visualize and analyze the original signal and the intrinsic mode functions IMFs obtained by decomposition.
39
39
 
40
40
  ~~~python
41
+ import numpy as np
41
42
  from pysdkit import EMD
42
- from pysdkit.data import test_emd
43
43
  from pysdkit.plot import plot_IMFs
44
44
 
45
- t, signal = test_emd()
45
+ t = np.linspace(0, 1, 1000)
46
+ 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)
46
47
 
47
- # create an instance for signal decomposition
48
48
  emd = EMD()
49
- # implement signal decomposition
50
- IMFs = emd.fit_transform(signal, max_imfs=2)
51
- plot_IMFs(signal, IMFs)
49
+ IMFs = emd.fit_transform(signal, max_imfs=3)
50
+ plot_IMFs(signal, IMFs, view="2d_freq", fs=1000, freq_max=150)
52
51
  ~~~
53
52
 
54
- ![example](https://raw.githubusercontent.com/wwhenxuan/PySDKit/main/images/example.jpg)
53
+ ![example](https://raw.githubusercontent.com/wwhenxuan/PySDKit/main/images/decomposition_demo.jpg)
55
54
 
56
55
  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)).
57
56
 
58
57
  ~~~python
59
- import numpy as np
60
58
  from pysdkit import VMD
59
+ from pysdkit.data import test_vmd
60
+ from pysdkit.plot import plot_IMFs
61
61
 
62
- # load new signal
63
- signal = np.load("./example/example.npy")
64
-
65
- # use variational mode decomposition
66
- vmd = VMD(alpha=500, K=3, tau=0.0, tol=1e-9)
67
- IMFs = vmd.fit_transform(signal=signal)
68
- print(IMFs.shape)
62
+ t, signal, fs = test_vmd()
69
63
 
70
- vmd.plot_IMFs(save_figure=True)
64
+ vmd = VMD(alpha=2000, K=4, tau=0.0, tol=1e-7)
65
+ IMFs = vmd.fit_transform(signal)
66
+ plot_IMFs(signal, IMFs, view="2d_freq", fs=fs, freq_max=fs / 2)
71
67
  ~~~
72
68
 
73
69
  ![vmd_example](https://raw.githubusercontent.com/wwhenxuan/PySDKit/main/images/vmd_example.jpg)
74
70
 
75
- Better observe the characteristics of the decomposed intrinsic mode function in the frequency domain.
71
+ For multichannel recordings, algorithms such as multivariate VMD ([`MVMD`](https://doi.org/10.1109/TSP.2019.2951223)) keep shared oscillations **mode-aligned** across channels:
76
72
 
77
73
  ~~~python
78
- from pysdkit.plot import plot_IMFs_amplitude_spectra
74
+ import numpy as np
75
+ from pysdkit import MVMD
76
+ from pysdkit.plot import plot_IMFs
79
77
 
80
- # frequency domain visualization
81
- plot_IMFs_amplitude_spectra(IMFs, smooth="exp") # use exp smooth
78
+ t = np.arange(0, 1, 0.001)
79
+ # ch1: 2+36 Hz, ch2: 24+36 Hz, ch3: 80+36 Hz (36 Hz shared)
80
+ signal = np.vstack([
81
+ np.cos(2*np.pi*2*t) + np.cos(2*np.pi*36*t),
82
+ np.cos(2*np.pi*24*t) + np.cos(2*np.pi*36*t),
83
+ np.cos(2*np.pi*80*t) + np.cos(2*np.pi*36*t),
84
+ ])
85
+
86
+ mvmd = MVMD(alpha=2000, K=4, tau=0.0, init="uniform")
87
+ IMFs = mvmd.fit_transform(signal) # shape: (K, T, C)
88
+ plot_IMFs(signal, IMFs) # per-channel panels
82
89
  ~~~
83
90
 
84
- ![frequency_example](https://raw.githubusercontent.com/wwhenxuan/PySDKit/main/images/frequency_example.jpg)
91
+ ![mvmd_example](https://raw.githubusercontent.com/wwhenxuan/PySDKit/main/images/mvmd_example.jpg)
85
92
 
86
93
  ## Target 🎯 <a id="Target"></a>
87
94
 
@@ -140,6 +147,7 @@ plot_IMFs_amplitude_spectra(IMFs, smooth="exp") # use exp smooth
140
147
  | [`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]]() | ✔️ |
141
148
  | [`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) | ✔️ |
142
149
  | [`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) | ✖️ |
150
+ | [`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) | ✔️ |
143
151
  | [`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) | ✔️ |
144
152
  | [`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) | ✔️ |
145
153
  | [`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) | ✔️ |
@@ -73,3 +73,5 @@ include = ["pysdkit*"]
73
73
  "pysdkit._tid.data" = ["*.npy"]
74
74
  "pysdkit._imd" = ["data/*.npy"]
75
75
  "pysdkit._imd.data" = ["*.npy"]
76
+ "pysdkit._tfa" = ["data/*.npy"]
77
+ "pysdkit._tfa.data" = ["*.npy"]
@@ -2,7 +2,7 @@
2
2
  A Python library for signal decomposition algorithms.
3
3
  """
4
4
 
5
- __version__ = "0.4.44"
5
+ __version__ = "0.4.46"
6
6
 
7
7
  # Empirical Mode Decomposition
8
8
  from ._emd import EMD
@@ -112,6 +112,9 @@ from ._vncmd import AVNCMD
112
112
  # Adaptive Local Iterative Filtering (time iterative decomposition)
113
113
  from ._tid import ALIF
114
114
 
115
+ # Variational Time-Frequency Mode Tracking Decomposition (TFA)
116
+ from ._tfa import VTFMTD, vtfmtd
117
+
115
118
  # Adaptive Polymorphic Mode Decomposition / Impulsive Mode Decomposition
116
119
  from ._imd import APMD, IMD, imd
117
120
 
@@ -193,7 +196,7 @@ Optimization-based Signal Decomposition | OSD
193
196
  Generalized Dispersion Mode Decomposition | GDMD
194
197
  Variational Generalized Nonlinear Mode Dec. | VGNMD
195
198
  Improved VGNMD (crossed chirp / dispersive) | IVGNMD
196
- Adaptive Generalized Dispersive Mode Dec. | AGNCMD / AGDMD
199
+ Adaptive Generalized Dispersive Mode Dec. | AGNCMD / AGDMD
197
200
  Variational Mode Decomposition | VMD
198
201
  Multivariate Variational Mode Decomposition | MVMD
199
202
  Variational Mode Extraction | VME
@@ -206,6 +209,7 @@ Variational Nonlinear Chirp Mode Decomposition | VNCMD
206
209
  Iterative Nonlinear Chirp Mode Decomposition | INCMD
207
210
  Adaptive Variational Nonlinear Chirp Mode Dec. | AVNCMD
208
211
  Adaptive Local Iterative Filtering | ALIF
212
+ Variational TF Mode Tracking Decomposition | VTFMTD
209
213
  Adaptive Polymorphic Mode Decomposition | APMD
210
214
  Impulsive Mode Decomposition | IMD
211
215
  Empirical Wavelet Transform | EWT
@@ -273,6 +277,8 @@ __all__ = [
273
277
  "INCMD",
274
278
  "AVNCMD",
275
279
  "ALIF",
280
+ "VTFMTD",
281
+ "vtfmtd",
276
282
  "APMD",
277
283
  "IMD",
278
284
  "imd",
@@ -0,0 +1,41 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ Time-Frequency Analysis (TFA).
4
+
5
+ Methods that operate primarily on time-frequency representations
6
+ (e.g. STFT) for mode separation and instantaneous-frequency tracking.
7
+ """
8
+
9
+ from .vtfmtd import (
10
+ VTFMTD,
11
+ vtfmtd,
12
+ stft,
13
+ frequency_axis,
14
+ bin_index_grid,
15
+ expand_omega_init,
16
+ first_difference_gram,
17
+ estimate_if_centroid,
18
+ smooth_if,
19
+ moving_average_if,
20
+ omega_bins_to_hz,
21
+ load_dual_signal_noise,
22
+ load_single_nsignal,
23
+ load_map2,
24
+ )
25
+
26
+ __all__ = [
27
+ "VTFMTD",
28
+ "vtfmtd",
29
+ "stft",
30
+ "frequency_axis",
31
+ "bin_index_grid",
32
+ "expand_omega_init",
33
+ "first_difference_gram",
34
+ "estimate_if_centroid",
35
+ "smooth_if",
36
+ "moving_average_if",
37
+ "omega_bins_to_hz",
38
+ "load_dual_signal_noise",
39
+ "load_single_nsignal",
40
+ "load_map2",
41
+ ]
@@ -0,0 +1,2 @@
1
+ # -*- coding: utf-8 -*-
2
+ """Packaged demo arrays for VTFMTD examples and tests."""