att.synthetic

Synthetic chaotic system generators for validation.

att.synthetic.lorenz_system(n_steps=10000, dt=0.01, sigma=10.0, rho=28.0, beta=2.6666666666666665, initial=None, noise=0.0, seed=None)[source]

Generate a Lorenz attractor trajectory.

Returns: (n_steps, 3) array.

Parameters:
Return type:

ndarray

att.synthetic.rossler_system(n_steps=10000, dt=0.01, a=0.2, b=0.2, c=5.7, initial=None, noise=0.0, seed=None)[source]

Generate a Rössler attractor trajectory.

Returns: (n_steps, 3) array.

Parameters:
Return type:

ndarray

att.synthetic.coupled_lorenz(n_steps=10000, dt=0.01, coupling=0.1, sigma=10.0, rho=28.0, beta=2.6666666666666665, seed=None)[source]

Two Lorenz systems with diffusive coupling on the x-variable.

coupling=0 → independent. coupling→1 → synchronization. Returns: (ts_x, ts_y), each (n_steps, 3).

Parameters:
Return type:

tuple[ndarray, ndarray]

att.synthetic.coupled_rossler_lorenz(n_steps=10000, dt=0.01, coupling=0.1, a=0.2, b=0.2, c=5.7, sigma=10.0, rho=28.0, beta=2.6666666666666665, seed=None)[source]

Rössler coupled to Lorenz — different intrinsic timescales.

Tests per-channel delay handling in JointEmbedder. Returns: (ts_rossler, ts_lorenz).

Parameters:
Return type:

tuple[ndarray, ndarray]

att.synthetic.switching_rossler(n_steps=20000, dt=0.01, switch_every=5000, seed=None)[source]

Rössler with parameter switches at known intervals.

Alternates between two parameter regimes (c=5.7 and c=18.0) to create ground truth attractor transitions.

Returns: (n_steps, 3) array.

Parameters:
Return type:

ndarray

att.synthetic.coupled_oscillators(n_oscillators=3, coupling_matrix=None, n_steps=10000, dt=0.01, seed=None)[source]

Multiple coupled Rössler oscillators with configurable coupling.

Returns: (n_steps, n_oscillators, 3) array.

Parameters:
Return type:

ndarray

att.synthetic.kuramoto_oscillators(n_oscillators=2, n_steps=10000, dt=0.01, coupling=0.5, omega_spread=1.0, noise=0.0, seed=None)[source]

Kuramoto coupled phase oscillators.

Simulates the Kuramoto model of phase-coupled oscillators. Useful for testing topological binding on oscillatory (non-chaotic) dynamics.

The classic Kuramoto model: dθ_i/dt = ω_i + (K/N) Σ_j sin(θ_j − θ_i) + η(t)

Parameters:
  • n_oscillators (number of oscillators)

  • n_steps (number of integration steps)

  • dt (integration timestep)

  • coupling (coupling strength K)

  • omega_spread (std of natural frequency distribution (mean=1.0))

  • noise (Gaussian noise amplitude)

  • seed (random seed)

Returns:

  • phases ((n_steps, n_oscillators) array of phase values)

  • signals ((n_steps, n_oscillators) array with signal_i = sin(phase_i))

Return type:

tuple[ndarray, ndarray]

att.synthetic.aizawa_system(n_steps=10000, dt=0.01, alpha=0.95, beta=0.7, gamma=0.6, delta=3.5, epsilon=0.25, zeta=0.1, initial=None, noise=0.0, seed=None)[source]

Generate an Aizawa attractor trajectory.

The Aizawa attractor has roughly spherical geometry with a helical escape tube, producing cleaner cross-sections than Lorenz or Rössler when intersected by projections.

Returns: (n_steps, 3) array.

Parameters:
Return type:

ndarray

Chaotic system generators for validation and benchmarking.

All generators use RK4 integration and accept an optional seed parameter. If seed is None, uses the global seed state from set_seed().

att.synthetic.generators.lorenz_system(n_steps=10000, dt=0.01, sigma=10.0, rho=28.0, beta=2.6666666666666665, initial=None, noise=0.0, seed=None)[source]

Generate a Lorenz attractor trajectory.

Returns: (n_steps, 3) array.

Parameters:
Return type:

ndarray

att.synthetic.generators.rossler_system(n_steps=10000, dt=0.01, a=0.2, b=0.2, c=5.7, initial=None, noise=0.0, seed=None)[source]

Generate a Rössler attractor trajectory.

Returns: (n_steps, 3) array.

Parameters:
Return type:

ndarray

att.synthetic.generators.coupled_lorenz(n_steps=10000, dt=0.01, coupling=0.1, sigma=10.0, rho=28.0, beta=2.6666666666666665, seed=None)[source]

Two Lorenz systems with diffusive coupling on the x-variable.

coupling=0 → independent. coupling→1 → synchronization. Returns: (ts_x, ts_y), each (n_steps, 3).

Parameters:
Return type:

tuple[ndarray, ndarray]

att.synthetic.generators.coupled_rossler_lorenz(n_steps=10000, dt=0.01, coupling=0.1, a=0.2, b=0.2, c=5.7, sigma=10.0, rho=28.0, beta=2.6666666666666665, seed=None)[source]

Rössler coupled to Lorenz — different intrinsic timescales.

Tests per-channel delay handling in JointEmbedder. Returns: (ts_rossler, ts_lorenz).

Parameters:
Return type:

tuple[ndarray, ndarray]

att.synthetic.generators.switching_rossler(n_steps=20000, dt=0.01, switch_every=5000, seed=None)[source]

Rössler with parameter switches at known intervals.

Alternates between two parameter regimes (c=5.7 and c=18.0) to create ground truth attractor transitions.

Returns: (n_steps, 3) array.

Parameters:
Return type:

ndarray

att.synthetic.generators.coupled_oscillators(n_oscillators=3, coupling_matrix=None, n_steps=10000, dt=0.01, seed=None)[source]

Multiple coupled Rössler oscillators with configurable coupling.

Returns: (n_steps, n_oscillators, 3) array.

Parameters:
Return type:

ndarray

att.synthetic.generators.aizawa_system(n_steps=10000, dt=0.01, alpha=0.95, beta=0.7, gamma=0.6, delta=3.5, epsilon=0.25, zeta=0.1, initial=None, noise=0.0, seed=None)[source]

Generate an Aizawa attractor trajectory.

The Aizawa attractor has roughly spherical geometry with a helical escape tube, producing cleaner cross-sections than Lorenz or Rössler when intersected by projections.

Returns: (n_steps, 3) array.

Parameters:
Return type:

ndarray

att.synthetic.generators.kuramoto_oscillators(n_oscillators=2, n_steps=10000, dt=0.01, coupling=0.5, omega_spread=1.0, noise=0.0, seed=None)[source]

Kuramoto coupled phase oscillators.

Simulates the Kuramoto model of phase-coupled oscillators. Useful for testing topological binding on oscillatory (non-chaotic) dynamics.

The classic Kuramoto model: dθ_i/dt = ω_i + (K/N) Σ_j sin(θ_j − θ_i) + η(t)

Parameters:
  • n_oscillators (number of oscillators)

  • n_steps (number of integration steps)

  • dt (integration timestep)

  • coupling (coupling strength K)

  • omega_spread (std of natural frequency distribution (mean=1.0))

  • noise (Gaussian noise amplitude)

  • seed (random seed)

Returns:

  • phases ((n_steps, n_oscillators) array of phase values)

  • signals ((n_steps, n_oscillators) array with signal_i = sin(phase_i))

Return type:

tuple[ndarray, ndarray]