Source code for core.features.isi

"""Interspike-interval features.

Model-agnostic and stateless: the TS3 ISI baseline embeds units with it, and LOLCAT
uses it as its input feature.
"""

import numpy as np


[docs] def compute_isi_histogram( spike_times: np.ndarray, n_bins: int, t_min: float, t_max: float, log_bins: bool = True, ) -> np.ndarray: """ISI histogram, L1-normalized to sum=1.""" if len(spike_times) < 2: return np.zeros(n_bins, dtype=np.float32) isis = np.diff(spike_times) if log_bins: bins = np.geomspace(t_min, t_max, n_bins + 1) else: bins = np.linspace(t_min, t_max, n_bins + 1) hist, _ = np.histogram(isis, bins=bins) total = hist.sum() return (hist / total).astype(np.float32) if total > 0 else hist.astype(np.float32)