diff options
author | Mario Mulansky <mario.mulansky@gmx.net> | 2015-05-18 15:29:41 +0200 |
---|---|---|
committer | Mario Mulansky <mario.mulansky@gmx.net> | 2015-05-18 15:29:41 +0200 |
commit | d985f3a8de6ae840c8a127653b3d9affb1a8aa40 (patch) | |
tree | fc583b16d030b6ba67cf09895fd269bd297ad660 /examples | |
parent | a718911ba2aac9302465c0522cc18b4470b99f77 (diff) | |
parent | 2b957ac5d7c964b6fe0e99bb078a396732331869 (diff) |
Merge branch 'develop'0.3.0
Diffstat (limited to 'examples')
-rw-r--r-- | examples/performance.py | 65 | ||||
-rw-r--r-- | examples/profiles.py | 66 |
2 files changed, 131 insertions, 0 deletions
diff --git a/examples/performance.py b/examples/performance.py new file mode 100644 index 0000000..1c31e8f --- /dev/null +++ b/examples/performance.py @@ -0,0 +1,65 @@ +""" +Compute distances of large sets of spike trains for performance tests + +Copyright 2015, Mario Mulansky <mario.mulansky@gmx.net> + +Distributed under the BSD License + +""" + +from __future__ import print_function + +import pyspike as spk +from datetime import datetime +import cProfile +import pstats + +M = 100 # number of spike trains +r = 1.0 # rate of Poisson spike times +T = 1E3 # length of spike trains + +print("%d spike trains with %d spikes" % (M, int(r*T))) + +spike_trains = [] + +t_start = datetime.now() +for i in xrange(M): + spike_trains.append(spk.generate_poisson_spikes(r, T)) +t_end = datetime.now() +runtime = (t_end-t_start).total_seconds() + +print("Spike generation runtime: %.3fs" % runtime) +print() + +print("================ ISI COMPUTATIONS ================") +print(" MULTIVARIATE DISTANCE") +cProfile.run('spk.isi_distance_multi(spike_trains)', 'performance.stat') +p = pstats.Stats('performance.stat') +p.strip_dirs().sort_stats('tottime').print_stats(5) + +print(" MULTIVARIATE PROFILE") +cProfile.run('spk.isi_profile_multi(spike_trains)', 'performance.stat') +p = pstats.Stats('performance.stat') +p.strip_dirs().sort_stats('tottime').print_stats(5) + +print("================ SPIKE COMPUTATIONS ================") +print(" MULTIVARIATE DISTANCE") +cProfile.run('spk.spike_distance_multi(spike_trains)', 'performance.stat') +p = pstats.Stats('performance.stat') +p.strip_dirs().sort_stats('tottime').print_stats(5) + +print(" MULTIVARIATE PROFILE") +cProfile.run('spk.spike_profile_multi(spike_trains)', 'performance.stat') +p = pstats.Stats('performance.stat') +p.strip_dirs().sort_stats('tottime').print_stats(5) + +print("================ SPIKE-SYNC COMPUTATIONS ================") +print(" MULTIVARIATE DISTANCE") +cProfile.run('spk.spike_sync_multi(spike_trains)', 'performance.stat') +p = pstats.Stats('performance.stat') +p.strip_dirs().sort_stats('tottime').print_stats(5) + +print(" MULTIVARIATE PROFILE") +cProfile.run('spk.spike_sync_profile_multi(spike_trains)', 'performance.stat') +p = pstats.Stats('performance.stat') +p.strip_dirs().sort_stats('tottime').print_stats(5) diff --git a/examples/profiles.py b/examples/profiles.py new file mode 100644 index 0000000..05494bd --- /dev/null +++ b/examples/profiles.py @@ -0,0 +1,66 @@ +""" profiles.py + +Simple example showing some functionality of distance profiles. + +Copyright 2015, Mario Mulansky <mario.mulansky@gmx.net> + +Distributed under the BSD License +""" + + +from __future__ import print_function + +import pyspike as spk + +spike_trains = spk.load_spike_trains_from_txt("PySpike_testdata.txt", + edges=(0, 4000)) + +##### ISI PROFILES ####### + +# compute the ISI profile of the first two spike trains +f = spk.isi_profile(spike_trains[0], spike_trains[1]) + +# ISI values at certain points +t = 1200 +print("ISI value at t =", t, ":", f(t)) +t = [900, 1100, 2000, 3100] +print("ISI value at t =", t, ":", f(t)) +print("Average ISI distance:", f.avrg()) +print() + +# compute the multivariate ISI profile +f = spk.isi_profile_multi(spike_trains) + +t = 1200 +print("Multivariate ISI value at t =", t, ":", f(t)) +t = [900, 1100, 2000, 3100] +print("Multivariate ISI value at t =", t, ":", f(t)) +print("Average multivariate ISI distance:", f.avrg()) +print() +print() + +# for plotting, use the get_plottable_data() member function, see plot.py + + +##### SPIKE PROFILES ####### + +# compute the SPIKE profile of the first two spike trains +f = spk.spike_profile(spike_trains[0], spike_trains[1]) + +# SPIKE distance values at certain points +t = 1200 +print("SPIKE value at t =", t, ":", f(t)) +t = [900, 1100, 2000, 3100] +print("SPIKE value at t =", t, ":", f(t)) +print("Average SPIKE distance:", f.avrg()) +print() + +# compute the multivariate SPIKE profile +f = spk.spike_profile_multi(spike_trains) + +# SPIKE values at certain points +t = 1200 +print("Multivariate SPIKE value at t =", t, ":", f(t)) +t = [900, 1100, 2000, 3100] +print("Multivariate SPIKE value at t =", t, ":", f(t)) +print("Average multivariate SPIKE distance:", f.avrg()) |