Modal-Decomposition 0.1.0__tar.gz → 0.1.2__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 (38) hide show
  1. {modal_decomposition-0.1.0 → modal_decomposition-0.1.2}/PKG-INFO +1 -1
  2. {modal_decomposition-0.1.0 → modal_decomposition-0.1.2}/pyproject.toml +1 -1
  3. {modal_decomposition-0.1.0 → modal_decomposition-0.1.2}/src/Modal_Decomposition/CEEFD.py +5 -2
  4. {modal_decomposition-0.1.0 → modal_decomposition-0.1.2}/src/Modal_Decomposition/EMD.py +14 -4
  5. {modal_decomposition-0.1.0 → modal_decomposition-0.1.2}/src/Modal_Decomposition/__init__.py +47 -5
  6. {modal_decomposition-0.1.0 → modal_decomposition-0.1.2}/src/Modal_Decomposition.egg-info/PKG-INFO +1 -1
  7. {modal_decomposition-0.1.0 → modal_decomposition-0.1.2}/tests/test.py +2 -5
  8. {modal_decomposition-0.1.0 → modal_decomposition-0.1.2}/LICENSE +0 -0
  9. {modal_decomposition-0.1.0 → modal_decomposition-0.1.2}/README.md +0 -0
  10. {modal_decomposition-0.1.0 → modal_decomposition-0.1.2}/setup.cfg +0 -0
  11. {modal_decomposition-0.1.0 → modal_decomposition-0.1.2}/src/Modal_Decomposition/CEEMD.py +0 -0
  12. {modal_decomposition-0.1.0 → modal_decomposition-0.1.2}/src/Modal_Decomposition/CEEMDAN.py +0 -0
  13. {modal_decomposition-0.1.0 → modal_decomposition-0.1.2}/src/Modal_Decomposition/COLOR/__init__.py +0 -0
  14. {modal_decomposition-0.1.0 → modal_decomposition-0.1.2}/src/Modal_Decomposition/COLOR/color_define.py +0 -0
  15. {modal_decomposition-0.1.0 → modal_decomposition-0.1.2}/src/Modal_Decomposition/COLOR/colorful_print.py +0 -0
  16. {modal_decomposition-0.1.0 → modal_decomposition-0.1.2}/src/Modal_Decomposition/EEMD.py +0 -0
  17. {modal_decomposition-0.1.0 → modal_decomposition-0.1.2}/src/Modal_Decomposition/EFD.py +0 -0
  18. {modal_decomposition-0.1.0 → modal_decomposition-0.1.2}/src/Modal_Decomposition/EWT.py +0 -0
  19. {modal_decomposition-0.1.0 → modal_decomposition-0.1.2}/src/Modal_Decomposition/Error/CycleError.py +0 -0
  20. {modal_decomposition-0.1.0 → modal_decomposition-0.1.2}/src/Modal_Decomposition/FMD.py +0 -0
  21. {modal_decomposition-0.1.0 → modal_decomposition-0.1.2}/src/Modal_Decomposition/ICEEMDAN.py +0 -0
  22. {modal_decomposition-0.1.0 → modal_decomposition-0.1.2}/src/Modal_Decomposition/LMD.py +0 -0
  23. {modal_decomposition-0.1.0 → modal_decomposition-0.1.2}/src/Modal_Decomposition/MEMD.py +0 -0
  24. {modal_decomposition-0.1.0 → modal_decomposition-0.1.2}/src/Modal_Decomposition/RPSEMD.py +0 -0
  25. {modal_decomposition-0.1.0 → modal_decomposition-0.1.2}/src/Modal_Decomposition/SSA.py +0 -0
  26. {modal_decomposition-0.1.0 → modal_decomposition-0.1.2}/src/Modal_Decomposition/SVMD.py +0 -0
  27. {modal_decomposition-0.1.0 → modal_decomposition-0.1.2}/src/Modal_Decomposition/Utils/EnvironmentMemory.py +0 -0
  28. {modal_decomposition-0.1.0 → modal_decomposition-0.1.2}/src/Modal_Decomposition/Utils/LazyImport.py +0 -0
  29. {modal_decomposition-0.1.0 → modal_decomposition-0.1.2}/src/Modal_Decomposition/Utils/Monotonicity.py +0 -0
  30. {modal_decomposition-0.1.0 → modal_decomposition-0.1.2}/src/Modal_Decomposition/Utils/NumpyNdarray_MemoryCalculator.py +0 -0
  31. {modal_decomposition-0.1.0 → modal_decomposition-0.1.2}/src/Modal_Decomposition/Utils/OneDimArray.py +0 -0
  32. {modal_decomposition-0.1.0 → modal_decomposition-0.1.2}/src/Modal_Decomposition/Utils/__init__.py +0 -0
  33. {modal_decomposition-0.1.0 → modal_decomposition-0.1.2}/src/Modal_Decomposition/VMD.py +0 -0
  34. {modal_decomposition-0.1.0 → modal_decomposition-0.1.2}/src/Modal_Decomposition/help_function.py +0 -0
  35. {modal_decomposition-0.1.0 → modal_decomposition-0.1.2}/src/Modal_Decomposition.egg-info/SOURCES.txt +0 -0
  36. {modal_decomposition-0.1.0 → modal_decomposition-0.1.2}/src/Modal_Decomposition.egg-info/dependency_links.txt +0 -0
  37. {modal_decomposition-0.1.0 → modal_decomposition-0.1.2}/src/Modal_Decomposition.egg-info/requires.txt +0 -0
  38. {modal_decomposition-0.1.0 → modal_decomposition-0.1.2}/src/Modal_Decomposition.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Modal-Decomposition
