pynamicalsys 1.0.1__py3-none-any.whl → 1.2.2__py3-none-any.whl
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.
- pynamicalsys/__init__.py +8 -1
- pynamicalsys/__version__.py +2 -2
- pynamicalsys/continuous_time/chaotic_indicators.py +347 -0
- pynamicalsys/continuous_time/models.py +240 -0
- pynamicalsys/continuous_time/numerical_integrators.py +337 -0
- pynamicalsys/continuous_time/trajectory_analysis.py +163 -0
- pynamicalsys/continuous_time/validators.py +114 -0
- pynamicalsys/core/continuous_dynamical_systems.py +777 -1
- pynamicalsys/core/discrete_dynamical_systems.py +44 -45
- pynamicalsys/discrete_time/trajectory_analysis.py +3 -2
- {pynamicalsys-1.0.1.dist-info → pynamicalsys-1.2.2.dist-info}/METADATA +35 -15
- {pynamicalsys-1.0.1.dist-info → pynamicalsys-1.2.2.dist-info}/RECORD +14 -9
- {pynamicalsys-1.0.1.dist-info → pynamicalsys-1.2.2.dist-info}/WHEEL +0 -0
- {pynamicalsys-1.0.1.dist-info → pynamicalsys-1.2.2.dist-info}/top_level.txt +0 -0
@@ -16,94 +16,93 @@
|
|
16
16
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
17
17
|
|
18
18
|
|
19
|
-
import numpy as np
|
20
19
|
from numbers import Integral, Real
|
21
|
-
from typing import
|
20
|
+
from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple, Union
|
21
|
+
|
22
|
+
import numpy as np
|
22
23
|
from numpy.typing import NDArray
|
23
24
|
|
24
25
|
from pynamicalsys.common.recurrence_quantification_analysis import RTEConfig
|
26
|
+
from pynamicalsys.common.utils import finite_difference_jacobian, householder_qr
|
25
27
|
from pynamicalsys.discrete_time.dynamical_indicators import (
|
26
|
-
|
27
|
-
lyapunov_qr,
|
28
|
-
finite_time_lyapunov,
|
29
|
-
lyapunov_1D,
|
28
|
+
RTE,
|
30
29
|
SALI,
|
31
30
|
LDI_k,
|
32
|
-
lagrangian_descriptors,
|
33
31
|
dig,
|
34
|
-
hurst_exponent,
|
35
32
|
finite_time_hurst_exponent,
|
36
|
-
|
33
|
+
finite_time_lyapunov,
|
37
34
|
finite_time_RTE,
|
35
|
+
hurst_exponent,
|
36
|
+
lagrangian_descriptors,
|
37
|
+
lyapunov_1D,
|
38
|
+
lyapunov_er,
|
39
|
+
lyapunov_qr,
|
38
40
|
)
|
39
41
|
from pynamicalsys.discrete_time.models import (
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
unbounded_standard_map,
|
42
|
+
extended_standard_nontwist_map,
|
43
|
+
extended_standard_nontwist_map_backwards,
|
44
|
+
extended_standard_nontwist_map_jacobian,
|
44
45
|
henon_map,
|
45
46
|
henon_map_jacobian,
|
47
|
+
leonel_map,
|
48
|
+
leonel_map_backwards,
|
49
|
+
leonel_map_jacobian,
|
46
50
|
logistic_map,
|
47
51
|
logistic_map_jacobian,
|
52
|
+
lozi_map,
|
53
|
+
lozi_map_jacobian,
|
54
|
+
rulkov_map,
|
55
|
+
rulkov_map_jacobian,
|
56
|
+
standard_map,
|
57
|
+
standard_map_backwards,
|
58
|
+
standard_map_jacobian,
|
48
59
|
standard_nontwist_map,
|
49
60
|
standard_nontwist_map_backwards,
|
50
61
|
standard_nontwist_map_jacobian,
|
51
|
-
extended_standard_nontwist_map,
|
52
|
-
extended_standard_nontwist_map_backwards,
|
53
|
-
extended_standard_nontwist_map_jacobian,
|
54
|
-
leonel_map,
|
55
|
-
leonel_map_jacobian,
|
56
|
-
leonel_map_backwards,
|
57
62
|
symplectic_map_4D,
|
58
63
|
symplectic_map_4D_backwards,
|
59
64
|
symplectic_map_4D_jacobian,
|
60
|
-
|
61
|
-
lozi_map_jacobian,
|
62
|
-
rulkov_map,
|
63
|
-
rulkov_map_jacobian,
|
65
|
+
unbounded_standard_map,
|
64
66
|
)
|
65
67
|
from pynamicalsys.discrete_time.trajectory_analysis import (
|
66
|
-
generate_trajectory,
|
67
|
-
ensemble_trajectories,
|
68
68
|
bifurcation_diagram,
|
69
|
-
|
69
|
+
calculate_manifolds,
|
70
|
+
classify_stability,
|
71
|
+
eigenvalues_and_eigenvectors,
|
72
|
+
ensemble_time_average,
|
73
|
+
ensemble_trajectories,
|
70
74
|
escape_basin_and_time_entering,
|
71
75
|
escape_time_exiting,
|
72
|
-
survival_probability,
|
73
76
|
find_periodic_orbit,
|
74
77
|
find_periodic_orbit_symmetry_line,
|
75
|
-
|
76
|
-
classify_stability,
|
77
|
-
calculate_manifolds,
|
78
|
-
rotation_number,
|
78
|
+
generate_trajectory,
|
79
79
|
iterate_mapping,
|
80
|
-
|
80
|
+
period_counter,
|
81
|
+
rotation_number,
|
82
|
+
survival_probability,
|
81
83
|
)
|
82
84
|
from pynamicalsys.discrete_time.transport import (
|
83
|
-
diffusion_coefficient,
|
84
85
|
average_vs_time,
|
85
|
-
|
86
|
+
cumulative_average_vs_time,
|
87
|
+
diffusion_coefficient,
|
86
88
|
mean_squared_displacement,
|
87
89
|
recurrence_times,
|
88
|
-
|
90
|
+
root_mean_squared,
|
89
91
|
)
|
90
|
-
|
91
|
-
from pynamicalsys.common.utils import finite_difference_jacobian, householder_qr
|
92
|
-
|
93
|
-
from .time_series_metrics import TimeSeriesMetrics as tsm
|
94
|
-
|
95
92
|
from pynamicalsys.discrete_time.validators import (
|
93
|
+
validate_and_convert_param_range,
|
94
|
+
validate_axis,
|
95
|
+
validate_finite_time,
|
96
96
|
validate_initial_conditions,
|
97
|
-
validate_parameters,
|
98
97
|
validate_non_negative,
|
99
|
-
|
100
|
-
validate_and_convert_param_range,
|
98
|
+
validate_parameters,
|
101
99
|
validate_positive,
|
102
100
|
validate_sample_times,
|
103
|
-
|
104
|
-
validate_finite_time,
|
101
|
+
validate_transient_time,
|
105
102
|
)
|
106
103
|
|
104
|
+
from .time_series_metrics import TimeSeriesMetrics as tsm
|
105
|
+
|
107
106
|
|
108
107
|
class DiscreteDynamicalSystem:
|
109
108
|
"""Class representing a discrete dynamical system with various models and methods for analysis.
|
@@ -15,10 +15,11 @@
|
|
15
15
|
# You should have received a copy of the GNU General Public License
|
16
16
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
17
17
|
|
18
|
-
from typing import
|
19
|
-
|
18
|
+
from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple, Union
|
19
|
+
|
20
20
|
import numpy as np
|
21
21
|
from numba import njit, prange
|
22
|
+
from numpy.typing import NDArray
|
22
23
|
|
23
24
|
|
24
25
|
@njit(cache=True)
|
@@ -1,7 +1,7 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: pynamicalsys
|
3
|
-
Version: 1.
|
4
|
-
Summary: A Python toolkit for
|
3
|
+
Version: 1.2.2
|
4
|
+
Summary: A Python toolkit for the analysis of dynamical systems
|
5
5
|
Author-email: Matheus Rolim Sales <rolim.sales.m@gmail.com>
|
6
6
|
License: GNU GENERAL PUBLIC LICENSE
|
7
7
|
Version 3, 29 June 2007
|
@@ -689,6 +689,7 @@ Description-Content-Type: text/markdown
|
|
689
689
|
Requires-Dist: numpy>=1.21
|
690
690
|
Requires-Dist: matplotlib>=3.4
|
691
691
|
Requires-Dist: numba>=0.55
|
692
|
+
Requires-Dist: scipy>=0.6
|
692
693
|
|
693
694
|
# pynamicalsys: A Python toolkit for the analysis of dynamical systems
|
694
695
|
|
@@ -698,28 +699,28 @@ Requires-Dist: numba>=0.55
|
|
698
699
|
|
699
700
|
## Overview
|
700
701
|
|
701
|
-
**pynamicalsys** is designed to provide a fast, flexible, and user-friendly environment for analyzing **nonlinear dynamical systems**. It is
|
702
|
+
**pynamicalsys** is designed to provide a fast, flexible, and user-friendly environment for analyzing **nonlinear dynamical systems**. It is intended for students, researchers, educators, and enthusiasts who want to explore the world of chaos and dynamical systems. Beyond standard tools like trajectory generation and Lyapunov exponents calculation, **pynamicalsys** includes advanced features such as
|
702
703
|
|
703
|
-
-
|
704
|
-
-
|
705
|
-
-
|
706
|
-
-
|
707
|
-
-
|
708
|
-
-
|
709
|
-
-
|
704
|
+
- **Linear dependence index** for chaos detection.
|
705
|
+
- **Recurrence plots** and recurrence time statistics.
|
706
|
+
- Chaos indicators based on **weighted Birkhoff averages**.
|
707
|
+
- Statistical measures of **diffusion and transport** in dynamical systems.
|
708
|
+
- Computation of **periodic orbits**, their **stability** and their **manifolds**.
|
709
|
+
- Basin metric for **quantifying** the structure of **basins of attraction**.
|
710
|
+
- **Plot styling** for consistent and customizable visualizations.
|
710
711
|
|
711
|
-
pynamicalsys is built on top of NumPy and Numba, ensuring high performance and efficiency. Thanks to Numba accelerated computation, pynamicalsys offers speedups up to **130x** compared to the original Python implementation of the algorithms. This makes it suitable for large-scale simulations and analyses.
|
712
|
+
**pynamicalsys** is built on top of NumPy and Numba, ensuring high performance and efficiency. Thanks to Numba accelerated computation, **pynamicalsys** offers speedups up to **130x** compared to the original Python implementation of the algorithms. This makes it suitable for large-scale simulations and analyses.
|
712
713
|
|
713
714
|
## Installation
|
714
715
|
|
715
716
|
### Prerequisites
|
716
717
|
|
717
|
-
-
|
718
|
-
-
|
718
|
+
- Python 3.8 or higher
|
719
|
+
- pip (Python package installer)
|
719
720
|
|
720
721
|
### Install via PyPI
|
721
722
|
|
722
|
-
To install the latest stable release, run:
|
723
|
+
To install the latest stable release, run in your command line:
|
723
724
|
|
724
725
|
```bash
|
725
726
|
$ pip install pynamicalsys
|
@@ -727,6 +728,13 @@ $ pip install pynamicalsys
|
|
727
728
|
|
728
729
|
> **Note:** On **Windows**, it is **strongly recommended** to use [Anaconda](https://www.anaconda.com). It simplifies dependency management and avoids potential issues with scientific libraries during installation. Be sure to run the command from the **Anaconda Prompt**, not from Command Prompt or PowerShell, to ensure the correct environment is activated.
|
729
730
|
|
731
|
+
### Upgrade via PyPI
|
732
|
+
|
733
|
+
To upgrade your current version of **pynamicalsys** to the latest stable release, run in your command line:
|
734
|
+
|
735
|
+
```bash
|
736
|
+
$ pip install **pynamicalsys** --upgrade
|
737
|
+
```
|
730
738
|
|
731
739
|
### Install from source
|
732
740
|
|
@@ -757,7 +765,19 @@ $ pip install --upgrade pip build
|
|
757
765
|
|
758
766
|
## Citation
|
759
767
|
|
760
|
-
Currently, our research paper is under review, but in the mean time, if you use **pynamicalsys** in your work, you can cite the arXiv version:
|
768
|
+
Currently, our research paper is under review, but in the mean time, if you use **pynamicalsys** in your work, you can cite the [arXiv](https://arxiv.org/abs/2506.14044) version:
|
769
|
+
|
770
|
+
```bibtex
|
771
|
+
@misc{pynamicalsys,
|
772
|
+
title={pynamicalsys: A Python toolkit for the analysis of dynamical systems},
|
773
|
+
author={Matheus Rolim Sales and Leonardo Costa de Souza and Daniel Borin and Michele Mugnaine and José Danilo Szezech Jr. and Ricardo Luiz Viana and Iberê Luiz Caldas and Edson Denis Leonel and Chris G. Antonopoulos},
|
774
|
+
year={2025},
|
775
|
+
eprint={2506.14044},
|
776
|
+
archivePrefix={arXiv},
|
777
|
+
primaryClass={nlin.CD},
|
778
|
+
url={https://arxiv.org/abs/2506.14044},
|
779
|
+
}
|
780
|
+
```
|
761
781
|
|
762
782
|
## Contributing
|
763
783
|
|
@@ -1,23 +1,28 @@
|
|
1
|
-
pynamicalsys/__init__.py,sha256=
|
2
|
-
pynamicalsys/__version__.py,sha256=
|
1
|
+
pynamicalsys/__init__.py,sha256=IBHDcCD7wX8pULFXLk0yvF3uuNodvDKGirJektm1nR4,1215
|
2
|
+
pynamicalsys/__version__.py,sha256=o0zEAUXpMoJZCULVYplCdjcZuIQ-3sIIZKyfNu_loQE,511
|
3
3
|
pynamicalsys/common/__init__.py,sha256=W4OESm7TA-EUTGUOtIgBgvSd1n80Mgl0KA2dCkw8yIw,721
|
4
4
|
pynamicalsys/common/basin_analysis.py,sha256=teGEOMPPOdzKNZsN0_OvkzBlcV-UOANRjcdFyI2-FLM,5473
|
5
5
|
pynamicalsys/common/recurrence_quantification_analysis.py,sha256=neBolgoWrGJYOQta71Jf2ZMwNK1RoaZb_wNHqb1mM7I,14356
|
6
6
|
pynamicalsys/common/utils.py,sha256=ezNMSGTDVjtHpAa95Dr0r09s5CR_h9AShLU_ZuLMM44,10189
|
7
7
|
pynamicalsys/continuous_time/__init__.py,sha256=W4OESm7TA-EUTGUOtIgBgvSd1n80Mgl0KA2dCkw8yIw,721
|
8
|
+
pynamicalsys/continuous_time/chaotic_indicators.py,sha256=rwstGDMx2ynT7woezVqaOQ10HJpblp0dJvheLjpCnBg,9891
|
9
|
+
pynamicalsys/continuous_time/models.py,sha256=YJtmsVZqSn3GDNqV0IKSQBHWZSCDY_EJ5Sgh4ulDc9I,5339
|
10
|
+
pynamicalsys/continuous_time/numerical_integrators.py,sha256=pSsDIlxhSntLxfHLRNduqjExdiUEY6yNpQRyvLBraqk,9667
|
11
|
+
pynamicalsys/continuous_time/trajectory_analysis.py,sha256=1Eh4WEIlLT_fFGfgEorSgN1qGZ9ym0kVEPbWcRRXNKQ,4406
|
12
|
+
pynamicalsys/continuous_time/validators.py,sha256=dvtlcWbn2w5_vNUB68f7ywFPyFrPKe3cUDqGCk52mhw,3834
|
8
13
|
pynamicalsys/core/__init__.py,sha256=W4OESm7TA-EUTGUOtIgBgvSd1n80Mgl0KA2dCkw8yIw,721
|
9
14
|
pynamicalsys/core/basin_metrics.py,sha256=sqSj-UCzBQdRaTvOBtzo8SCgJN90T3GiWy4nlLsbg5c,7604
|
10
|
-
pynamicalsys/core/continuous_dynamical_systems.py,sha256=
|
11
|
-
pynamicalsys/core/discrete_dynamical_systems.py,sha256=
|
15
|
+
pynamicalsys/core/continuous_dynamical_systems.py,sha256=nkESGfuxBT_UmoY_2tJv1fMY4hK1J0M74aQpLgNVEyI,30482
|
16
|
+
pynamicalsys/core/discrete_dynamical_systems.py,sha256=AhxyAOZFnkjf4KnJiaReN5ZRndkFFEG_GOT2_PeLpXs,135874
|
12
17
|
pynamicalsys/core/plot_styler.py,sha256=sVX_rb1HSt340U3zyPlXojylhma9cKCOgYirMIge18M,5647
|
13
18
|
pynamicalsys/core/time_series_metrics.py,sha256=7fwXO1I6lIjmv_MzYxBn-9k2gjjnhm_y_Tp3diE1z68,5102
|
14
19
|
pynamicalsys/discrete_time/__init__.py,sha256=W4OESm7TA-EUTGUOtIgBgvSd1n80Mgl0KA2dCkw8yIw,721
|
15
20
|
pynamicalsys/discrete_time/dynamical_indicators.py,sha256=Ck6orYxy09NHsVYnTSmkROq33csiyiePdsqzOAJCKcs,43057
|
16
21
|
pynamicalsys/discrete_time/models.py,sha256=u9MlaCzBzR_OomWRYbEC2sS2qpfDg7qzZjX8YDijVe0,10756
|
17
|
-
pynamicalsys/discrete_time/trajectory_analysis.py,sha256=
|
22
|
+
pynamicalsys/discrete_time/trajectory_analysis.py,sha256=W3nqLJgqJYMV9DbBbSSOpzNDQ7XlroP3lC0sgSoFztY,48669
|
18
23
|
pynamicalsys/discrete_time/transport.py,sha256=29leQue2ReRbFzT_riqWXTZDvf2O7jMsMOUnAQPBrBU,15972
|
19
24
|
pynamicalsys/discrete_time/validators.py,sha256=4eWQAlZgCzFsrmijzVF10CZuoIMiu-jvrrvRokBFTkY,10013
|
20
|
-
pynamicalsys-1.
|
21
|
-
pynamicalsys-1.
|
22
|
-
pynamicalsys-1.
|
23
|
-
pynamicalsys-1.
|
25
|
+
pynamicalsys-1.2.2.dist-info/METADATA,sha256=UQDElv3HVAqJDDUM0251dJVDbQZPhyLTMe-hnHfPK-E,45834
|
26
|
+
pynamicalsys-1.2.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
27
|
+
pynamicalsys-1.2.2.dist-info/top_level.txt,sha256=1AqoHXye_hGRkvqu4KY0SdEuNTgqf3xyTlV8xhiJJFU,13
|
28
|
+
pynamicalsys-1.2.2.dist-info/RECORD,,
|
File without changes
|
File without changes
|