Signal-to-noise ratio (snr)

Calculation

  • \(A_{\mu s}\) : maximum amplitude of the mean spike waverform (on the best channel).

  • \(\sigma_b\) : standard deviation of the background noise on the same channel (usually computed via the median absolute deviation).

\[\textrm{SNR} = \frac{A_{\mu s}}{\sigma_b}\]

Expectation and use

A high SNR unit has a signal which is greater in amplitude than the background noise and is likely to correspond to a neuron [Jackson], [Lemon]. A low SNR value (close to 0) suggests that the unit is highly contaminated by noise (type I error).

Example code

Without SpikeInterface:

import numpy as np
import scipy.stats

data        # The data from your recording in shape (channel, time)
mean_wvf    # The mean waveform of your unit in shape (channel, time)
# If your data is filtered, then both data and mean_wvf need to be filtered the same.

best_channel = np.argmax(np.max(np.abs(mean_wvf), axis=1))
noise_level = scipy.stats.median_abs_deviation(data[best_channel], scale="normal")
amplitude = np.max(np.abs(mean_wvf))

SNR = amplitude / noise_level

With SpikeInterface:

import spikeinterface.qualitymetrics as sqm

# Combining sorting and recording into a sorting_analzyer
SNRs = sqm.compute_snrs(sorting_analzyer=sorting_analzyer)
# SNRs is a dict containing the unit IDs as keys and their SNRs as values.

References

spikeinterface.qualitymetrics.misc_metrics.compute_snrs(sorting_analyzer, peak_sign: str = 'neg', peak_mode: str = 'extremum', unit_ids=None)

Compute signal to noise ratio.

Parameters
sorting_analyzer: SortingAnalyzer

A SortingAnalyzer object

peak_sign“neg” | “pos” | “both”, default: “neg”

The sign of the template to compute best channels.

peak_mode: “extremum” | “at_index”, default: “extremum”

How to compute the amplitude. Extremum takes the maxima/minima At_index takes the value at t=sorting_analyzer.nbefore

unit_idslist or None

The list of unit ids to compute the SNR. If None, all units are used.

Returns
snrsdict

Computed signal to noise ratio for each unit.

Literature

Presented by [Lemon] and useful initial discussion by [Jackson].