FrequencyDomainSpikeDetector#

class neurodent.analysis.FrequencyDomainSpikeDetector[source]#

Bases: object

Static class for frequency-domain spike detection using STFT and SNEO.

This detector implements a multi-stage pipeline: 1. Preprocessing (bandpass + notch filtering) 2. STFT analysis at specific frequency bands 3. SNEO detection with multi-band consensus voting 4. Spike refinement and morphological validation 5. Temporal clustering and deduplication

DEFAULT_PARAMS = {'baseline_ms': 500.0, 'bp': [3.0, 40.0], 'cluster_gap_ms': 80.0, 'freq_slices': [10.0, 20.0], 'k_sigma': 3.0, 'notch': 60.0, 'notch_q': 30.0, 'search_ms': 160.0, 'smooth_len': 5, 'smooth_window': 7, 'sneo_percentile': 99.99, 'vote_k': 2, 'window_s': 0.125}#
static detect_spikes_recording(recording: BaseRecording, detection_params: dict | None = None, chunk_duration_s: float | None = 3600, multiprocess_mode: Literal['dask', 'serial'] = 'serial') list[ndarray][source]#

Detect spikes in a recording using frequency-domain analysis.

When chunk_duration_s is set, the recording is processed in overlapping time chunks so that the entire recording is analysed without loading it all into RAM at once. Spike indices from adjacent chunks are merged with deduplication at chunk boundaries.

Parameters:
  • recording (si.BaseRecording) – The recording to analyze

  • detection_params (dict, optional) – Detection parameters. Uses DEFAULT_PARAMS if None

  • chunk_duration_s (float) – Duration in seconds of each processing chunk. Defaults to 3600 (1 hour). Set to None to load the full recording into memory at once (fastest, highest RAM).

  • multiprocess_mode (Literal["dask", "serial"]) – Processing mode

Returns:

Spike sample indices per channel.

Return type:

list[np.ndarray]