class BasicTest(unittest.TestCase): def setUp(self): bl = generate_block_for_sorting( nb_unit=3, duration=1. * pq.s, noise_ratio=0.2, nb_segment=2, ) rcg = bl.recordingchannelgroups[0] self.sps = SpikeSorter(rcg, initial_state='full_band_signal') def tearDown(self): pass def test_getattr_aliases(self): self.assertIs(self.sps.segs, self.sps.segments) self.assertRaises(AttributeError, getattr, self.sps, 'i_love_my_mother') def test_getattr_runstep(self): self.sps.ButterworthFilter(f_low=200.) self.assertIsInstance(self.sps.history[-1]['methodInstance'], ButterworthFilter) def test_one_standart_pipeline(self): self.sps.ButterworthFilter(f_low=200.) self.assertIsNotNone(self.sps.filtered_sigs) self.sps.MedianThresholdDetection( sign='-', median_thresh=6, ) self.assertIsNotNone(self.sps.spike_index_array) self.sps.AlignWaveformOnDetection(left_sweep=1 * pq.ms, right_sweep=2 * pq.ms) self.assertIsNotNone(self.sps.seg_spike_slices) self.assertIsNotNone(self.sps.spike_waveforms) self.assertIsNotNone(self.sps.left_sweep) self.assertIsNotNone(self.sps.right_sweep) self.sps.PcaFeature(n_components=3) self.assertIsNotNone(self.sps.waveform_features) self.sps.SklearnGaussianMixtureEm(n_cluster=12, n_iter=500) self.assertIsNotNone(self.sps.spike_clusters) self.assertIsNotNone(self.sps.cluster_names) def test_apply_history_to_other(self): sps2 = SpikeSorter(self.sps.rcg, initial_state='full_band_signal') self.sps.apply_history_to_other(sps2)
def test1(): bl = generate_block_for_sorting( nb_unit=6, duration=10. * pq.s, noise_ratio=0.2, nb_segment=2, ) rcg = bl.recordingchannelgroups[0] spikesorter = SpikeSorter(rcg) spikesorter.ButterworthFilter(f_low=200.) spikesorter.RelativeThresholdDetection(sign='-', relative_thresh=4., noise_estimation='MAD', threshold_mode='crossing') #~ spikesorter.RelativeThresholdDetection(sign= '-', relative_thresh = 4.,noise_estimation = 'MAD', threshold_mode = 'peak') spikesorter.AlignWaveformOnDetection(left_sweep=1 * pq.ms, right_sweep=2 * pq.ms, sign='-') #~ spikesorter.AlignWaveformOnPeak(left_sweep = 1*pq.ms , right_sweep = 2*pq.ms, sign = '-', peak_method = 'biggest_amplitude') #~ spikesorter.AlignWaveformOnPeak(left_sweep = 1*pq.ms , right_sweep = 2*pq.ms, sign = '-', peak_method = 'closer') #~ spikesorter.AlignWaveformOnCentralWaveform(left_sweep = 1*pq.ms , right_sweep = 2*pq.ms, ) #~ print spikesorter.spike_waveforms.shape #~ s0 = spikesorter.spike_waveforms.shape[0] #~ wf2 = spikesorter.spike_waveforms.reshape(s0, -1) #~ from matplotlib import pyplot #~ pyplot.plot(wf2[:-10, :].transpose()) #~ pyplot.show() print spikesorter spikesorter.check_display_attributes() from OpenElectrophy.gui.spikesorting import AverageWaveforms, AllWaveforms app = QApplication([]) w1 = AverageWaveforms(spikesorter=spikesorter) w1.refresh() w1.show() w2 = AllWaveforms(spikesorter=spikesorter) w2.refresh() w2.show() app.exec_()
def test1(): bl = generate_block_for_sorting( nb_unit=6, duration=10. * pq.s, noise_ratio=0.2, nb_segment=2, ) rcg = bl.recordingchannelgroups[0] spikesorter = SpikeSorter(rcg) spikesorter.ButterworthFilter(f_low=200.) #~ spikesorter.RelativeThresholdDetection(sign= '-', relative_thresh = 4.,noise_estimation = 'MAD', threshold_mode = 'crossing') spikesorter.RelativeThresholdDetection(sign='-', relative_thresh=4., noise_estimation='MAD', threshold_mode='peak') spikesorter.AlignWaveformOnDetection(left_sweep=1.5 * pq.ms, right_sweep=2.5 * pq.ms, sign='-') spikesorter.PcaFeature(n_components=4) spikesorter.SklearnKMeans(n_cluster=3) #~ spikesorter.AlignWaveformOnPeak(left_sweep = 1*pq.ms , right_sweep = 2*pq.ms, sign = '-', peak_method = 'biggest_amplitude') #~ spikesorter.AlignWaveformOnPeak(left_sweep = 1*pq.ms , right_sweep = 2*pq.ms, sign = '-', peak_method = 'closer') spikesorter.AlignWaveformOnCentralWaveform( left_sweep=1 * pq.ms, right_sweep=2 * pq.ms, shift_estimation_method='taylor order1', #~ shift_estimation_method = 'taylor order2', #~ shift_estimation_method ='optimize', #~ shift_method = 'spline', shift_method='sinc', max_iter=3) step = spikesorter.history[-1] instance = step['methodInstance'] fig = pyplot.figure() instance.plot_iterative_centers(fig, spikesorter) pyplot.show()
duration = 10.*pq.s, noise_ratio = 0.2, nb_segment = 2, ) rcg = bl.recordingchannelgroups[0] spikesorter = SpikeSorter(rcg, initial_state='full_band_signal') # Apply a chain spikesorter.ButterworthFilter( f_low = 200.) spikesorter.MedianThresholdDetection(sign= '-', median_thresh = 6.,) spikesorter.AlignWaveformOnPeak(left_sweep = 1*pq.ms , right_sweep = 2*pq.ms, sign = '-') # display widget interactivively from OpenElectrophy.gui.spikesorting import AverageWaveforms w1 = AverageWaveforms(spikesorter = spikesorter) w1.show() # test another step methods spikesorter.AlignWaveformOnDetection(left_sweep = 1*pq.ms , right_sweep = 2*pq.ms) w1.refresh()