summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMario Mulansky <mario.mulansky@gmx.net>2015-08-17 11:57:53 +0200
committerMario Mulansky <mario.mulansky@gmx.net>2015-08-17 11:57:53 +0200
commitbe74318a2b269ec0c1e16981e7286679746f1a49 (patch)
treea892e5d4f63059cceeda1d1bae29472094a47745
parent5731dad11d6d7129864fa6273d780000b34fd8a9 (diff)
fix #15
add test case and fix for Issue #15 closes #15
-rw-r--r--pyspike/generic.py7
-rw-r--r--test/regression/test_regression_11.py28
-rw-r--r--test/test_regression/test_regression_15.py78
3 files changed, 82 insertions, 31 deletions
diff --git a/pyspike/generic.py b/pyspike/generic.py
index 515cbf4..904c3c2 100644
--- a/pyspike/generic.py
+++ b/pyspike/generic.py
@@ -137,12 +137,13 @@ def _generic_distance_matrix(spike_trains, dist_function,
assert (indices < len(spike_trains)).all() and (indices >= 0).all(), \
"Invalid index list."
# generate a list of possible index pairs
- pairs = [(indices[i], j) for i in range(len(indices))
- for j in indices[i+1:]]
+ pairs = [(i, j) for i in xrange(len(indices))
+ for j in xrange(i+1, len(indices))]
distance_matrix = np.zeros((len(indices), len(indices)))
for i, j in pairs:
- d = dist_function(spike_trains[i], spike_trains[j], interval)
+ d = dist_function(spike_trains[indices[i]], spike_trains[indices[j]],
+ interval)
distance_matrix[i, j] = d
distance_matrix[j, i] = d
return distance_matrix
diff --git a/test/regression/test_regression_11.py b/test/regression/test_regression_11.py
deleted file mode 100644
index 7e66bc2..0000000
--- a/test/regression/test_regression_11.py
+++ /dev/null
@@ -1,28 +0,0 @@
-""" test_regression_11.py
-
-Regression test for Issue 11
-https://github.com/mariomulansky/PySpike/issues/11
-
-Copyright 2015, Mario Mulansky <mario.mulansky@gmx.net>
-
-Distributed under the BSD License
-"""
-
-# run as
-# python -Qnew test_regression_11.py
-# to check correct behavior with new division
-
-# import division to see if everythin works with new division operator
-from __future__ import division
-
-import pyspike as spk
-
-M = 19 # uneven number of spike trains
-
-spike_trains = [spk.generate_poisson_spikes(1.0, [0, 100]) for i in xrange(M)]
-
-isi_prof = spk.isi_profile_multi(spike_trains)
-isi = spk.isi_distance_multi(spike_trains)
-
-spike_prof = spk.spike_profile_multi(spike_trains)
-spike = spk.spike_distance_multi(spike_trains)
diff --git a/test/test_regression/test_regression_15.py b/test/test_regression/test_regression_15.py
new file mode 100644
index 0000000..1ce1290
--- /dev/null
+++ b/test/test_regression/test_regression_15.py
@@ -0,0 +1,78 @@
+""" test_regression_15.py
+
+Regression test for Issue #15
+
+Copyright 2015, Mario Mulansky <mario.mulansky@gmx.net>
+
+Distributed under the BSD License
+
+"""
+
+import numpy as np
+from numpy.testing import assert_equal, assert_almost_equal, \
+ assert_array_almost_equal
+
+import pyspike as spk
+
+
+def test_regression_15_isi():
+ # load spike trains
+ spike_trains = spk.load_spike_trains_from_txt("test/SPIKE_Sync_Test.txt",
+ edges=[0, 4000])
+
+ N = len(spike_trains)
+
+ dist_mat = spk.isi_distance_matrix(spike_trains)
+ assert_equal(dist_mat.shape, (N, N))
+
+ ind = np.arange(N/2)
+ dist_mat = spk.isi_distance_matrix(spike_trains, ind)
+ assert_equal(dist_mat.shape, (N/2, N/2))
+
+ ind = np.arange(N/2, N)
+ dist_mat = spk.isi_distance_matrix(spike_trains, ind)
+ assert_equal(dist_mat.shape, (N/2, N/2))
+
+
+def test_regression_15_spike():
+ # load spike trains
+ spike_trains = spk.load_spike_trains_from_txt("test/SPIKE_Sync_Test.txt",
+ edges=[0, 4000])
+
+ N = len(spike_trains)
+
+ dist_mat = spk.spike_distance_matrix(spike_trains)
+ assert_equal(dist_mat.shape, (N, N))
+
+ ind = np.arange(N/2)
+ dist_mat = spk.spike_distance_matrix(spike_trains, ind)
+ assert_equal(dist_mat.shape, (N/2, N/2))
+
+ ind = np.arange(N/2, N)
+ dist_mat = spk.spike_distance_matrix(spike_trains, ind)
+ assert_equal(dist_mat.shape, (N/2, N/2))
+
+
+def test_regression_15_sync():
+ # load spike trains
+ spike_trains = spk.load_spike_trains_from_txt("test/SPIKE_Sync_Test.txt",
+ edges=[0, 4000])
+
+ N = len(spike_trains)
+
+ dist_mat = spk.spike_sync_matrix(spike_trains)
+ assert_equal(dist_mat.shape, (N, N))
+
+ ind = np.arange(N/2)
+ dist_mat = spk.spike_sync_matrix(spike_trains, ind)
+ assert_equal(dist_mat.shape, (N/2, N/2))
+
+ ind = np.arange(N/2, N)
+ dist_mat = spk.spike_sync_matrix(spike_trains, ind)
+ assert_equal(dist_mat.shape, (N/2, N/2))
+
+
+if __name__ == "__main__":
+ test_regression_15_isi()
+ test_regression_15_spike()
+ test_regression_15_sync()