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).
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.
Links to original implementations¶
From the AllenSDK
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].