DelayedKuramotoCoupling

experimental.network_dynamics.coupling.DelayedKuramotoCoupling(
    buffer_strategy='roll',
    warn_on_delay_clamp=False,
    history_interpolation=None,
    **kwargs,
)

Phase-difference coupling for Kuramoto oscillators with transmission delays.

Implements the delayed Kuramoto interaction:

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

where \(\tau_{ij}\) are the transmission delays between nodes. This is the standard model used to study delay-induced (de)synchronization, e.g. the two-oscillator multistability of Yeung & Strogatz (1999) and the conduction-speed-dependent synchronization resonances of Petkoski & Jirsa (2019) on brain networks.

Parameters

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

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 = DelayedKuramotoCoupling(source='theta', local='theta', G=1.0)

References

Yeung, M. K. S., & Strogatz, S. H. (1999). Time delay in the Kuramoto model of coupled oscillators. Physical Review Letters, 82(3), 648.

Petkoski, S., & Jirsa, V. K. (2019). Transmission time delays organize the brain network synchronization. Philosophical Transactions of the Royal Society A, 377(2153), 20180132.

Methods

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

post

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

Apply coupling strength to summed delayed phase interactions.

Args: summed_inputs: Summed delayed 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.DelayedKuramotoCoupling.pre(
    delayed_states,
    local_states,
    params,
)

Compute sin(theta_j(t - tau) - theta_i(t)) per edge.

Args: delayed_states: Delayed source phases [n_incoming, *M]. local_states: Current target phases aligned as [n_local, *M]. params: Coupling parameters (not used in pre)

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