def __init__( self, traces=None, sample_rate=None, spike_samples=None, masks=None, mask_threshold=None, filter_order=None, n_samples_waveforms=None, ): # Traces. if traces is not None: self.traces = traces self.n_samples_trace, self.n_channels = traces.shape else: self._traces = None self.n_samples_trace = self.n_channels = 0 assert spike_samples is not None self._spike_samples = spike_samples self.n_spikes = len(spike_samples) self._masks = masks if masks is not None: assert self._masks.shape == (self.n_spikes, self.n_channels) self._mask_threshold = mask_threshold # Define filter. if filter_order: filter_margin = filter_order * 3 b_filter = bandpass_filter( rate=sample_rate, low=500., high=sample_rate * .475, order=filter_order, ) self._filter = lambda x, axis=0: apply_filter( x, b_filter, axis=axis) else: filter_margin = 0 self._filter = lambda x, axis=0: x # Number of samples to return, can be an int or a # tuple (before, after). assert n_samples_waveforms is not None self.n_samples_before_after = _before_after(n_samples_waveforms) self.n_samples_waveforms = sum(self.n_samples_before_after) # Number of additional samples to use for filtering. self._filter_margin = _before_after(filter_margin) # Number of samples in the extracted raw data chunk. self._n_samples_extract = (self.n_samples_waveforms + sum(self._filter_margin)) self.dtype = np.float32 self.shape = (self.n_spikes, self._n_samples_extract, self.n_channels) self.ndim = 3
def __init__(self, traces=None, sample_rate=None, spike_samples=None, filter_order=None, n_samples_waveforms=None, ): # Traces. if traces is not None: self.traces = traces self.n_samples_trace, self.n_channels = traces.shape else: self._traces = None self.n_samples_trace = self.n_channels = 0 assert spike_samples is not None self._spike_samples = spike_samples self.n_spikes = len(spike_samples) # Define filter. if filter_order: filter_margin = filter_order * 3 b_filter = bandpass_filter(rate=sample_rate, low=500., high=sample_rate * .475, order=filter_order, ) self._filter = lambda x, axis=0: apply_filter(x, b_filter, axis=axis) else: filter_margin = 0 self._filter = lambda x, axis=0: x # Number of samples to return, can be an int or a # tuple (before, after). assert n_samples_waveforms is not None self.n_samples_before_after = _before_after(n_samples_waveforms) self.n_samples_waveforms = sum(self.n_samples_before_after) # Number of additional samples to use for filtering. self._filter_margin = _before_after(filter_margin) # Number of samples in the extracted raw data chunk. self._n_samples_extract = (self.n_samples_waveforms + sum(self._filter_margin)) self.dtype = np.float32 self.shape = (self.n_spikes, self._n_samples_extract, self.n_channels) self.ndim = 3
def the_filter(x, axis=0): return apply_filter(x, b_filter, axis=axis)
def filter(x): return apply_filter(x, b_filter)