summaryrefslogtreecommitdiff
path: root/pyspike/spike_distance.py
diff options
context:
space:
mode:
Diffstat (limited to 'pyspike/spike_distance.py')
-rw-r--r--pyspike/spike_distance.py37
1 files changed, 21 insertions, 16 deletions
diff --git a/pyspike/spike_distance.py b/pyspike/spike_distance.py
index f721c86..8d03d70 100644
--- a/pyspike/spike_distance.py
+++ b/pyspike/spike_distance.py
@@ -14,23 +14,23 @@ from pyspike.generic import _generic_profile_multi, _generic_distance_matrix
############################################################
# spike_profile
############################################################
-def spike_profile(spikes1, spikes2):
+def spike_profile(spike_train1, spike_train2):
""" Computes the spike-distance profile S_spike(t) of the two given spike
trains. Returns the profile as a PieceWiseLinFunc object. The S_spike
- values are defined positive S_spike(t)>=0. The spike trains are expected to
- have auxiliary spikes at the beginning and end of the interval. Use the
- function add_auxiliary_spikes to add those spikes to the spike train.
+ values are defined positive S_spike(t)>=0.
- :param spikes1: ordered array of spike times with auxiliary spikes.
- :param spikes2: ordered array of spike times with auxiliary spikes.
+ :param spike_train1: First spike train.
+ :type spike_train1: :class:`pyspike.SpikeTrain`
+ :param spike_train2: Second spike train.
+ :type spike_train2: :class:`pyspike.SpikeTrain`
:returns: The spike-distance profile :math:`S_{spike}(t)`.
:rtype: :class:`pyspike.function.PieceWiseLinFunc`
"""
- # check for auxiliary spikes - first and last spikes should be identical
- assert spikes1[0] == spikes2[0], \
+ # check whether the spike trains are defined for the same interval
+ assert spike_train1.t_start == spike_train2.t_start, \
"Given spike trains seems not to have auxiliary spikes!"
- assert spikes1[-1] == spikes2[-1], \
+ assert spike_train1.t_end == spike_train2.t_end, \
"Given spike trains seems not to have auxiliary spikes!"
# cython implementation
@@ -45,21 +45,26 @@ Falling back to slow python backend.")
from cython.python_backend import spike_distance_python \
as spike_distance_impl
- times, y_starts, y_ends = spike_distance_impl(spikes1, spikes2)
+ times, y_starts, y_ends = spike_distance_impl(spike_train1.spikes,
+ spike_train2.spikes,
+ spike_train1.t_start,
+ spike_train1.t_end)
return PieceWiseLinFunc(times, y_starts, y_ends)
############################################################
# spike_distance
############################################################
-def spike_distance(spikes1, spikes2, interval=None):
+def spike_distance(spike_train1, spike_train2, interval=None):
""" Computes the spike-distance S of the given spike trains. The
spike-distance is the integral over the isi distance profile S_spike(t):
.. math:: S = \int_{T_0}^{T_1} S_{spike}(t) dt.
- :param spikes1: ordered array of spike times with auxiliary spikes.
- :param spikes2: ordered array of spike times with auxiliary spikes.
+ :param spike_train1: First spike train.
+ :type spike_train1: :class:`pyspike.SpikeTrain`
+ :param spike_train2: Second spike train.
+ :type spike_train2: :class:`pyspike.SpikeTrain`
:param interval: averaging interval given as a pair of floats (T0, T1),
if None the average over the whole function is computed.
:type interval: Pair of floats or None.
@@ -67,7 +72,7 @@ def spike_distance(spikes1, spikes2, interval=None):
:rtype: double
"""
- return spike_profile(spikes1, spikes2).avrg(interval)
+ return spike_profile(spike_train1, spike_train2).avrg(interval)
############################################################
@@ -102,7 +107,7 @@ def spike_distance_multi(spike_trains, indices=None, interval=None):
S_{spike} = \int_0^T 2/((N(N-1)) sum_{<i,j>} S_{spike}^{i, j} dt
where the sum goes over all pairs <i,j>
- :param spike_trains: list of spike trains
+ :param spike_trains: list of :class:`pyspike.SpikeTrain`
:param indices: list of indices defining which spike trains to use,
if None all given spike trains are used (default=None)
:type indices: list or None
@@ -121,7 +126,7 @@ def spike_distance_multi(spike_trains, indices=None, interval=None):
def spike_distance_matrix(spike_trains, indices=None, interval=None):
""" Computes the time averaged spike-distance of all pairs of spike-trains.
- :param spike_trains: list of spike trains
+ :param spike_trains: list of :class:`pyspike.SpikeTrain`
:param indices: list of indices defining which spike trains to use,
if None all given spike trains are used (default=None)
:type indices: list or None