def test_exdir_extractors(self): path1 = self.test_dir + '/raw.exdir' se.ExdirRecordingExtractor.write_recording(self.RX, path1) RX_exdir = se.ExdirRecordingExtractor(path1) self._check_recording_return_types(RX_exdir) self._check_recordings_equal(self.RX, RX_exdir) path2 = self.test_dir + '/firings.exdir' se.ExdirSortingExtractor.write_sorting(self.SX, path2, self.RX) SX_exdir = se.ExdirSortingExtractor(path2) self._check_sorting_return_types(SX_exdir) self._check_sortings_equal(self.SX, SX_exdir)
def load_spiketrains(data_path, channel_group=None, load_waveforms=False, sample_rate=None, remove_group=None, t_start=0 * pq.s): ''' Parameters ---------- data_path channel_group load_waveforms remove_label Returns ------- ''' if sample_rate is None: sample_rate = 30000 * pq.Hz sorting = se.ExdirSortingExtractor(data_path, sample_rate=sample_rate.magnitude, channel_group=channel_group, load_waveforms=load_waveforms) sptr = [] # build neo pbjects for u in sorting.get_unit_ids(): times = sorting.get_unit_spike_train(u) / sample_rate t_stop = np.max(times) if load_waveforms and 'waveforms' in sorting.get_unit_spike_feature_names( u): wf = sorting.get_unit_spike_features(u, 'waveforms') else: wf = None times = times - t_start times = times[np.where(times > 0)] if wf is not None: wf = wf[np.where(times > 0)] st = neo.SpikeTrain(times=times, t_stop=t_stop, waveforms=wf) for p in sorting.get_unit_property_names(u): st.annotations.update({p: sorting.get_unit_property(u, p)}) sptr.append(st) sptr_rm = [] if remove_group is not None: for st in sptr: if st.annotations['cluster_group'] != remove_group: sptr_rm.append(st) else: sptr_rm = sptr return sptr_rm
def load_spiketrains(data_path, channel_group=None, load_waveforms=False, lim=None): ''' Parameters ---------- data_path channel_group load_waveforms remove_label Returns ------- ''' sample_rate = get_sample_rate(data_path) sorting = se.ExdirSortingExtractor(data_path, sampling_frequency=sample_rate, channel_group=channel_group, load_waveforms=load_waveforms) sptr = [] # build neo pbjects for u in sorting.get_unit_ids(): times = sorting.get_unit_spike_train(u) / sample_rate if lim is None: t_stop = get_duration(data_path) t_start = 0 * pq.s else: t_start = pq.Quantity(lim[0], 's') t_stop = pq.Quantity(lim[1], 's') mask = (times >= t_start) & (times <= t_stop) times = times[mask] if load_waveforms and 'waveforms' in sorting.get_unit_spike_feature_names( u): wf = sorting.get_unit_spike_features(u, 'waveforms') wf = wf[mask] * pq.uV else: wf = None st = neo.SpikeTrain(times=times, t_stop=t_stop, waveforms=wf, sampling_rate=sample_rate) for p in sorting.get_unit_property_names(u): st.annotations.update({p: sorting.get_unit_property(u, p)}) sptr.append(st) return sptr
def load_spiketrains(data_path, channel_group=None, load_waveforms=False, t_start=0 * pq.s): ''' Parameters ---------- data_path channel_group load_waveforms remove_label Returns ------- ''' sample_rate = get_sample_rate(data_path) sorting = se.ExdirSortingExtractor(data_path, sample_rate=sample_rate.magnitude, channel_group=channel_group, load_waveforms=load_waveforms) sptr = [] # build neo pbjects for u in sorting.get_unit_ids(): times = sorting.get_unit_spike_train(u) / sample_rate t_stop = np.max(times) if load_waveforms and 'waveforms' in sorting.get_unit_spike_feature_names( u): wf = sorting.get_unit_spike_features(u, 'waveforms') else: wf = None times = times - t_start times = times[np.where(times > 0)] wf = wf[np.where(times > 0)] st = neo.SpikeTrain(times=times, t_stop=t_stop, waveforms=wf, sampling_rate=sample_rate) for p in sorting.get_unit_property_names(u): st.annotations.update({p: sorting.get_unit_property(u, p)}) sptr.append(st) return sptr
def load_unit_annotations(data_path, channel_group): ''' Parameters ---------- data_path channel_group Returns ------- ''' sample_rate = get_sample_rate(data_path) sorting = se.ExdirSortingExtractor(data_path, sampling_frequency=sample_rate, channel_group=channel_group, load_waveforms=False) units = [] for u in sorting.get_unit_ids(): annotations = {} for p in sorting.get_unit_property_names(u): annotations.update({p: sorting.get_unit_property(u, p)}) units.append(annotations) return units