""" Compute distances of large sets of spike trains for performance tests Copyright 2015, Mario Mulansky Distributed under the BSD License """ from __future__ import print_function import pyspike as spk from datetime import datetime import cProfile import pstats # in case you dont have the cython backends, disable the warnings as follows: # spk.disable_backend_warning = True 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 range(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)