Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
 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)
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
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)
        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))
Ejemplo n.º 5
0
    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)
Ejemplo n.º 6
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)