From cf91333e4aac74d96cca32042f4363e79e7ab051 Mon Sep 17 00:00:00 2001 From: Mario Mulansky Date: Tue, 14 Oct 2014 17:14:44 +0200 Subject: more docs --- Readme.md | 27 +++++++++++++++++++++++++++ pyspike/spikes.py | 3 ++- setup.py | 5 +---- 3 files changed, 30 insertions(+), 5 deletions(-) diff --git a/Readme.md b/Readme.md index a1b6e9e..55dbd33 100644 --- a/Readme.md +++ b/Readme.md @@ -64,6 +64,12 @@ If the time interval is provided (`time_interval is not None`), auxiliary spikes Furthermore, the spike trains are ordered via `np.sort` (disable this feature by providing `sort=False` as a parameter to the load function). As result, `load_spike_trains_from_txt` returns a *list of arrays* containing the spike trains in the text file. +If you load spike trains yourself, i.e. from data files with different structure, you can use the helper function `add_auxiliary_spikes` to add the auxiliary spikes at the beginning and end of the observation interval. +Both the ISI and the SPIKE distance computation require the presence of auxiliary spikes, so make sure you have those in your spike trains: + + spike_train = spk.add_auxiliary_spikes(spike_train, (T_start, T_end)) + # you provide only a single value, it is interpreted as T_end, while T_start=0 + spike_train = spk.add_auxiliary_spikes(spike_train, T_end) ## Computing bi-variate distances @@ -74,9 +80,30 @@ As result, `load_spike_trains_from_txt` returns a *list of arrays* containing th >For performance reasons, the PySpike distance functions do not check if the spike trains provided are indeed ordered. >Make sure that all your spike trains are ordered. >If in doubt, use `spike_train = np.sort(spike_train)` to obtain a correctly ordered spike train. +> +>Furthermore, the spike trains should have auxiliary spikes at the beginning and end of the observation interval. +>You can ensure this by providing the `time_interval` in the `load_spike_trains_from_txt` function, or calling `add_auxiliary_spikes` for your spike trains. +>The spike trains must have *the same* observation interval! ---------------------- +### ISI-distance + +The following code loads some exemplary spike trains, computes the dissimilarity profile ISI-distance of the first two spike trains, and plots it with matplotlib: + + import matplotlib.pyplot as plt + import pyspike as spk + + spike_trains = spk.load_spike_trains_from_txt("PySpike_testdata.txt", + time_interval=(0, 4000)) + isi_profile = spk.isi_distance(spike_trains[0], spike_trains[1]) + x, y = isi_profile.get_plottable_data() + plt.plot(x, np.abs(y), '--k') + print("ISI distance: %.8f" % isi_profil.abs_avrg()) + plt.show() + +The ISI-profile is a piece-wise constant function, there the function `isi_distance` returns an instance of the `PieceWiseConstFunc` class. +As above, this class allows you to obtain arrays that can be used to plot the function with `plt.plt`, but also to compute the absolute average, which amounts to the final scalar ISI-distance. ## Computing multi-variate distances diff --git a/pyspike/spikes.py b/pyspike/spikes.py index d390222..68c8bc1 100644 --- a/pyspike/spikes.py +++ b/pyspike/spikes.py @@ -20,7 +20,8 @@ def add_auxiliary_spikes(spike_train, time_interval): - time_interval: A pair (T_start, T_end) of values representing the start and end time of the spike train measurement or a single value representing the end time, the T_start is then assuemd as 0. Auxiliary spikes will be - added to the spike train at the beginning and end of this interval. + added to the spike train at the beginning and end of this interval, if they + are not yet present. Returns: - spike train with additional spikes at T_start and T_end. diff --git a/setup.py b/setup.py index 7c8e4e1..16a87ea 100644 --- a/setup.py +++ b/setup.py @@ -5,12 +5,9 @@ Handles the compilation of pyx source files Copyright 2014, Mario Mulansky """ -import os from distutils.core import setup from Cython.Build import cythonize -import numpy.distutils.intelccompiler - setup( - ext_modules = cythonize("pyspike/*.pyx") + ext_modules=cythonize("pyspike/*.pyx") ) -- cgit v1.2.3