def find_spikes(data, spike_thresh):
data -= np.median(np.median(np.median(data, axis=0), axis=0), axis=0)
slice_mean = np.median(np.median(data, axis=0), axis=0)
t_z = _robust_zscore(slice_mean)
spikes = np.abs(t_z) > spike_thresh
spike_inds = np.transpose(spikes.nonzero())
# mask out the spikes and recompute z-scores using variance uncontaminated with spikes.
# This will catch smaller spikes that may have been swamped by big
# ones.
data.mask[:, :, spike_inds[:, 0], spike_inds[:, 1]] = True
slice_mean2 = np.median(np.median(data, axis=0), axis=0)
t_z = _robust_zscore(slice_mean2)
spikes = np.logical_or(spikes, np.abs(t_z) > spike_thresh)
spike_inds = [tuple(i) for i in np.transpose(spikes.nonzero())]
return spike_inds, t_z
评论列表
文章目录