DelayedDifferenceCoupling

experimental.network_dynamics.coupling.DelayedDifferenceCoupling(
    buffer_strategy='roll',
    **kwargs,
)

Diffusive coupling with transmission delays.

Computes coupling based on the difference between delayed incoming states and current local states, implementing:

\[c_i(t) = G \cdot \sum_{j} w_{ij} (x_j(t - \tau_{ij}) - x_i(t))\]

This combines diffusive coupling with delayed transmission, useful for modeling synchronization dynamics with finite propagation speeds.

Parameters

Name Type Description Default
incoming_states str or list of str State name(s) to collect from connected nodes (required) required
local_states str or list of str State name(s) from current node (required for computing differences) 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)

Examples

>>> coupling = DelayedDifferenceCoupling(incoming_states='x', local_states='x', G=1.0)

Methods

Name Description
post Apply coupling strength to summed delayed differences.
pre Compute difference between delayed and local states (per-edge).

post

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

Apply coupling strength to summed delayed differences.

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

Compute difference between delayed and local states (per-edge).

Args: delayed_states: Delayed states from history in per-edge format [n_incoming, n_nodes_target, n_nodes_source] local_states: Current local states [n_local, n_nodes] params: Coupling parameters (not used in pre)

Returns: State differences [n_incoming, n_nodes, n_nodes] (per-edge)