3
- Version: 0.1.0
3
+ Version: 0.1.2
4
4
  Summary: a package for modal decomposition
5
5
  Author-email: Mao_HaoChuan <2215269365@qq.com>
6
6
  License: Apache-2.0
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "Modal-Decomposition"
7
- version = "0.1.0"
7
+ version = "0.1.2"
8
8
  requires-python = ">=3.8"
9
9
 
10
10
  authors = [
@@ -14,6 +14,7 @@ Description: (if None write None)
14
14
  Modify: (must)
15
15
  2026.3.25 - Create
16
16
  2026.3.30 - Desperate the CEEMDAN and the CEEFD, and rename the Cyclic_CEEFD as CEEFD, del the origin CEEFD.
17
+ 2026.4.7 - Fix the problem when the freq_bins include 0 will make the idx out of list. And change _extract_imf to staticmethod.
17
18
  """
18
19
 
19
20
  import numpy as np
@@ -44,13 +45,15 @@ class ceefd:
44
45
  envelope = np.maximum(envelope, mag_spectrum)
45
46
  return envelope
46
47
 
47
- def _extract_imf(self, signal, freq_bins):
48
+ @staticmethod
49
+ def _extract_imf(signal, freq_bins):
48
50
  N = len(signal)
49
51
  fft_signal = np.fft.fft(signal)
50
52
 
51
53
  mask = np.zeros(N, dtype=bool)
52
54
  mask[freq_bins] = True
53
- mask[N - np.array(freq_bins)] = True
55
+ # mask[N - np.array(freq_bins)] = True -> \ # 2026.4.7
56
+ mask[(N - np.array(freq_bins)) % N] = True
54
57
 
55
58
  imf_fft = fft_signal * mask
56
59
  imf = np.fft.ifft(imf_fft).real
@@ -22,7 +22,7 @@ from .COLOR.colorful_print import printc
22
22
  from typing import Tuple, Union
23
23
 
24
24
 
25
- def emd(S: Union[list, np.ndarray], T: Union[list, np.ndarray]=None, spline_kind: str = "cubic", nbsym: int = 2, max_imf=-1, fs=None)\
25
+ def emd(S: Union[list, np.ndarray], T: Union[list, np.ndarray]=None, spline_kind: str = "cubic", nbsym: int = 2, max_imf=-1, verbose: bool=False)\
26
26
  -> Tuple[np.ndarray, np.ndarray]:
27
27
  """
28
28
  EMD: Empirical Mode Decomposition
@@ -32,7 +32,7 @@ def emd(S: Union[list, np.ndarray], T: Union[list, np.ndarray]=None, spline_kind
32
32
  :param spline_kind: the kind of spline. default cubic.
33
33
  :param nbsym:
34
34
  :param max_imf: the max num of IMFs
35
- :param fs: the f of T. default 1.
35
+ :param verbose: True will print info, else no.
36
36
  :return: IMFs (2-dim), Res (1-dim)
37
37
  """
38
38
  if not isinstance(S, np.ndarray):
@@ -52,7 +52,8 @@ def emd(S: Union[list, np.ndarray], T: Union[list, np.ndarray]=None, spline_kind
52
52
 
53
53
  if T is None: # if T is None, default generate uniform T-axis.
54
54
  T = np.arange(N) # default fs = 1
55
- print(f"Warn: T is None,default T = [0, 1, 2, ..., {N - 1}]")
55
+ if verbose:
56
+ print(f"Warn: T is None,default T = [0, 1, 2, ..., {N - 1}]")
56
57
 
57
58
  else:
58
59
  if not isinstance(T, np.ndarray):
@@ -62,4 +63,13 @@ def emd(S: Union[list, np.ndarray], T: Union[list, np.ndarray]=None, spline_kind
62
63
 
63
64
  IMFs = EMD_cls.emd(S, T, max_imf=max_imf)
64
65
 
65
- return IMFs[:-1, :], IMFs[-1, :]
66
+ Res = IMFs[-1, :]
67
+ IMFs = IMFs[:-1, :]
68
+
69
+ if IMFs.ndim == 1:
70
+ IMFs = IMFs.reshape(1, -1)
71
+
72
+ elif IMFs.ndim == 0:
73
+ IMFs = np.zeros((1, Res.shape[1]))
74
+
75
+ return IMFs, Res
@@ -40,12 +40,21 @@ Modify:
40
40
  2026.3.29 - Optimize the SSA.decompose function, time changed from 40min averagely to 2s averagely.
41
41
  2026.3.30 - Rebuilding All.
42
42
  2026.3.30 - Optimize the function of judging monotonicity.
43
+ 2026.4.3 - Finish the Optimization of the modal decomposition method. Except the MEMD method.
44
+ 2026.4.4 - Add the parameter to describe lib.
45
+ 2026.4.6 - Change the position of the entrance of importing 'threading'. Try to reduce the cost of the import.
43
46
  """
44
47
 
45
- import threading
46
- from importlib import import_module
47
48
 
48
- from .help_function import is_increasing
49
+ __version__ = "0.1.1"
50
+ __author__ = "a-raining-day(Mao)"
51
+ __email__ = "None, Only QQ email."
52
+ __license__ = "Apache 2.0"
53
+ __url__ = "https://github.com/a-raining-day/Modal-Decomposition"
54
+ __description__ = "A comprehensive modal decomposition library"
55
+
56
+
57
+ from importlib import import_module
49
58
 
50
59
  from .CEEFD import ceefd
51
60
  from .CEEMD import ceemd
@@ -67,9 +76,22 @@ from .VMD import vmd
67
76
  import warnings
68
77
  warnings.warn("The MEMD is rebuilding...")
69
78
 
70
- __all__ = ["Function", "Class"]
79
+
80
+ __all__ = \
81
+ [
82
+ "Function", "Class",
83
+ "__version__",
84
+ "__author__",
85
+ "__email__",
86
+ "__license__",
87
+ "__url__",
88
+ "__description__"
89
+ ]
90
+
71
91
 
72
92
  class Class:
93
+ import threading
94
+
73
95
  __cache = {}
74
96
 
75
97
  CEEFD = ceefd
@@ -120,6 +142,7 @@ class Function:
120
142
  # function | default function for modal decomposition
121
143
  # the IMFs (2-dim) means: (K, len(Signal)) (K is the num of IMFs)
122
144
  # CEEFD = ceefd_real_cls.ceefd
145
+
123
146
  CEEFD = Class.CEEFD(fs=1.0, min_peak_distance=10, envelop_iter=3)
124
147
  CEEMD = ceemd
125
148
  CEEMDAN = ceemdan
@@ -136,6 +159,25 @@ class Function:
136
159
  SVMD = svmd
137
160
  VMD = vmd
138
161
 
162
+ # __cache = \
163
+ # {
164
+ # "CEEFD": CEEFD,
165
+ # "CEEMD": CEEMD,
166
+ # "CEEMDAN": CEEMDAN,
167
+ # "EEMD": EEMD,
168
+ # "EFD": EFD,
169
+ # "EMD": EMD,
170
+ # "EWT": EWT,
171
+ # "FMD": FMD,
172
+ # "ICEEMDAN": ICEEMDAN,
173
+ # "LMD": LMD,
174
+ # "MEMD": MEMD,
175
+ # "RPSEMD": RPSEMD,
176
+ # "SSA": SSA,
177
+ # "SVMD": SVMD,
178
+ # "VMD": VMD
179
+ # }
180
+
139
181
 
140
182
  if __name__ == '__main__':
141
- ...
183
+ Function.AAA
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Modal-Decomposition
3
- Version: 0.1.0
3
+ Version: 0.1.2
4
4
  Summary: a package for modal decomposition
5
5
  Author-email: Mao_HaoChuan <2215269365@qq.com>
6
6
  License: Apache-2.0
@@ -69,9 +69,6 @@ def test_SSA(S):
69
69
 
70
70
 
71
71
  if __name__ == '__main__':
72
- import numpy as np
73
- from scipy.signal import firwin, hilbert, correlate, get_window
74
- from scipy.linalg import inv
75
- import matplotlib.pyplot as plt
76
-
72
+ from src.Modal_Decomposition import Function
77
73
 
74
+ Function.AAA