diff options
author | Mario Mulansky <mario.mulansky@gmx.net> | 2015-05-08 18:06:59 +0200 |
---|---|---|
committer | Mario Mulansky <mario.mulansky@gmx.net> | 2015-05-08 18:06:59 +0200 |
commit | f688dc2e8616f914040746de845646abb158125d (patch) | |
tree | 01229c5fc4a5eee546a365595388c5159a479375 /pyspike/spike_distance.py | |
parent | 619ffd7105203938a26075c79a77d63960da9922 (diff) |
introduce backend for distance function
isi- and spike distances over complete intervals are now computed without
obtaining the profile first. This gives more than x2 performance improvements.
Diffstat (limited to 'pyspike/spike_distance.py')
-rw-r--r-- | pyspike/spike_distance.py | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/pyspike/spike_distance.py b/pyspike/spike_distance.py index 3567585..d727fa2 100644 --- a/pyspike/spike_distance.py +++ b/pyspike/spike_distance.py @@ -68,7 +68,22 @@ def spike_distance(spike_train1, spike_train2, interval=None): :rtype: double """ - return spike_profile(spike_train1, spike_train2).avrg(interval) + if interval is None: + # distance over the whole interval is requested: use specific function + # for optimal performance + try: + from cython.cython_distances import spike_distance_cython \ + as spike_distance_impl + return spike_distance_impl(spike_train1.spikes, + spike_train2.spikes, + spike_train1.t_start, + spike_train1.t_end) + except ImportError: + # Cython backend not available: fall back to average profile + return spike_profile(spike_train1, spike_train2).avrg(interval) + else: + # some specific interval is provided: compute the whole profile + return spike_profile(spike_train1, spike_train2).avrg(interval) ############################################################ |