summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMario Mulansky <mario.mulansky@gmx.net>2015-12-14 14:24:14 +0100
committerMario Mulansky <mario.mulansky@gmx.net>2015-12-14 14:24:14 +0100
commit776d8d686f9c19a729038270f69872801bba43a2 (patch)
tree0b4f2bc756bd0fe434360a8af5a920e76c5352f8
parentb970055641b215d30b671ee810e29c6a55e6214a (diff)
parent0dbdc0096dacc1f6233600ed6e36487bbab6b718 (diff)
Merge branch 'develop' of github.com:mariomulansky/PySpike into develop
-rw-r--r--.travis.yml3
-rw-r--r--Contributors.txt1
-rw-r--r--MANIFEST.in7
-rw-r--r--examples/multivariate.py2
-rw-r--r--examples/performance.py2
-rw-r--r--pyspike/DiscreteFunc.py10
-rw-r--r--pyspike/PieceWiseConstFunc.py6
-rw-r--r--pyspike/PieceWiseLinFunc.py8
-rw-r--r--pyspike/__init__.py22
-rw-r--r--pyspike/directionality/__init__.py4
-rw-r--r--pyspike/directionality/spike_train_order.py16
-rw-r--r--pyspike/generic.py9
-rw-r--r--pyspike/isi_distance.py8
-rw-r--r--pyspike/psth.py2
-rw-r--r--pyspike/spike_distance.py8
-rw-r--r--pyspike/spike_sync.py8
-rw-r--r--setup.py13
-rw-r--r--test/test_distance.py20
-rw-r--r--test/test_regression/test_regression_15.py38
-rw-r--r--test/test_spikes.py9
20 files changed, 112 insertions, 84 deletions
diff --git a/.travis.yml b/.travis.yml
index 1035775..1562d21 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -2,6 +2,9 @@ language: python
python:
- "2.6"
- "2.7"
+ - "3.3"
+ - "3.4"
+ - "3.5"
env:
- CYTHON_INSTALL="pip install -q cython"
- CYTHON_INSTALL=""
diff --git a/Contributors.txt b/Contributors.txt
index 83563c7..512aa7f 100644
--- a/Contributors.txt
+++ b/Contributors.txt
@@ -1,5 +1,6 @@
Python/C Programming:
- Mario Mulansky
+- Igor Gnatenko
Scientific Methods:
- Thomas Kreuz
diff --git a/MANIFEST.in b/MANIFEST.in
new file mode 100644
index 0000000..aed0ae0
--- /dev/null
+++ b/MANIFEST.in
@@ -0,0 +1,7 @@
+include *.rst
+include *.txt
+include pyspike/cython/*.c
+include directionality/cython/*.c
+recursive-include examples *.py *.txt
+recursive-include test *.py *.txt
+recursive-include doc *
diff --git a/examples/multivariate.py b/examples/multivariate.py
index 9a44758..93f8516 100644
--- a/examples/multivariate.py
+++ b/examples/multivariate.py
@@ -24,7 +24,7 @@ t_loading = time.clock()
print("Number of spike trains: %d" % len(spike_trains))
num_of_spikes = sum([len(spike_trains[i])
- for i in xrange(len(spike_trains))])
+ for i in range(len(spike_trains))])
print("Number of spikes: %d" % num_of_spikes)
# calculate the multivariate spike distance
diff --git a/examples/performance.py b/examples/performance.py
index d0c3b91..ec6c830 100644
--- a/examples/performance.py
+++ b/examples/performance.py
@@ -26,7 +26,7 @@ print("%d spike trains with %d spikes" % (M, int(r*T)))
spike_trains = []
t_start = datetime.now()
-for i in xrange(M):
+for i in range(M):
spike_trains.append(spk.generate_poisson_spikes(r, T))
t_end = datetime.now()
runtime = (t_end-t_start).total_seconds()
diff --git a/pyspike/DiscreteFunc.py b/pyspike/DiscreteFunc.py
index 9cc7bd5..fe97bc2 100644
--- a/pyspike/DiscreteFunc.py
+++ b/pyspike/DiscreteFunc.py
@@ -2,7 +2,7 @@
# Copyright 2014-2015, Mario Mulansky <mario.mulansky@gmx.net>
# Distributed under the BSD License
-from __future__ import print_function
+from __future__ import absolute_import, print_function
import numpy as np
import collections
@@ -80,7 +80,7 @@ class DiscreteFunc(object):
expected_mp = (averaging_window_size+1) * int(self.mp[0])
y_plot = np.zeros_like(self.y)
# compute the values in a loop, could be done in cython if required
- for i in xrange(len(y_plot)):
+ for i in range(len(y_plot)):
if self.mp[i] >= expected_mp:
# the current value contains already all the wanted
@@ -206,7 +206,7 @@ expected."
# cython version
try:
- from cython.cython_add import add_discrete_function_cython as \
+ from .cython.cython_add import add_discrete_function_cython as \
add_discrete_function_impl
except ImportError:
if not(pyspike.disable_backend_warning):
@@ -215,7 +215,7 @@ sure that PySpike is installed by running\n\
'python setup.py build_ext --inplace'! \
\n Falling back to slow python backend.")
# use python backend
- from cython.python_backend import add_discrete_function_python as \
+ from .cython.python_backend import add_discrete_function_python as \
add_discrete_function_impl
self.x, self.y, self.mp = \
@@ -244,7 +244,7 @@ def average_profile(profiles):
assert len(profiles) > 1
avrg_profile = profiles[0].copy()
- for i in xrange(1, len(profiles)):
+ for i in range(1, len(profiles)):
avrg_profile.add(profiles[i])
avrg_profile.mul_scalar(1.0/len(profiles)) # normalize
diff --git a/pyspike/PieceWiseConstFunc.py b/pyspike/PieceWiseConstFunc.py
index 23ff536..5ce5f27 100644
--- a/pyspike/PieceWiseConstFunc.py
+++ b/pyspike/PieceWiseConstFunc.py
@@ -2,7 +2,7 @@
# Copyright 2014-2015, Mario Mulansky <mario.mulansky@gmx.net>
# Distributed under the BSD License
-from __future__ import print_function
+from __future__ import absolute_import, print_function
import numpy as np
import collections
@@ -189,7 +189,7 @@ class PieceWiseConstFunc(object):
# cython version
try:
- from cython.cython_add import add_piece_wise_const_cython as \
+ from .cython.cython_add import add_piece_wise_const_cython as \
add_piece_wise_const_impl
except ImportError:
if not(pyspike.disable_backend_warning):
@@ -198,7 +198,7 @@ sure that PySpike is installed by running\n \
'python setup.py build_ext --inplace'! \
\n Falling back to slow python backend.")
# use python backend
- from cython.python_backend import add_piece_wise_const_python as \
+ from .cython.python_backend import add_piece_wise_const_python as \
add_piece_wise_const_impl
self.x, self.y = add_piece_wise_const_impl(self.x, self.y, f.x, f.y)
diff --git a/pyspike/PieceWiseLinFunc.py b/pyspike/PieceWiseLinFunc.py
index 0d51c76..8145e63 100644
--- a/pyspike/PieceWiseLinFunc.py
+++ b/pyspike/PieceWiseLinFunc.py
@@ -2,7 +2,7 @@
# Copyright 2014-2015, Mario Mulansky <mario.mulansky@gmx.net>
# Distributed under the BSD License
-from __future__ import print_function
+from __future__ import absolute_import, print_function
import numpy as np
import collections
@@ -222,13 +222,13 @@ class PieceWiseLinFunc:
assert self.x[-1] == f.x[-1], "The functions have different intervals"
# python implementation
- # from python_backend import add_piece_wise_lin_python
+ # from .python_backend import add_piece_wise_lin_python
# self.x, self.y1, self.y2 = add_piece_wise_lin_python(
# self.x, self.y1, self.y2, f.x, f.y1, f.y2)
# cython version
try:
- from cython.cython_add import add_piece_wise_lin_cython as \
+ from .cython.cython_add import add_piece_wise_lin_cython as \
add_piece_wise_lin_impl
except ImportError:
if not(pyspike.disable_backend_warning):
@@ -237,7 +237,7 @@ sure that PySpike is installed by running\n \
'python setup.py build_ext --inplace'! \n \
Falling back to slow python backend.")
# use python backend
- from cython.python_backend import add_piece_wise_lin_python as \
+ from .cython.python_backend import add_piece_wise_lin_python as \
add_piece_wise_lin_impl
self.x, self.y1, self.y2 = add_piece_wise_lin_impl(
diff --git a/pyspike/__init__.py b/pyspike/__init__.py
index 8d92ea4..335b1d3 100644
--- a/pyspike/__init__.py
+++ b/pyspike/__init__.py
@@ -4,27 +4,29 @@ Copyright 2014-2015, Mario Mulansky <mario.mulansky@gmx.net>
Distributed under the BSD License
"""
+from __future__ import absolute_import
+
__all__ = ["isi_distance", "spike_distance", "spike_sync", "psth",
"spikes", "SpikeTrain", "PieceWiseConstFunc", "PieceWiseLinFunc",
"DiscreteFunc", "directionality"]
-from PieceWiseConstFunc import PieceWiseConstFunc
-from PieceWiseLinFunc import PieceWiseLinFunc
-from DiscreteFunc import DiscreteFunc
-from SpikeTrain import SpikeTrain
+from .PieceWiseConstFunc import PieceWiseConstFunc
+from .PieceWiseLinFunc import PieceWiseLinFunc
+from .DiscreteFunc import DiscreteFunc
+from .SpikeTrain import SpikeTrain
-from isi_distance import isi_profile, isi_distance, isi_profile_multi,\
+from .isi_distance import isi_profile, isi_distance, isi_profile_multi,\
isi_distance_multi, isi_distance_matrix
-from spike_distance import spike_profile, spike_distance, spike_profile_multi,\
+from .spike_distance import spike_profile, spike_distance, spike_profile_multi,\
spike_distance_multi, spike_distance_matrix
-from spike_sync import spike_sync_profile, spike_sync,\
+from .spike_sync import spike_sync_profile, spike_sync,\
spike_sync_profile_multi, spike_sync_multi, spike_sync_matrix
-from psth import psth
+from .psth import psth
-from spikes import load_spike_trains_from_txt, spike_train_from_string, \
+from .spikes import load_spike_trains_from_txt, spike_train_from_string, \
merge_spike_trains, generate_poisson_spikes
-import directionality as drct
+from . import directionality as drct
# define the __version__ following
# http://stackoverflow.com/questions/17583443
diff --git a/pyspike/directionality/__init__.py b/pyspike/directionality/__init__.py
index 6f74c50..6ea38b2 100644
--- a/pyspike/directionality/__init__.py
+++ b/pyspike/directionality/__init__.py
@@ -4,9 +4,11 @@ Copyright 2015, Mario Mulansky <mario.mulansky@gmx.net>
Distributed under the BSD License
"""
+from __future__ import absolute_import
+
__all__ = ["spike_train_order"]
-from spike_train_order import spike_train_order_profile, \
+from .spike_train_order import spike_train_order_profile, \
spike_train_order, spike_train_order_profile_multi, \
spike_train_order_matrix, spike_order_values, \
optimal_spike_train_order, optimal_spike_train_order_from_matrix, \
diff --git a/pyspike/directionality/spike_train_order.py b/pyspike/directionality/spike_train_order.py
index 892ffd0..e6c9830 100644
--- a/pyspike/directionality/spike_train_order.py
+++ b/pyspike/directionality/spike_train_order.py
@@ -2,6 +2,8 @@
# Copyright 2015, Mario Mulansky <mario.mulansky@gmx.net>
# Distributed under the BSD License
+from __future__ import absolute_import
+
import numpy as np
from math import exp
from functools import partial
@@ -35,7 +37,7 @@ def spike_train_order_profile(spike_train1, spike_train2, max_tau=None):
# cython implementation
try:
- from cython.cython_directionality import \
+ from .cython.cython_directionality import \
spike_train_order_profile_cython as \
spike_train_order_profile_impl
except ImportError:
@@ -45,7 +47,7 @@ def spike_train_order_profile(spike_train1, spike_train2, max_tau=None):
PySpike is installed by running\n 'python setup.py build_ext --inplace'!\n \
Falling back to slow python backend.")
# use python backend
- from cython.directionality_python_backend import \
+ from .cython.directionality_python_backend import \
spike_train_order_python as spike_train_order_profile_impl
if max_tau is None:
@@ -72,7 +74,7 @@ def spike_train_order(spike_train1, spike_train2, normalize=True,
# distance over the whole interval is requested: use specific function
# for optimal performance
try:
- from cython.cython_directionality import \
+ from .cython.cython_directionality import \
spike_train_order_cython as spike_train_order_impl
if max_tau is None:
max_tau = 0.0
@@ -170,7 +172,7 @@ def spike_order_values(spike_trains, indices=None,
# cython implementation
try:
- from cython.cython_directionality import \
+ from .cython.cython_directionality import \
spike_order_values_cython as spike_order_values_impl
except ImportError:
raise NotImplementedError()
@@ -179,7 +181,7 @@ def spike_order_values(spike_trains, indices=None,
# PySpike is installed by running\n 'python setup.py build_ext --inplace'!\n \
# Falling back to slow python backend.")
# # use python backend
-# from cython.python_backend import coincidence_python \
+# from .cython.python_backend import coincidence_python \
# as coincidence_profile_impl
if max_tau is None:
@@ -258,7 +260,7 @@ def optimal_spike_train_order(spike_trains, indices=None, interval=None,
def permutate_matrix(D, p):
N = len(D)
D_p = np.empty_like(D)
- for n in xrange(N):
- for m in xrange(N):
+ for n in range(N):
+ for m in range(N):
D_p[n, m] = D[p[n], p[m]]
return D_p
diff --git a/pyspike/generic.py b/pyspike/generic.py
index 904c3c2..5ad06f1 100644
--- a/pyspike/generic.py
+++ b/pyspike/generic.py
@@ -7,6 +7,7 @@ Copyright 2015, Mario Mulansky <mario.mulansky@gmx.net>
Distributed under the BSD License
"""
+from __future__ import division
import numpy as np
@@ -38,14 +39,14 @@ def _generic_profile_multi(spike_trains, pair_distance_func, indices=None):
L1 = len(pairs1)
if L1 > 1:
dist_prof1 = divide_and_conquer(pairs1[:L1//2],
- pairs1[int(L1//2):])
+ pairs1[L1//2:])
else:
dist_prof1 = pair_distance_func(spike_trains[pairs1[0][0]],
spike_trains[pairs1[0][1]])
L2 = len(pairs2)
if L2 > 1:
dist_prof2 = divide_and_conquer(pairs2[:L2//2],
- pairs2[int(L2//2):])
+ pairs2[L2//2:])
else:
dist_prof2 = pair_distance_func(spike_trains[pairs2[0][0]],
spike_trains[pairs2[0][1]])
@@ -137,8 +138,8 @@ 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 = [(i, j) for i in xrange(len(indices))
- for j in xrange(i+1, len(indices))]
+ pairs = [(i, j) for i in range(len(indices))
+ for j in range(i+1, len(indices))]
distance_matrix = np.zeros((len(indices), len(indices)))
for i, j in pairs:
diff --git a/pyspike/isi_distance.py b/pyspike/isi_distance.py
index e50f203..0ae7393 100644
--- a/pyspike/isi_distance.py
+++ b/pyspike/isi_distance.py
@@ -2,6 +2,8 @@
# Copyright 2014-2015, Mario Mulansky <mario.mulansky@gmx.net>
# Distributed under the BSD License
+from __future__ import absolute_import
+
import pyspike
from pyspike import PieceWiseConstFunc
from pyspike.generic import _generic_profile_multi, _generic_distance_multi, \
@@ -32,7 +34,7 @@ def isi_profile(spike_train1, spike_train2):
# load cython implementation
try:
- from cython.cython_profiles import isi_profile_cython \
+ from .cython.cython_profiles import isi_profile_cython \
as isi_profile_impl
except ImportError:
if not(pyspike.disable_backend_warning):
@@ -40,7 +42,7 @@ def isi_profile(spike_train1, spike_train2):
PySpike is installed by running\n 'python setup.py build_ext --inplace'!\n \
Falling back to slow python backend.")
# use python backend
- from cython.python_backend import isi_distance_python \
+ from .cython.python_backend import isi_distance_python \
as isi_profile_impl
times, values = isi_profile_impl(spike_train1.get_spikes_non_empty(),
@@ -74,7 +76,7 @@ def isi_distance(spike_train1, spike_train2, interval=None):
# distance over the whole interval is requested: use specific function
# for optimal performance
try:
- from cython.cython_distances import isi_distance_cython \
+ from .cython.cython_distances import isi_distance_cython \
as isi_distance_impl
return isi_distance_impl(spike_train1.get_spikes_non_empty(),
diff --git a/pyspike/psth.py b/pyspike/psth.py
index 4027215..7cf1140 100644
--- a/pyspike/psth.py
+++ b/pyspike/psth.py
@@ -24,7 +24,7 @@ def psth(spike_trains, bin_size):
# N = len(spike_trains)
combined_spike_train = spike_trains[0].spikes
- for i in xrange(1, len(spike_trains)):
+ for i in range(1, len(spike_trains)):
combined_spike_train = np.append(combined_spike_train,
spike_trains[i].spikes)
diff --git a/pyspike/spike_distance.py b/pyspike/spike_distance.py
index feea0c1..e418283 100644
--- a/pyspike/spike_distance.py
+++ b/pyspike/spike_distance.py
@@ -2,6 +2,8 @@
# Copyright 2014-2015, Mario Mulansky <mario.mulansky@gmx.net>
# Distributed under the BSD License
+from __future__ import absolute_import
+
import pyspike
from pyspike import PieceWiseLinFunc
from pyspike.generic import _generic_profile_multi, _generic_distance_multi, \
@@ -32,7 +34,7 @@ def spike_profile(spike_train1, spike_train2):
# cython implementation
try:
- from cython.cython_profiles import spike_profile_cython \
+ from .cython.cython_profiles import spike_profile_cython \
as spike_profile_impl
except ImportError:
if not(pyspike.disable_backend_warning):
@@ -40,7 +42,7 @@ def spike_profile(spike_train1, spike_train2):
PySpike is installed by running\n 'python setup.py build_ext --inplace'!\n \
Falling back to slow python backend.")
# use python backend
- from cython.python_backend import spike_distance_python \
+ from .cython.python_backend import spike_distance_python \
as spike_profile_impl
times, y_starts, y_ends = spike_profile_impl(
@@ -76,7 +78,7 @@ def spike_distance(spike_train1, spike_train2, interval=None):
# distance over the whole interval is requested: use specific function
# for optimal performance
try:
- from cython.cython_distances import spike_distance_cython \
+ from .cython.cython_distances import spike_distance_cython \
as spike_distance_impl
return spike_distance_impl(spike_train1.get_spikes_non_empty(),
spike_train2.get_spikes_non_empty(),
diff --git a/pyspike/spike_sync.py b/pyspike/spike_sync.py
index 10ebdc7..3dc29ff 100644
--- a/pyspike/spike_sync.py
+++ b/pyspike/spike_sync.py
@@ -3,6 +3,8 @@
# Copyright 2014-2015, Mario Mulansky <mario.mulansky@gmx.net>
# Distributed under the BSD License
+from __future__ import absolute_import
+
import numpy as np
from functools import partial
import pyspike
@@ -37,7 +39,7 @@ def spike_sync_profile(spike_train1, spike_train2, max_tau=None):
# cython implementation
try:
- from cython.cython_profiles import coincidence_profile_cython \
+ from .cython.cython_profiles import coincidence_profile_cython \
as coincidence_profile_impl
except ImportError:
if not(pyspike.disable_backend_warning):
@@ -45,7 +47,7 @@ def spike_sync_profile(spike_train1, spike_train2, max_tau=None):
PySpike is installed by running\n 'python setup.py build_ext --inplace'!\n \
Falling back to slow python backend.")
# use python backend
- from cython.python_backend import coincidence_python \
+ from .cython.python_backend import coincidence_python \
as coincidence_profile_impl
if max_tau is None:
@@ -73,7 +75,7 @@ def _spike_sync_values(spike_train1, spike_train2, interval, max_tau):
# distance over the whole interval is requested: use specific function
# for optimal performance
try:
- from cython.cython_distances import coincidence_value_cython \
+ from .cython.cython_distances import coincidence_value_cython \
as coincidence_value_impl
if max_tau is None:
max_tau = 0.0
diff --git a/setup.py b/setup.py
index 960c684..62c1951 100644
--- a/setup.py
+++ b/setup.py
@@ -89,11 +89,10 @@ train similarity',
'Programming Language :: Python :: 2',
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
- ],
- package_data={
- 'pyspike': ['cython/cython_add.c', 'cython/cython_profiles.c',
- 'cython/cython_distances.c',
- 'directionality/cython/cython_directionality.c'],
- 'test': ['Spike_testdata.txt']
- }
+
+ 'Programming Language :: Python :: 3',
+ 'Programming Language :: Python :: 3.3',
+ 'Programming Language :: Python :: 3.4',
+ 'Programming Language :: Python :: 3.5',
+ ]
)
diff --git a/test/test_distance.py b/test/test_distance.py
index 626b438..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:
@@ -294,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:
@@ -328,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])
@@ -371,8 +373,8 @@ def test_regression_spiky():
# 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)
@@ -409,8 +411,8 @@ def test_regression_spiky():
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]
diff --git a/test/test_regression/test_regression_15.py b/test/test_regression/test_regression_15.py
index 1ce1290..dcacae2 100644
--- a/test/test_regression/test_regression_15.py
+++ b/test/test_regression/test_regression_15.py
@@ -8,68 +8,70 @@ Distributed under the BSD License
"""
+from __future__ import division
+
import numpy as np
from numpy.testing import assert_equal, assert_almost_equal, \
assert_array_almost_equal
import pyspike as spk
+import os
+TEST_PATH = os.path.dirname(os.path.realpath(__file__))
+TEST_DATA = os.path.join(TEST_PATH, "..", "SPIKE_Sync_Test.txt")
def test_regression_15_isi():
# load spike trains
- spike_trains = spk.load_spike_trains_from_txt("test/SPIKE_Sync_Test.txt",
- edges=[0, 4000])
+ spike_trains = spk.load_spike_trains_from_txt(TEST_DATA, 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)
+ ind = np.arange(N//2)
dist_mat = spk.isi_distance_matrix(spike_trains, ind)
- assert_equal(dist_mat.shape, (N/2, N/2))
+ assert_equal(dist_mat.shape, (N//2, N//2))
- ind = np.arange(N/2, N)
+ ind = np.arange(N//2, N)
dist_mat = spk.isi_distance_matrix(spike_trains, ind)
- assert_equal(dist_mat.shape, (N/2, N/2))
+ 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])
+ spike_trains = spk.load_spike_trains_from_txt(TEST_DATA, 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)
+ ind = np.arange(N//2)
dist_mat = spk.spike_distance_matrix(spike_trains, ind)
- assert_equal(dist_mat.shape, (N/2, N/2))
+ assert_equal(dist_mat.shape, (N//2, N//2))
- ind = np.arange(N/2, N)
+ ind = np.arange(N//2, N)
dist_mat = spk.spike_distance_matrix(spike_trains, ind)
- assert_equal(dist_mat.shape, (N/2, N/2))
+ 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])
+ spike_trains = spk.load_spike_trains_from_txt(TEST_DATA, 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)
+ ind = np.arange(N//2)
dist_mat = spk.spike_sync_matrix(spike_trains, ind)
- assert_equal(dist_mat.shape, (N/2, N/2))
+ assert_equal(dist_mat.shape, (N//2, N//2))
- ind = np.arange(N/2, N)
+ ind = np.arange(N//2, N)
dist_mat = spk.spike_sync_matrix(spike_trains, ind)
- assert_equal(dist_mat.shape, (N/2, N/2))
+ assert_equal(dist_mat.shape, (N//2, N//2))
if __name__ == "__main__":
diff --git a/test/test_spikes.py b/test/test_spikes.py
index d4eb131..609a819 100644
--- a/test/test_spikes.py
+++ b/test/test_spikes.py
@@ -13,10 +13,12 @@ from numpy.testing import assert_equal
import pyspike as spk
+import os
+TEST_PATH = os.path.dirname(os.path.realpath(__file__))
+TEST_DATA = os.path.join(TEST_PATH, "PySpike_testdata.txt")
def test_load_from_txt():
- spike_trains = spk.load_spike_trains_from_txt("test/PySpike_testdata.txt",
- edges=(0, 4000))
+ spike_trains = spk.load_spike_trains_from_txt(TEST_DATA, edges=(0, 4000))
assert len(spike_trains) == 40
# check the first spike train
@@ -48,8 +50,7 @@ def check_merged_spikes(merged_spikes, spike_trains):
def test_merge_spike_trains():
# first load the data
- spike_trains = spk.load_spike_trains_from_txt("test/PySpike_testdata.txt",
- edges=(0, 4000))
+ spike_trains = spk.load_spike_trains_from_txt(TEST_DATA, edges=(0, 4000))
merged_spikes = spk.merge_spike_trains([spike_trains[0], spike_trains[1]])
# test if result is sorted