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].