KuramotoCoupling

experimental.network_dynamics.coupling.KuramotoCoupling(
    source=None,
    local=None,
    *,
    incoming_states=None,
    local_states=None,
    **kwargs,
)

Phase-difference coupling for Kuramoto oscillators (no delay).

Implements the classic Kuramoto interaction:

\[c_i = G \cdot \sum_{j} w_{ij} \sin(\theta_j - \theta_i)\]

Parameters

Name Type Description Default
source str or list of str State name(s) to collect from connected nodes (typically 'theta') None
local str or list of str State name(s) from current node (required for the phase difference) None

Attributes

Name Type Description
N_OUTPUT_STATES int Number of output coupling states: 1
DEFAULT_PARAMS Bunch Default parameters: G=1.0 (global coupling strength)

Notes

G is not normalized by network size or degree; scale it (e.g. G/N) to match a particular Kuramoto convention.

Examples

>>> coupling = KuramotoCoupling(source='theta', local='theta', G=1.0)

Methods

Name Description
post Apply coupling strength to summed phase interactions.
pre Compute sin(theta_j - theta_i) per edge.

post

experimental.network_dynamics.coupling.KuramotoCoupling.post(
    summed_inputs,
    local_states,
    params,
)

Apply coupling strength to summed phase interactions.

Args: summed_inputs: Summed sin(theta_j - theta_i) terms [n_inputs, n_nodes] local_states: Local states (not used) params: Bunch with G

Returns: Scaled coupling [n_inputs, n_nodes]

pre

experimental.network_dynamics.coupling.KuramotoCoupling.pre(
    incoming_states,
    local_states,
    params,
)

Compute sin(theta_j - theta_i) per edge.

Args: incoming_states: Source phases [n_incoming, *M]. local_states: Target phases aligned as [n_local, *M]. params: Coupling parameters (not used in pre)

Returns: Phase-difference sine [n_output, *M].