ntsa — nonlinear time-series analysis for dynamical-system models
Characterizes the dynamical regime of a model from a single long trajectory:
- Lyapunov exponents
- Delay embedding (optimal lag + false nearest neighbours)
- Regime classification (fixed point / limit cycle period-k / frequency-locked / quasiperiodic / chaotic)
- Yields a per-case diagnostic figure — one row of 8 panels. Example:
Figure 1: Dynamical systems diagnostics Time series | PSD | 3-D delay portrait | first-return map of local maxima |
plane-crossing Poincaré section | recurrence plot | 3-D MDS | Lyapunov spectrum
Documentation: andreanovoa.github.io/ntsa
| Tutorial: tutorial_ntsa.ipynb
Key Reference: Kantz & Schreiber, Nonlinear Time Series Analysis (2004).
Install
pip install ntsa
Quickstart
from dynamodels.physical import Lorenz63
from ntsa import characterize as chz
chz.characterize([Lorenz63()], pdf_name='figs/l63.pdf')
python -m ntsa.characterize # 4-case demo -> figs/ntsa_defaults.pdf (+ .png)
Works with any model implementing the
model protocol —
dynamodels is the reference
implementation. Part of the same ecosystem as
romda (real-time
bias-aware data assimilation).
Citation
If you use this repository, please cite the software archive:
@software{novoa_ntsa,
author = {Nóvoa},
title = {ntsa: nonlinear time-series analysis for dynamical-system models},
publisher = {Zenodo},
doi = {10.5281/zenodo.21843575},
url = {https://doi.org/10.5281/zenodo.21843575},
}
The routines in this package were developed from the codes published as supplementary material of Nóvoa & Magri (2022):
@article{novoa2022jfm,
title = {Real-time thermoacoustic data assimilation},
journal = {Journal of Fluid Mechanics},
volume = {948},
pages = {A35},
year = {2022},
doi = {10.1017/jfm.2022.653},
url = {https://doi.org/10.1017/jfm.2022.653},
eprint = {2106.06409},
archivePrefix = {arXiv},
author = {Nóvoa and Magri},
}
Development
pip install -e ".[dev]"
python -m pytest tests/
ruff check ntsa/ tests/
Releases: bump version in pyproject.toml, then git tag vX.Y.Z && git push --tags
(publishes to PyPI); docs deploy to GitHub Pages on every push to main.
License
MIT
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ntsa-0.3.0.tar.gz.
File metadata
- Download URL: ntsa-0.3.0.tar.gz
- Upload date:
- Size: 38.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
19399ff3541abf87e8499bad4a1b2578ccebcb3d73f153371d1c15c55fdbf7ee
|
|
| MD5 |
ffddac2bf880bcad78c1e9fcab19bdc9
|
|
| BLAKE2b-256 |
748765255597a38d4850624600cd562f11d9725f7526cf9f29da5fa7e45522fa
|
Provenance
The following attestation bundles were made for ntsa-0.3.0.tar.gz:
Publisher:
release.yml on andreanovoa/ntsa
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ntsa-0.3.0.tar.gz -
Subject digest:
19399ff3541abf87e8499bad4a1b2578ccebcb3d73f153371d1c15c55fdbf7ee - Sigstore transparency entry: 2551235859
- Sigstore integration time:
-
Permalink:
andreanovoa/ntsa@dbbd36408a03594a2aa142de94c391680610f95a -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/andreanovoa
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@dbbd36408a03594a2aa142de94c391680610f95a -
Trigger Event:
push
-
Statement type:
File details
Details for the file ntsa-0.3.0-py3-none-any.whl.
File metadata
- Download URL: ntsa-0.3.0-py3-none-any.whl
- Upload date:
- Size: 37.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ee71888c28aad10e47257650eedad127a08a0fe46d8db44a0f56537ccae7776a
|
|
| MD5 |
cda877d316939604a4b346d6b03e4626
|
|
| BLAKE2b-256 |
37a229fd31452ee3daab5962c6bb8c5b074938215741ae48c0b5a9f47380b883
|
Provenance
The following attestation bundles were made for ntsa-0.3.0-py3-none-any.whl:
Publisher:
release.yml on andreanovoa/ntsa
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ntsa-0.3.0-py3-none-any.whl -
Subject digest:
ee71888c28aad10e47257650eedad127a08a0fe46d8db44a0f56537ccae7776a - Sigstore transparency entry: 2551236422
- Sigstore integration time:
-
Permalink:
andreanovoa/ntsa@dbbd36408a03594a2aa142de94c391680610f95a -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/andreanovoa
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@dbbd36408a03594a2aa142de94c391680610f95a -
Trigger Event:
push
-
Statement type: