summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples')
-rw-r--r--examples/performance.py65
-rw-r--r--examples/profiles.py66
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())