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_joint_isi_dithering_output(self): process = stg.StationaryPoissonProcess( rate=100. * pq.Hz, refractory_period=3 * pq.ms, t_stop=0.1 * pq.s) spiketrain = process.generate_spiketrain() surrogate_train = surr.JointISI(spiketrain).dithering()[0] ground_truth = [0.0060744, 0.01886591, 0.02732847, 0.03683888, 0.04569622, 0.05196334, 0.05899197, 0.07855664] assert_array_almost_equal(surrogate_train.magnitude, ground_truth)
def test_joint_isi_dithering_output(self): spiketrain = stg.homogeneous_poisson_process( rate=100. * pq.Hz, refractory_period=3 * pq.ms, t_stop=0.1 * pq.s) surrogate_train = surr.JointISI(spiketrain).dithering()[0] ground_truth = [0.005571, 0.018363, 0.026825, 0.036336, 0.045193, 0.05146, 0.058489, 0.078053] assert_array_almost_equal(surrogate_train.magnitude, ground_truth)
def test_joint_isi_dithering_empty_train(self): spiketrain = neo.SpikeTrain([] * pq.ms, t_stop=500 * pq.ms) surrogate_train = surr.JointISI(spiketrain).dithering()[0] self.assertEqual(len(surrogate_train), 0)
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)