def setUp(self): folder = os.path.dirname(os.path.realpath(__file__)) self.time_original = 8 spiketrain = np.array([1, 3, 5, 6]) self.values = [spiketrain, spiketrain, spiketrain, np.array([1])] self.features = NetworkFeatures()
def test_preprocess(self): self.features = NetworkFeatures() time, spiketrains = self.features.preprocess(self.time_original, self.values) self.assertEqual(time, self.time_original) self.assertIsInstance(spiketrains[0], neo.core.SpikeTrain) self.assertIsInstance(spiketrains[1], neo.core.SpikeTrain) self.assertIsInstance(spiketrains[2], neo.core.SpikeTrain) self.assertIsInstance(spiketrains[3], neo.core.SpikeTrain) self.assertTrue(np.array_equal(spiketrains[0], self.values[0])) self.assertTrue(np.array_equal(spiketrains[1], self.values[1])) self.assertTrue(np.array_equal(spiketrains[2], self.values[2])) self.assertTrue(np.array_equal(spiketrains[3], self.values[3])) self.assertEqual(spiketrains[0].t_stop, self.time_original)
def setUp(self): folder = os.path.dirname(os.path.realpath(__file__)) self.time_original = 8 spiketrain = np.array([1, 3, 5, 6]) self.values = [spiketrain, spiketrain, spiketrain, np.array([1])] self.implemented_features = [ "cv", "mean_cv", "binned_isi", "mean_isi", "local_variation", "mean_firing_rate", "fanofactor", "instantaneous_rate", "van_rossum_dist", "victor_purpura_dist", "corrcoef", "covariance", "mean_local_variation" ] self.features = NetworkFeatures(instantaneous_rate_nr_samples=2) self.time, self.spiketrains = self.features.preprocess( self.time_original, self.values)
def test_init(self): def feature(time, values): return "t", "U" features = NetworkFeatures(new_features=feature, features_to_run=None, adaptive=["cv"], labels={"cv": ["test"]}, instantaneous_rate_nr_samples=-1., isi_bin_size=-1, corrcoef_bin_size=-1, covariance_bin_size=-1, units=pq.ms) self.assertIsInstance(features, NetworkFeatures) self.assertEqual(features.features_to_run, []) self.assertEqual(features.adaptive, ["cv"]) self.assertEqual(features.instantaneous_rate_nr_samples, -1) self.assertEqual(features.isi_bin_size, -1) self.assertEqual(features.corrcoef_bin_size, -1) self.assertEqual(features.covariance_bin_size, -1) self.assertEqual(features.units, pq.ms) self.assertEqual(set(features.implemented_features()), set(["feature"] + self.implemented_features))
def test_initNone(self): self.features = NetworkFeatures() self.assertIsInstance(self.features, NetworkFeatures)
class TestNetworkFeatures(unittest.TestCase): def setUp(self): folder = os.path.dirname(os.path.realpath(__file__)) self.time_original = 8 spiketrain = np.array([1, 3, 5, 6]) self.values = [spiketrain, spiketrain, spiketrain, np.array([1])] self.implemented_features = [ "cv", "mean_cv", "binned_isi", "mean_isi", "local_variation", "mean_firing_rate", "fanofactor", "instantaneous_rate", "van_rossum_dist", "victor_purpura_dist", "corrcoef", "covariance", "mean_local_variation" ] self.features = NetworkFeatures(instantaneous_rate_nr_samples=2) self.time, self.spiketrains = self.features.preprocess( self.time_original, self.values) def test_initNone(self): self.features = NetworkFeatures() self.assertIsInstance(self.features, NetworkFeatures) def test_init(self): def feature(time, values): return "t", "U" features = NetworkFeatures(new_features=feature, features_to_run=None, adaptive=["cv"], labels={"cv": ["test"]}, instantaneous_rate_nr_samples=-1., isi_bin_size=-1, corrcoef_bin_size=-1, covariance_bin_size=-1, units=pq.ms) self.assertIsInstance(features, NetworkFeatures) self.assertEqual(features.features_to_run, []) self.assertEqual(features.adaptive, ["cv"]) self.assertEqual(features.instantaneous_rate_nr_samples, -1) self.assertEqual(features.isi_bin_size, -1) self.assertEqual(features.corrcoef_bin_size, -1) self.assertEqual(features.covariance_bin_size, -1) self.assertEqual(features.units, pq.ms) self.assertEqual(set(features.implemented_features()), set(["feature"] + self.implemented_features)) def test_preprocess(self): self.features = NetworkFeatures() time, spiketrains = self.features.preprocess(self.time_original, self.values) self.assertEqual(time, self.time_original) self.assertIsInstance(spiketrains[0], neo.core.SpikeTrain) self.assertIsInstance(spiketrains[1], neo.core.SpikeTrain) self.assertIsInstance(spiketrains[2], neo.core.SpikeTrain) self.assertIsInstance(spiketrains[3], neo.core.SpikeTrain) self.assertTrue(np.array_equal(spiketrains[0], self.values[0])) self.assertTrue(np.array_equal(spiketrains[1], self.values[1])) self.assertTrue(np.array_equal(spiketrains[2], self.values[2])) self.assertTrue(np.array_equal(spiketrains[3], self.values[3])) self.assertEqual(spiketrains[0].t_stop, self.time_original) def test_cv(self): time, values = self.features.cv(self.time, self.spiketrains) self.assertIsNone(time) self.assertTrue( np.array_equal([ 0.51207638319124049, 0.51207638319124049, 0.51207638319124049, 0 ], values)) def test_mean_cv(self): time, values = self.features.mean_cv(self.time, self.spiketrains) self.assertIsNone(time) self.assertEqual(0.38405728739343037, values) def test_binned_isi(self): time, values = self.features.binned_isi(self.time, self.spiketrains) centers = np.arange(0, self.time_original + 1)[1:] - 0.5 self.assertTrue(np.array_equal(centers, time)) self.assertTrue( np.array_equal( values, [[0, 1, 2, 0, 0, 0, 0, 0], [0, 1, 2, 0, 0, 0, 0, 0], [0, 1, 2, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0]])) def test_mean_isi(self): time, values = self.features.mean_isi(self.time, self.spiketrains) self.assertIsNone(time) self.assertEqual(1.66666666666666667, values) def test_lv(self): time, values = self.features.local_variation(self.time, self.spiketrains) self.assertIsNone(time) self.assertTrue( np.array_equal([ 0.16666666666666666, 0.16666666666666666, 0.16666666666666666, None ], values)) def test_mean_lv(self): time, values = self.features.mean_local_variation( self.time, self.spiketrains) self.assertIsNone(time) mean = np.mean( [0.16666666666666666, 0.16666666666666666, 0.16666666666666666]) self.assertEqual(mean, values) def test_mean_firing_rate(self): time, values = self.features.mean_firing_rate(self.time, self.spiketrains) self.assertIsNone(time) self.assertTrue(np.array_equal([500, 500, 500, 125], values)) def test_instantaneous_rate(self): time, values = self.features.instantaneous_rate( self.time, self.spiketrains) rates = [938.762478, 938.7583322] correct_t = np.linspace(0, 8, 3)[:-1] self.assertTrue(np.all(np.isclose(values[0], rates))) self.assertTrue(np.all(np.isclose(values[1], rates))) self.assertTrue(np.all(np.isclose(values[2], rates))) self.assertIsNone(values[3]) self.assertTrue(np.array_equal(time, correct_t)) def test_fanofactor(self): time, values = self.features.fanofactor(self.time, self.spiketrains) self.assertIsNone(time) self.assertEqual(values, 0.51923076923076927) def test_van_rossum_dist(self): time, values = self.features.van_rossum_dist(self.time, self.spiketrains) self.assertIsNone(time) self.assertEqual(values.shape, (4, 4)) # correct_values = [[0.0, 5.9604644775390625e-08, 5.9604644775390625e-08, 2.9980016657780828], # [5.9604644775390625e-08, 0.0, 5.9604644775390625e-08, 2.9980016657780828], # [5.9604644775390625e-08, 5.9604644775390625e-08, 0.0, 2.9980016657780828], # [2.9980016657780828, 2.9980016657780828, 2.9980016657780828, 0.0]] # self.assertTrue(np.array_equal(values, correct_values)) diag = np.diag_indices(4) self.assertTrue(np.all(values[diag] == 0)) def test_victor_purpura_dist(self): time, values = self.features.victor_purpura_dist( self.time, self.spiketrains) self.assertIsNone(time) self.assertEqual(values.shape, (4, 4)) diag = np.diag_indices(4) self.assertTrue(np.all(values[diag] == 0)) def test_corrcoef(self): time, values = self.features.corrcoef(self.time, self.spiketrains) self.assertIsNone(time) self.assertEqual(values.shape, (4, 4)) diag = np.diag_indices(4) self.assertTrue(np.all(values[diag] == 1)) def test_covariance(self): time, values = self.features.covariance(self.time, self.spiketrains) self.assertIsNone(time) self.assertEqual(values.shape, (4, 4)) def test_reference_feature(self): time, values = self.features.reference_feature(1, 1) self.assertIsNone(time) self.assertIsNone(values)
def test_initNone(self): self.features = NetworkFeatures(logger_level="error") self.assertIsInstance(self.features, NetworkFeatures)