homogeneous_poisson_exp_interval

homogeneous_poisson_exp_interval(inputs: Tensor, steps: int, step_time: float, *, refrac: float | None = None, compensate: bool = True, generator: Generator | None = None) Tensor[source]

Generates a tensor of spikes using a Poisson distribution.

This method samples randomly from an exponential distribution (the interval between samples in a Poisson point process), adding an additional refractory period and compensating the rate.

Parameters:
  • inputs (torch.Tensor) – expected spike frequencies, \(f\), in \(\text{Hz}\).

  • steps (int) – number of steps for which to generate spikes, \(S\).

  • step_time (float) – length of time between outputs, \(\Delta t\), in \(\text{ms}\).

  • refrac (float | None, optional) – minimum interval between spikes set to the step time if None, in \(\text{ms}\). Defaults to None.

  • compensate (bool, optional) – if the spike generation rate should be compensate for the refractory period. Defaults to True.

  • generator (torch.Generator | None, optional) – pseudorandom number generator for sampling. Defaults to None.

Returns:

the generated spike train, time first.

Return type:

torch.Tensor

Shape

inputs:

\(B \times N_0 \times \cdots\)

return:

\(S \times B \times N_0 \times \cdots\)

Where:
  • \(B\) is the batch size.

  • \(N_0, \ldots\) are the dimensions of the spikes being generated.

  • \(S\) is the number of steps for which to generate spikes, steps.

Caution

If the refractory period is greater than or equal to the expected intervals between spikes, output will be nonsensical. The expected intervals are equal to \(1000 \frac{1}{f} \text{ ms}\).

Important

All elements of inputs must be nonnegative.

Note

refrac at its default still allows for a spike to be generated at every step (since the distance between is \(\Delta t\)). To get behavior where at most every \(n^\text{th}\) step is a spike, the refractory period needs to be set to \(n \Delta t\).