summaryrefslogtreecommitdiff
path: root/test/test_distance.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_distance.py')
-rw-r--r--test/test_distance.py70
1 files changed, 55 insertions, 15 deletions
diff --git a/test/test_distance.py b/test/test_distance.py
index e45ac16..8cf81e2 100644
--- a/test/test_distance.py
+++ b/test/test_distance.py
@@ -17,6 +17,8 @@ from numpy.testing import assert_equal, assert_almost_equal, \
import pyspike as spk
from pyspike import SpikeTrain
+import os
+TEST_PATH = os.path.dirname(os.path.realpath(__file__))
def test_isi():
# generate two spike trains:
@@ -36,6 +38,7 @@ def test_isi():
f = spk.isi_profile(t1, t2)
# print("ISI: ", f.y)
+ print("ISI value:", expected_isi_val)
assert_equal(f.x, expected_times)
assert_array_almost_equal(f.y, expected_isi, decimal=15)
@@ -73,8 +76,19 @@ def test_spike():
assert_equal(f.x, expected_times)
- assert_almost_equal(f.avrg(), 1.6624149659863946e-01, decimal=15)
- assert_almost_equal(f.y2[-1], 0.1394558, decimal=6)
+ # from SPIKY:
+ y_all = np.array([0.000000000000000000, 0.555555555555555580,
+ 0.222222222222222210, 0.305555555555555580,
+ 0.255102040816326536, 0.000000000000000000,
+ 0.000000000000000000, 0.255102040816326536,
+ 0.255102040816326536, 0.285714285714285698,
+ 0.285714285714285698, 0.285714285714285698])
+
+ #assert_array_almost_equal(f.y1, y_all[::2])
+ assert_array_almost_equal(f.y2, y_all[1::2])
+
+ assert_almost_equal(f.avrg(), 0.186309523809523814, decimal=15)
+ assert_equal(spk.spike_distance(t1, t2), f.avrg())
t1 = SpikeTrain([0.2, 0.4, 0.6, 0.7], 1.0)
t2 = SpikeTrain([0.3, 0.45, 0.8, 0.9, 0.95], 1.0)
@@ -99,6 +113,8 @@ def test_spike():
(expected_y1+expected_y2)/2)
expected_spike_val /= (expected_times[-1]-expected_times[0])
+ print("SPIKE value:", expected_spike_val)
+
f = spk.spike_profile(t1, t2)
assert_equal(f.x, expected_times)
@@ -117,9 +133,14 @@ def test_spike():
# for left and right values
s1_r = np.array([0.1, (0.1*0.1+0.1*0.1)/0.2, 0.1, 0.0, 0.0, 0.0, 0.0])
s1_l = np.array([0.1, (0.1*0.1+0.1*0.1)/0.2, 0.1, 0.0, 0.0, 0.0, 0.0])
- s2_r = np.array([0.1*0.1/0.3, 0.1*0.3/0.3, 0.1*0.2/0.3,
+ # s2_r = np.array([0.1*0.1/0.3, 0.1*0.3/0.3, 0.1*0.2/0.3,
+ # 0.0, 0.1, 0.0, 0.0])
+ # s2_l = np.array([0.1*0.1/0.3, 0.1*0.1/0.3, 0.1*0.2/0.3, 0.0,
+ # 0.1, 0.0, 0.0])
+ # eero's edge correction:
+ s2_r = np.array([0.1, 0.1*0.3/0.3, 0.1*0.2/0.3,
0.0, 0.1, 0.0, 0.0])
- s2_l = np.array([0.1*0.1/0.3, 0.1*0.1/0.3, 0.1*0.2/0.3, 0.0,
+ s2_l = np.array([0.1, 0.1*0.3/0.3, 0.1*0.2/0.3, 0.0,
0.1, 0.0, 0.0])
isi1 = np.array([0.2, 0.2, 0.2, 0.2, 0.2, 0.4])
isi2 = np.array([0.3, 0.3, 0.3, 0.1, 0.1, 0.4])
@@ -275,8 +296,8 @@ def test_multi_spike_sync():
expected, decimal=15)
# multivariate regression test
- spike_trains = spk.load_spike_trains_from_txt("test/SPIKE_Sync_Test.txt",
- edges=[0, 4000])
+ spike_trains = spk.load_spike_trains_from_txt(
+ os.path.join(TEST_PATH, "SPIKE_Sync_Test.txt"), edges=[0, 4000])
# extract all spike times
spike_times = np.array([])
for st in spike_trains:
@@ -309,10 +330,10 @@ def check_dist_matrix(dist_func, dist_matrix_func):
f_matrix = dist_matrix_func(spike_trains)
# check zero diagonal
- for i in xrange(4):
+ for i in range(4):
assert_equal(0.0, f_matrix[i, i])
- for i in xrange(4):
- for j in xrange(i+1, 4):
+ for i in range(4):
+ for j in range(i+1, 4):
assert_equal(f_matrix[i, j], f_matrix[j, i])
assert_equal(f12, f_matrix[1, 0])
assert_equal(f13, f_matrix[2, 0])
@@ -345,15 +366,15 @@ def test_regression_spiky():
assert_equal(isi_profile.y, 0.1/1.1 * np.ones_like(isi_profile.y))
spike_dist = spk.spike_distance(st1, st2)
- assert_equal(spike_dist, 2.1105878248735391e-01)
+ assert_equal(spike_dist, 0.211058782487353908)
spike_sync = spk.spike_sync(st1, st2)
assert_equal(spike_sync, 8.6956521739130432e-01)
# multivariate check
- spike_trains = spk.load_spike_trains_from_txt("test/PySpike_testdata.txt",
- (0.0, 4000.0))
+ spike_trains = spk.load_spike_trains_from_txt(
+ os.path.join(TEST_PATH, "PySpike_testdata.txt"), (0.0, 4000.0))
isi_dist = spk.isi_distance_multi(spike_trains)
# get the full precision from SPIKY
assert_almost_equal(isi_dist, 0.17051816816999129656, decimal=15)
@@ -363,16 +384,35 @@ def test_regression_spiky():
spike_dist = spk.spike_distance_multi(spike_trains)
# get the full precision from SPIKY
- assert_almost_equal(spike_dist, 2.4432433330596512e-01, decimal=15)
+ assert_almost_equal(spike_dist, 0.25188056475463755, decimal=15)
spike_sync = spk.spike_sync_multi(spike_trains)
# get the full precision from SPIKY
assert_equal(spike_sync, 0.7183531505298066)
+ # Eero's edge correction example
+ st1 = SpikeTrain([0.5, 1.5, 2.5], 6.0)
+ st2 = SpikeTrain([3.5, 4.5, 5.5], 6.0)
+
+ f = spk.spike_profile(st1, st2)
+
+ expected_times = np.array([0.0, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.0])
+ y_all = np.array([0.271604938271605, 0.271604938271605, 0.271604938271605,
+ 0.617283950617284, 0.617283950617284, 0.444444444444444,
+ 0.285714285714286, 0.285714285714286, 0.444444444444444,
+ 0.617283950617284, 0.617283950617284, 0.271604938271605,
+ 0.271604938271605, 0.271604938271605])
+ expected_y1 = y_all[::2]
+ expected_y2 = y_all[1::2]
+
+ assert_equal(f.x, expected_times)
+ assert_array_almost_equal(f.y1, expected_y1, decimal=14)
+ assert_array_almost_equal(f.y2, expected_y2, decimal=14)
+
def test_multi_variate_subsets():
- spike_trains = spk.load_spike_trains_from_txt("test/PySpike_testdata.txt",
- (0.0, 4000.0))
+ spike_trains = spk.load_spike_trains_from_txt(
+ os.path.join(TEST_PATH, "PySpike_testdata.txt"), (0.0, 4000.0))
sub_set = [1, 3, 5, 7]
spike_trains_sub_set = [spike_trains[i] for i in sub_set]