van_rossum_distance

van_rossum_distance#

class braintools.metric.van_rossum_distance(spike_times_1, spike_times_2, tau=1.0, t_max=None)#

Calculate van Rossum distance between two spike trains.

The van Rossum distance measures dissimilarity between spike trains by convolving each with an exponential kernel and computing the Euclidean distance between the resulting continuous functions.

Each spike train is convolved with kernel \(K(t) = \frac{1}{\tau}e^{-t/\tau}H(t)\) where \(H(t)\) is the Heaviside step function. The distance is:

\[D_{vR} = \sqrt{\int_0^{T} [f_1(t) - f_2(t)]^2 dt}\]

where \(f_i(t)\) is the convolved spike train.

Parameters:
  • spike_times_1 (Array | ndarray | bool | number | bool | int | float | complex | Quantity) – First spike train as array of spike times.

  • spike_times_2 (Array | ndarray | bool | number | bool | int | float | complex | Quantity) – Second spike train as array of spike times.

  • tau (float) – Time constant of the exponential kernel. Larger values emphasize longer-term dependencies.

  • t_max (float) – Maximum time to consider. If None, uses maximum spike time + 5*tau.

Returns:

van Rossum distance between the two spike trains.

Return type:

float

Examples

>>> import jax.numpy as jnp
>>> import braintools as braintools
>>> spikes1 = jnp.array([1.0, 3.0, 5.0])
>>> spikes2 = jnp.array([1.2, 3.2, 5.2])
>>> distance = braintools.metric.van_rossum_distance(spikes1, spikes2, tau=0.5)
>>> print(f"van Rossum distance: {distance:.3f}")

References