Chaos Atlas
Iterated maps, coupled map lattices, and Lyapunov exponents for chaotic dynamical systems. NumPy arrays in, NumPy arrays out.
This is the Python companion to the Chaos Atlas web explorer, which visualises the same systems interactively.
Install
Requires Python 3.14 or newer.
pip install chaos-atlas
Use
Every map shares the same surface, so switching systems is a one-word change.
from chaos_atlas.maps import logistic, henon
orbit = logistic.trajectory(r=3.9, x0=0.5, iterations=1000)
exponent = logistic.lyapunov(r=4.0) # -> log 2, the Bernoulli shift
points = henon.attractor(a=1.4, b=0.3, iterations=10_000) # (10000, 2)
Bifurcation diagrams come back as paired flat arrays, ready to scatter:
import matplotlib.pyplot as plt
r, x = logistic.bifurcation(r_min=2.5, r_max=4.0, r_steps=2000)
plt.plot(r, x, ",k", alpha=0.25)
Coupled map lattices return a (time_steps, lattice_size) space-time array:
from chaos_atlas import cml
spacetime = cml.diffusive(r=3.9, epsilon=0.4, lattice_size=256, time_steps=512)
plt.imshow(spacetime, aspect="auto", cmap="magma")
Pass rng= (or initial=) when you need a run to be reproducible.
Maps
| Module | System | Notes |
|---|---|---|
logistic |
x → rx(1−x) | period doubling, bifurcation, cobweb |
tent |
piecewise linear | λ = log α exactly, symbolic dynamics |
henon |
(1−ax²+y, bx) | strange attractor, λ₁ ≈ 0.419 |
standard |
Chirikov | area preserving, KAM islands |
ikeda |
optical cavity | spiral attractor |
arnold |
cat map | area preserving, finite recurrence period |
bakers |
baker's transformation | entropy = log 2 exactly |
tinkerbell |
quadratic 2D | multi-loop attractor |
duffing |
double well | fixed points in closed form |
complex_quadratic |
z² + c | Julia and Mandelbrot escape-time |
Lyapunov exponents for the nonlinear 2D maps evolve a tangent vector under the analytic Jacobian with renormalisation each step. Where a map has an exact exponent — tent, baker's, Arnold, logistic at r = 4 — the test suite pins the numerical result to it.
Development
uv venv --python 3.14
uv pip install -e ".[dev]"
uv run pytest
License
Apache-2.0. Copyright 2026 Ricardo A S Frantz.
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 chaos_atlas-0.2.0.tar.gz.
File metadata
- Download URL: chaos_atlas-0.2.0.tar.gz
- Upload date:
- Size: 19.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2e1ab6bfc2f46dd8dcbb5b8def71a97b5f765fa82ed990ba55118ccefcd85349
|
|
| MD5 |
4bfea48bf01f9083111789f801865151
|
|
| BLAKE2b-256 |
653c4b9fe04102f0f62ad2681084e1f1a6f8112829c5478eba86ce4c7271eac4
|
Provenance
The following attestation bundles were made for chaos_atlas-0.2.0.tar.gz:
Publisher:
release.yml on openfluids/chaos-atlas
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
chaos_atlas-0.2.0.tar.gz -
Subject digest:
2e1ab6bfc2f46dd8dcbb5b8def71a97b5f765fa82ed990ba55118ccefcd85349 - Sigstore transparency entry: 2244417228
- Sigstore integration time:
-
Permalink:
openfluids/chaos-atlas@eaa6b88cf0f51b20830463ca36ba18e577586abe -
Branch / Tag:
refs/tags/py-v0.2.0 - Owner: https://github.com/openfluids
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@eaa6b88cf0f51b20830463ca36ba18e577586abe -
Trigger Event:
push
-
Statement type:
File details
Details for the file chaos_atlas-0.2.0-py3-none-any.whl.
File metadata
- Download URL: chaos_atlas-0.2.0-py3-none-any.whl
- Upload date:
- Size: 22.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5a6f94910207c61772646975ab65fb5529457bb64c27d6cde5e725c3a5d3233c
|
|
| MD5 |
8c951749d89313c0d6d678dd4a651f1d
|
|
| BLAKE2b-256 |
99d4d5d1889666b72fb1f0fdda954d7214d391befedb52787b069de1e2f82bc2
|
Provenance
The following attestation bundles were made for chaos_atlas-0.2.0-py3-none-any.whl:
Publisher:
release.yml on openfluids/chaos-atlas
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
chaos_atlas-0.2.0-py3-none-any.whl -
Subject digest:
5a6f94910207c61772646975ab65fb5529457bb64c27d6cde5e725c3a5d3233c - Sigstore transparency entry: 2244417420
- Sigstore integration time:
-
Permalink:
openfluids/chaos-atlas@eaa6b88cf0f51b20830463ca36ba18e577586abe -
Branch / Tag:
refs/tags/py-v0.2.0 - Owner: https://github.com/openfluids
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@eaa6b88cf0f51b20830463ca36ba18e577586abe -
Trigger Event:
push
-
Statement type: