complexeva 0.1.8__tar.gz → 0.1.9__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 (32) hide show
  1. {complexeva-0.1.8 → complexeva-0.1.9}/PKG-INFO +1 -1
  2. complexeva-0.1.9/complexeva/measures/__init__.py +5 -0
  3. complexeva-0.1.9/complexeva/measures/dimension_1/__init__.py +14 -0
  4. complexeva-0.1.9/complexeva/measures/dimension_1/compression_complexity.py +25 -0
  5. complexeva-0.1.9/complexeva/measures/dimension_1/kolmogorov_complexity.py +24 -0
  6. complexeva-0.1.9/complexeva/measures/dimension_1/lyapunov_exponent.py +44 -0
  7. {complexeva-0.1.8 → complexeva-0.1.9}/complexeva.egg-info/PKG-INFO +1 -1
  8. {complexeva-0.1.8 → complexeva-0.1.9}/complexeva.egg-info/SOURCES.txt +3 -0
  9. {complexeva-0.1.8 → complexeva-0.1.9}/setup.py +1 -1
  10. complexeva-0.1.8/complexeva/measures/__init__.py +0 -6
  11. complexeva-0.1.8/complexeva/signal/__init__.py +0 -0
  12. {complexeva-0.1.8 → complexeva-0.1.9}/README.md +0 -0
  13. {complexeva-0.1.8 → complexeva-0.1.9}/complexeva/__init__.py +0 -0
  14. {complexeva-0.1.8 → complexeva-0.1.9}/complexeva/dummies/__init__.py +0 -0
  15. {complexeva-0.1.8 → complexeva-0.1.9}/complexeva/dummies/matrix.py +0 -0
  16. {complexeva-0.1.8 → complexeva-0.1.9}/complexeva/dummies/networks.py +0 -0
  17. {complexeva-0.1.8 → complexeva-0.1.9}/complexeva/measures/dimension_1/higuchi.py +0 -0
  18. {complexeva-0.1.8 → complexeva-0.1.9}/complexeva/measures/dimension_1/lempel_ziv.py +0 -0
  19. {complexeva-0.1.8/complexeva/measures/dimension_1 → complexeva-0.1.9/complexeva/measures/dimension_2}/__init__.py +0 -0
  20. {complexeva-0.1.8 → complexeva-0.1.9}/complexeva/measures/dimension_2/cbb_matrix.py +0 -0
  21. {complexeva-0.1.8/complexeva/measures/dimension_2 → complexeva-0.1.9/complexeva/measures/network_space}/__init__.py +0 -0
  22. {complexeva-0.1.8 → complexeva-0.1.9}/complexeva/measures/network_space/cbb_networkx.py +0 -0
  23. {complexeva-0.1.8 → complexeva-0.1.9}/complexeva/measures/validate.py +0 -0
  24. {complexeva-0.1.8/complexeva/measures/network_space → complexeva-0.1.9/complexeva/signal}/__init__.py +0 -0
  25. {complexeva-0.1.8 → complexeva-0.1.9}/complexeva/signal/co_activation.py +0 -0
  26. {complexeva-0.1.8 → complexeva-0.1.9}/complexeva/utils/__init__.py +0 -0
  27. {complexeva-0.1.8 → complexeva-0.1.9}/complexeva/utils/convert_image_matrix.py +0 -0
  28. {complexeva-0.1.8 → complexeva-0.1.9}/complexeva/utils/convert_matrix_network.py +0 -0
  29. {complexeva-0.1.8 → complexeva-0.1.9}/complexeva/utils/device.py +0 -0
  30. {complexeva-0.1.8 → complexeva-0.1.9}/complexeva.egg-info/dependency_links.txt +0 -0
  31. {complexeva-0.1.8 → complexeva-0.1.9}/complexeva.egg-info/top_level.txt +0 -0
  32. {complexeva-0.1.8 → complexeva-0.1.9}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: complexeva
3
- Version: 0.1.8
3
+ Version: 0.1.9
4
4
  Home-page:
5
5
  Author: Don Yin
6
6
  Author-email: don_yin@outlook.com
@@ -0,0 +1,5 @@
1
+ from .dimension_1 import *
2
+ from .dimension_2.cbb_matrix import FractalHandlerMatrix
3
+ from .network_space.cbb_networkx import FractalHandlerNetworkX
4
+
5
+ __all__ = ["FractalHandlerMatrix", "FractalHandlerNetworkX", *dimension_1.__all__]
@@ -0,0 +1,14 @@
1
+ from .compression_complexity import compression_complexity
2
+ from .lyapunov_exponent import lyapunov_exponent
3
+ from .kolmogorov_complexity import kolmogorov_complexity
4
+ from .higuchi import hfd_matlab_equivalent, hfd_pyeeg
5
+ from .lempel_ziv import lempel_ziv
6
+
7
+ __all__ = [
8
+ "compression_complexity",
9
+ "lyapunov_exponent",
10
+ "kolmogorov_complexity",
11
+ "hfd_matlab_equivalent",
12
+ "hfd_pyeeg",
13
+ "lempel_ziv",
14
+ ]
@@ -0,0 +1,25 @@
1
+ import zlib
2
+ import numpy as np
3
+
4
+
5
+ def compression_complexity(data):
6
+ """
7
+ Calculate compression complexity using zlib compression.
8
+
9
+ Args:
10
+ data: numpy array or list of numerical values
11
+
12
+ Returns:
13
+ float: compression complexity score
14
+ """
15
+ # Convert numerical data to bytes
16
+ if isinstance(data, np.ndarray):
17
+ data = data.tobytes()
18
+ elif isinstance(data, list):
19
+ data = np.array(data).tobytes()
20
+ else:
21
+ raise ValueError("Input must be a numpy array or list")
22
+
23
+ # Calculate compression ratio
24
+ compressed = zlib.compress(data)
25
+ return len(compressed) / len(data) # Normalized complexity score
@@ -0,0 +1,24 @@
1
+ import zlib
2
+ import numpy as np
3
+
4
+
5
+ def kolmogorov_complexity(data):
6
+ """
7
+ Calculate an approximation of Kolmogorov complexity using zlib compression.
8
+
9
+ Args:
10
+ data: numpy array or list of numerical values
11
+
12
+ Returns:
13
+ int: approximated Kolmogorov complexity (compressed length)
14
+ """
15
+ # Convert numerical data to bytes
16
+ if isinstance(data, np.ndarray):
17
+ data = data.tobytes()
18
+ elif isinstance(data, list):
19
+ data = np.array(data).tobytes()
20
+ else:
21
+ raise ValueError("Input must be a numpy array or list")
22
+
23
+ # Calculate compressed length as approximation of Kolmogorov complexity
24
+ return len(zlib.compress(data))
@@ -0,0 +1,44 @@
1
+ import numpy as np
2
+ from scipy.spatial.distance import pdist, squareform
3
+
4
+
5
+ def lyapunov_exponent(data, tau=1, m=2, dt=1):
6
+ """
7
+ Calculate the largest Lyapunov exponent for a time series.
8
+
9
+ Args:
10
+ data: numpy array or list of numerical values
11
+ tau: time delay (default=1)
12
+ m: embedding dimension (default=2)
13
+ dt: time step (default=1)
14
+
15
+ Returns:
16
+ float: largest Lyapunov exponent
17
+ """
18
+ # Convert to numpy array if needed
19
+ x = np.array(data)
20
+ N = len(x)
21
+
22
+ # Create time-delay embedding
23
+ Y = np.zeros((N - (m - 1) * tau, m))
24
+ for i in range(m):
25
+ Y[:, i] = x[i * tau : N - (m - 1) * tau + i * tau]
26
+
27
+ # Calculate pairwise distances
28
+ D = squareform(pdist(Y))
29
+ np.fill_diagonal(D, np.inf) # Exclude self-matches
30
+
31
+ # Find nearest neighbors
32
+ nearest = np.argmin(D, axis=1)
33
+
34
+ # Calculate divergence
35
+ div = np.zeros(N - (m - 1) * tau - 1)
36
+ for i in range(len(div)):
37
+ div[i] = np.abs(x[i + 1] - x[nearest[i] + 1])
38
+
39
+ # Calculate Lyapunov exponent
40
+ positive_div = div[div > 0] # Avoid log(0)
41
+ if len(positive_div) == 0:
42
+ return 0.0
43
+
44
+ return np.mean(np.log(positive_div)) / dt
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: complexeva
3
- Version: 0.1.8
3
+ Version: 0.1.9
4
4
  Home-page:
5
5
  Author: Don Yin
6
6
  Author-email: don_yin@outlook.com
@@ -11,8 +11,11 @@ complexeva/dummies/networks.py
11
11
  complexeva/measures/__init__.py
12
12
  complexeva/measures/validate.py
13
13
  complexeva/measures/dimension_1/__init__.py
14
+ complexeva/measures/dimension_1/compression_complexity.py
14
15
  complexeva/measures/dimension_1/higuchi.py
16
+ complexeva/measures/dimension_1/kolmogorov_complexity.py
15
17
  complexeva/measures/dimension_1/lempel_ziv.py
18
+ complexeva/measures/dimension_1/lyapunov_exponent.py
16
19
  complexeva/measures/dimension_2/__init__.py
17
20
  complexeva/measures/dimension_2/cbb_matrix.py
18
21
  complexeva/measures/network_space/__init__.py
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
 
3
3
  setup(
4
4
  name="complexeva",
5
- version="0.1.8",
5
+ version="0.1.9",
6
6
  packages=find_packages(),
7
7
  install_requires=[],
8
8
  author="Don Yin",
@@ -1,6 +0,0 @@
1
- from .dimension_1.lempel_ziv import lempel_ziv
2
- from .dimension_1.higuchi import hfd_matlab_equivalent, hfd_pyeeg
3
- from .dimension_2.cbb_matrix import FractalHandlerMatrix
4
- from .network_space.cbb_networkx import FractalHandlerNetworkX
5
-
6
- __all__ = ["lempel_ziv", "hfd_matlab_equivalent", "hfd_pyeeg", "FractalHandlerMatrix", "FractalHandlerNetworkX"]
File without changes
File without changes
File without changes