def test_surr_method(self): st = neo.SpikeTrain([90, 150, 180, 350] * pq.ms, t_stop=500 * pq.ms) nr_surr = 2 surrs = surr.surrogates(st, dt=3 * pq.ms, n=nr_surr, surr_method='shuffle_isis', edges=False) self.assertRaises(ValueError, surr.surrogates, st, n=1, surr_method='spike_shifting', dt=None, decimals=None, edges=True) self.assertTrue(len(surrs) == nr_surr) nr_surr2 = 4 surrs2 = surr.surrogates(st, dt=5 * pq.ms, n=nr_surr2, surr_method='dither_spike_train', edges=True) for surrog in surrs: self.assertTrue(isinstance(surrs[0], neo.SpikeTrain)) self.assertEqual(surrog.units, st.units) self.assertEqual(surrog.t_start, st.t_start) self.assertEqual(surrog.t_stop, st.t_stop) self.assertEqual(len(surrog), len(st)) self.assertTrue(len(surrs) == nr_surr) for surrog in surrs2: self.assertTrue(isinstance(surrs2[0], neo.SpikeTrain)) self.assertEqual(surrog.units, st.units) self.assertEqual(surrog.t_start, st.t_start) self.assertEqual(surrog.t_stop, st.t_stop) self.assertEqual(len(surrog), len(st)) self.assertTrue(len(surrs2) == nr_surr2)
def test_joint_isi_spikes_at_border(self): surr_method = 'joint_isi_dithering' n_surr = 30 dither = 15 * pq.ms spiketrain = neo.SpikeTrain( [4., 28., 45., 51., 83., 87., 96., 111., 126., 131., 138., 150., 209., 232., 253., 275., 279., 303., 320., 371., 396., 401., 429., 447., 479., 511., 535., 549., 581., 585., 605., 607., 626., 630., 644., 714., 832., 835., 853., 858., 878., 905., 909., 932., 950., 961., 999., 1000.], t_start=0.*pq.ms, t_stop=1000.*pq.ms, units=pq.ms) surr.surrogates( spiketrain, n_surrogates=n_surr, method=surr_method, dt=dither)
def test_joint_isi_with_wrongly_ordered_spikes(self): surr_method = 'joint_isi_dithering' n_surr = 30 dither = 15 * pq.ms spiketrain = neo.SpikeTrain( [39.65696411, 98.93868274, 120.2417674, 134.70971166, 154.20788924, 160.29077989, 179.19884034, 212.86773029, 247.59488061, 273.04095041, 297.56437605, 344.99204215, 418.55696486, 460.54298334, 482.82299125, 524.236052, 566.38966742, 597.87562722, 651.26965293, 692.39802855, 740.90285815, 849.45874695, 974.57724848, 8.79247605], t_start=0.*pq.ms, t_stop=1000.*pq.ms, units=pq.ms) surr.surrogates(spiketrain, n_surrogates=n_surr, method=surr_method, dt=dither)
def test_joint_isi_dithering_format(self): rate = 100. * pq.Hz t_stop = 1. * pq.s spiketrain = stg.homogeneous_poisson_process(rate, t_stop=t_stop) n_surrogates = 2 dither = 10 * pq.ms # Test fast version joint_isi_instance = surr.JointISI(spiketrain, dither=dither) surrogate_trains = joint_isi_instance.dithering( n_surrogates=n_surrogates) self.assertIsInstance(surrogate_trains, list) self.assertEqual(len(surrogate_trains), n_surrogates) self.assertEqual(joint_isi_instance.method, 'fast') for surrogate_train in surrogate_trains: self.assertIsInstance(surrogate_train, neo.SpikeTrain) self.assertEqual(surrogate_train.units, spiketrain.units) self.assertEqual(surrogate_train.t_start, spiketrain.t_start) self.assertEqual(surrogate_train.t_stop, spiketrain.t_stop) self.assertEqual(len(surrogate_train), len(spiketrain)) # Test window_version joint_isi_instance = surr.JointISI(spiketrain, method='window', dither=2 * dither, num_bins=50) surrogate_trains = joint_isi_instance.dithering( n_surrogates=n_surrogates) self.assertIsInstance(surrogate_trains, list) self.assertEqual(len(surrogate_trains), n_surrogates) self.assertEqual(joint_isi_instance.method, 'window') for surrogate_train in surrogate_trains: self.assertIsInstance(surrogate_train, neo.SpikeTrain) self.assertEqual(surrogate_train.units, spiketrain.units) self.assertEqual(surrogate_train.t_start, spiketrain.t_start) self.assertEqual(surrogate_train.t_stop, spiketrain.t_stop) self.assertEqual(len(surrogate_train), len(spiketrain)) # Test surrogate methods wrapper surrogate_trains = surr.surrogates(spiketrain, n=n_surrogates, surr_method='joint_isi_dithering') self.assertIsInstance(surrogate_trains, list) self.assertEqual(len(surrogate_trains), n_surrogates) for surrogate_train in surrogate_trains: self.assertIsInstance(surrogate_train, neo.SpikeTrain) self.assertEqual(surrogate_train.units, spiketrain.units) self.assertEqual(surrogate_train.t_start, spiketrain.t_start) self.assertEqual(surrogate_train.t_stop, spiketrain.t_stop) self.assertEqual(len(surrogate_train), len(spiketrain))
def test_surr_method(self): surr_methods = \ ('dither_spike_train', 'dither_spikes', 'jitter_spikes', 'randomise_spikes', 'shuffle_isis', 'joint_isi_dithering', 'dither_spikes_with_refractory_period', 'trial_shifting', 'bin_shuffling', 'isi_dithering') surr_method_kwargs = \ {'dither_spikes': {}, 'dither_spikes_with_refractory_period': {'refractory_period': 3*pq.ms}, 'randomise_spikes': {}, 'shuffle_isis': {}, 'dither_spike_train': {}, 'jitter_spikes': {}, 'bin_shuffling': {'bin_size': 3*pq.ms}, 'joint_isi_dithering': {}, 'isi_dithering': {}, 'trial_shifting': {'trial_length': 200*pq.ms, 'trial_separation': 50*pq.ms}} dt = 15 * pq.ms spiketrain = neo.SpikeTrain( [90, 150, 180, 350] * pq.ms, t_stop=500 * pq.ms) n_surrogates = 3 for method in surr_methods: surrogates = surr.surrogates( spiketrain, dt=dt, n_surrogates=n_surrogates, method=method, **surr_method_kwargs[method] ) self.assertTrue(len(surrogates) == n_surrogates) for surrogate_train in surrogates: self.assertTrue( isinstance(surrogates[0], neo.SpikeTrain)) self.assertEqual(surrogate_train.units, spiketrain.units) self.assertEqual(surrogate_train.t_start, spiketrain.t_start) self.assertEqual(surrogate_train.t_stop, spiketrain.t_stop) self.assertEqual(len(surrogate_train), len(spiketrain)) self.assertTrue(len(surrogates) == n_surrogates) self.assertRaises(ValueError, surr.surrogates, spiketrain, n_surrogates=1, method='spike_shifting', dt=None, decimals=None, edges=True) self.assertRaises(ValueError, surr.surrogates, spiketrain, method='dither_spikes', dt=None) self.assertRaises(TypeError, surr.surrogates, spiketrain.magnitude, method='dither_spikes', dt=10*pq.ms)
def test_joint_isi_dithering_format(self): rate = 100. * pq.Hz t_stop = 1. * pq.s spiketrain = stg.homogeneous_poisson_process(rate, t_stop=t_stop) n_surrogates = 2 dither = 10 * pq.ms # Test fast version joint_isi_instance = surr.JointISI(spiketrain, dither=dither, method='fast') surrogate_trains = joint_isi_instance.dithering( n_surrogates=n_surrogates) self.assertIsInstance(surrogate_trains, list) self.assertEqual(len(surrogate_trains), n_surrogates) self.assertEqual(joint_isi_instance.method, 'fast') for surrogate_train in surrogate_trains: self.assertIsInstance(surrogate_train, neo.SpikeTrain) self.assertEqual(surrogate_train.units, spiketrain.units) self.assertEqual(surrogate_train.t_start, spiketrain.t_start) self.assertEqual(surrogate_train.t_stop, spiketrain.t_stop) self.assertEqual(len(surrogate_train), len(spiketrain)) # Test window_version joint_isi_instance = surr.JointISI(spiketrain, method='window', dither=2 * dither, n_bins=50) surrogate_trains = joint_isi_instance.dithering( n_surrogates=n_surrogates) self.assertIsInstance(surrogate_trains, list) self.assertEqual(len(surrogate_trains), n_surrogates) self.assertEqual(joint_isi_instance.method, 'window') for surrogate_train in surrogate_trains: self.assertIsInstance(surrogate_train, neo.SpikeTrain) self.assertEqual(surrogate_train.units, spiketrain.units) self.assertEqual(surrogate_train.t_start, spiketrain.t_start) self.assertEqual(surrogate_train.t_stop, spiketrain.t_stop) self.assertEqual(len(surrogate_train), len(spiketrain)) # Test isi_dithering joint_isi_instance = surr.JointISI(spiketrain, method='window', dither=2 * dither, n_bins=50, isi_dithering=True, use_sqrt=True, cutoff=False) surrogate_trains = joint_isi_instance.dithering( n_surrogates=n_surrogates) self.assertIsInstance(surrogate_trains, list) self.assertEqual(len(surrogate_trains), n_surrogates) self.assertEqual(joint_isi_instance.method, 'window') for surrogate_train in surrogate_trains: self.assertIsInstance(surrogate_train, neo.SpikeTrain) self.assertEqual(surrogate_train.units, spiketrain.units) self.assertEqual(surrogate_train.t_start, spiketrain.t_start) self.assertEqual(surrogate_train.t_stop, spiketrain.t_stop) self.assertEqual(len(surrogate_train), len(spiketrain)) # Test surrogate methods wrapper surrogate_trains = surr.surrogates(spiketrain, dt=15 * pq.ms, n_surrogates=n_surrogates, method='joint_isi_dithering') self.assertIsInstance(surrogate_trains, list) self.assertEqual(len(surrogate_trains), n_surrogates) for surrogate_train in surrogate_trains: self.assertIsInstance(surrogate_train, neo.SpikeTrain) self.assertEqual(surrogate_train.units, spiketrain.units) self.assertEqual(surrogate_train.t_start, spiketrain.t_start) self.assertEqual(surrogate_train.t_stop, spiketrain.t_stop) self.assertEqual(len(surrogate_train), len(spiketrain)) with self.assertRaises(ValueError): joint_isi_instance = surr.JointISI(spiketrain, method='wrong method', dither=2 * dither, n_bins=50)