Example #1
0
 def test_annotations(self):
     spiketrain = neo.SpikeTrain([1, 2], t_stop=2 * pq.s, units=pq.s)
     kernel = kernels.AlphaKernel(sigma=100 * pq.ms)
     rate = statistics.instantaneous_rate(spiketrain,
                                          sampling_period=10 * pq.ms,
                                          kernel=kernel)
     kernel_annotation = dict(type=type(kernel).__name__,
                              sigma=str(kernel.sigma),
                              invert=kernel.invert)
     self.assertIn('kernel', rate.annotations)
     self.assertEqual(rate.annotations['kernel'], kernel_annotation)
Example #2
0
 def test_regression_288(self):
     np.random.seed(9)
     sampling_period = 200 * pq.ms
     spiketrain = homogeneous_poisson_process(10 * pq.Hz,
                                              t_start=0 * pq.s,
                                              t_stop=10 * pq.s)
     kernel = kernels.AlphaKernel(sigma=5 * pq.ms, invert=True)
     # check that instantaneous_rate "works" for kernels with small sigma
     # without triggering an incomprehensible error
     rate = statistics.instantaneous_rate(spiketrain,
                                          sampling_period=sampling_period,
                                          kernel=kernel)
     self.assertEqual(len(rate), (spiketrain.t_stop /
                                  sampling_period).simplified.item())
Example #3
0
    def test_regression_288(self):
        np.random.seed(9)
        sampling_period = 200 * pq.ms
        spiketrain = homogeneous_poisson_process(10 * pq.Hz,
                                                 t_start=0 * pq.s,
                                                 t_stop=10 * pq.s)
        kernel = kernels.AlphaKernel(sigma=5 * pq.ms, invert=True)
        rate = statistics.instantaneous_rate(spiketrain,
                                             sampling_period=sampling_period,
                                             kernel=kernel)
        self.assertEqual(len(rate), (spiketrain.t_stop /
                                     sampling_period).simplified.item())

        # 3 Hz is not a target - it's meant to test the non-negativity of the
        # result rate; ideally, for smaller sampling rates, the integral
        # should match the num. of spikes in the spiketrain
        self.assertGreater(rate.mean(), 3 * pq.Hz)
Example #4
0
 def test_not_center_kernel(self):
     # issue 107
     t_spike = 1 * pq.s
     st = neo.SpikeTrain([t_spike],
                         t_start=0 * pq.s,
                         t_stop=2 * pq.s,
                         units=pq.s)
     kernel = kernels.AlphaKernel(200 * pq.ms)
     fs = 0.1 * pq.ms
     rate = statistics.instantaneous_rate(st,
                                          sampling_period=fs,
                                          kernel=kernel,
                                          center_kernel=False)
     rate_nonzero_index = np.nonzero(rate > 1e-6)[0]
     # where the mass is concentrated
     rate_mass = rate.times.rescale(t_spike.units)[rate_nonzero_index]
     all_after_response_onset = (rate_mass >= t_spike).all()
     self.assertTrue(all_after_response_onset)
Example #5
0
    def test_wrong_input(self):
        self.assertRaises(TypeError, stds.victor_purpura_distance,
                          [self.array1, self.array2], self.q3)
        self.assertRaises(TypeError, stds.victor_purpura_distance,
                          [self.qarray1, self.qarray2], self.q3)
        self.assertRaises(TypeError, stds.victor_purpura_distance,
                          [self.qarray1, self.qarray2], 5.0 * ms)

        self.assertRaises(TypeError,
                          stds.victor_purpura_distance,
                          [self.array1, self.array2],
                          self.q3,
                          algorithm='intuitive')
        self.assertRaises(TypeError,
                          stds.victor_purpura_distance,
                          [self.qarray1, self.qarray2],
                          self.q3,
                          algorithm='intuitive')
        self.assertRaises(TypeError,
                          stds.victor_purpura_distance,
                          [self.qarray1, self.qarray2],
                          5.0 * ms,
                          algorithm='intuitive')

        self.assertRaises(TypeError, stds.van_rossum_distance,
                          [self.array1, self.array2], self.tau3)
        self.assertRaises(TypeError, stds.van_rossum_distance,
                          [self.qarray1, self.qarray2], self.tau3)
        self.assertRaises(TypeError, stds.van_rossum_distance,
                          [self.qarray1, self.qarray2], 5.0 * Hz)

        self.assertRaises(TypeError, stds.victor_purpura_distance,
                          [self.st11, self.st13], self.tau2)
        self.assertRaises(TypeError, stds.victor_purpura_distance,
                          [self.st11, self.st13], 5.0)
        self.assertRaises(TypeError,
                          stds.victor_purpura_distance, [self.st11, self.st13],
                          self.tau2,
                          algorithm='intuitive')
        self.assertRaises(TypeError,
                          stds.victor_purpura_distance, [self.st11, self.st13],
                          5.0,
                          algorithm='intuitive')
        self.assertRaises(TypeError, stds.van_rossum_distance,
                          [self.st11, self.st13], self.q4)
        self.assertRaises(TypeError, stds.van_rossum_distance,
                          [self.st11, self.st13], 5.0)

        self.assertRaises(NotImplementedError,
                          stds.victor_purpura_distance, [self.st01, self.st02],
                          self.q3,
                          kernel=kernels.Kernel(2.0 / self.q3))
        self.assertRaises(NotImplementedError,
                          stds.victor_purpura_distance, [self.st01, self.st02],
                          self.q3,
                          kernel=kernels.SymmetricKernel(2.0 / self.q3))
        self.assertEqual(
            stds.victor_purpura_distance(
                [self.st01, self.st02],
                self.q1,
                kernel=kernels.TriangularKernel(
                    2.0 / (np.sqrt(6.0) * self.q2)))[0, 1],
            stds.victor_purpura_distance(
                [self.st01, self.st02],
                self.q3,
                kernel=kernels.TriangularKernel(
                    2.0 / (np.sqrt(6.0) * self.q2)))[0, 1])
        self.assertEqual(
            stds.victor_purpura_distance(
                [self.st01, self.st02],
                kernel=kernels.TriangularKernel(
                    2.0 / (np.sqrt(6.0) * self.q2)))[0, 1], 1.0)
        self.assertNotEqual(
            stds.victor_purpura_distance(
                [self.st01, self.st02],
                kernel=kernels.AlphaKernel(2.0 / (np.sqrt(6.0) * self.q2)))[0,
                                                                            1],
            1.0)

        self.assertRaises(NameError,
                          stds.victor_purpura_distance, [self.st11, self.st13],
                          self.q2,
                          algorithm='slow')
Example #6
0
 def test_alpha_kernel_extreme(self):
     alp_kernel = kernels.AlphaKernel(sigma=0.3 * pq.ms)
     quantile = alp_kernel.boundary_enclosing_area_fraction(0.9999999)
     self.assertAlmostEqual(quantile.magnitude, 4.055922083048838)
Example #7
0
 def test_error_alpha_kernel(self):
     alp_kernel = kernels.AlphaKernel(sigma=0.3*pq.ms)
     self.assertRaises(ValueError,
         alp_kernel.boundary_enclosing_area_fraction, 0.9999999)