Code Monkey home page Code Monkey logo

pyspike's Introduction

PySpike

https://badge.fury.io/py/pyspike.png https://travis-ci.org/mariomulansky/PySpike.svg?branch=master

PySpike is a Python library for the numerical analysis of spike train similarity. Its core functionality is the implementation of the ISI-distance [1] and SPIKE-distance [2] as well as SPIKE-Synchronization [3]. It provides functions to compute multivariate profiles, distance matrices, as well as averaging and general spike train processing. All computation intensive parts are implemented in C via cython to reach a competitive performance (factor 100-200 over plain Python).

PySpike provides the same fundamental functionality as the SPIKY framework for Matlab, which additionally contains spike-train generators, more spike train distance measures and many visualization routines.

All source codes are available on Github and are published under the BSD_License.

Citing PySpike

If you use PySpike in your research, please cite our SoftwareX publication on PySpike:
Mario Mulansky, Thomas Kreuz, PySpike - A Python library for analyzing spike train synchrony, SoftwareX, (2016), ISSN 2352-7110, http://dx.doi.org/10.1016/j.softx.2016.07.006.

Additionally, depending on the used methods: ISI-distance [1], SPIKE-distance [2] or SPIKE-Synchronization [3], please cite one or more of the following publications:

[1]Kreuz T, Haas JS, Morelli A, Abarbanel HDI, Politi A, Measuring spike train synchrony. J Neurosci Methods 165, 151 (2007) [pdf]
[2]Kreuz T, Chicharro D, Houghton C, Andrzejak RG, Mormann F, Monitoring spike train synchrony. J Neurophysiol 109, 1457 (2013) [pdf]
[3]Kreuz T, Mulansky M and Bozanic N, SPIKY: A graphical user interface for monitoring spike train synchrony, J Neurophysiol, JNeurophysiol 113, 3432 (2015)

Important Changelog

With version 0.6.0, the spike directionality and spike train order function have been added.

With version 0.5.0, the interfaces have been unified and the specific functions for multivariate computations have become deprecated.

With version 0.2.0, the SpikeTrain class has been introduced to represent spike trains. This is a breaking change in the function interfaces. Hence, programs written for older versions of PySpike (0.1.x) will not run with newer versions.

Requirements and Installation

PySpike is available at Python Package Index and this is the easiest way to obtain the PySpike package. If you have pip installed, just run

sudo pip install pyspike

to install pyspike. PySpike requires numpy as minimal requirement, as well as a C compiler to generate the binaries.

Install from Github sources

You can also obtain the latest PySpike developer version from the github repository. For that, make sure you have the following Python libraries installed:

  • numpy
  • cython
  • matplotlib (for the examples)
  • nosetests (for running the tests)

In particular, make sure that cython is configured properly and able to locate a C compiler, otherwise PySpike will use the much slower Python implementations.

To install PySpike, simply download the source, e.g. from Github, and run the setup.py script:

git clone https://github.com/mariomulansky/PySpike.git
cd PySpike
python setup.py build_ext --inplace

Then you can run the tests using the nosetests test framework:

nosetests

Finally, you should make PySpike's installation folder known to Python to be able to import pyspike in your own projects. Therefore, add your /path/to/PySpike to the $PYTHONPATH environment variable.

Examples

The following code loads some exemplary spike trains, computes the dissimilarity profile of the ISI-distance of the first two SpikeTrain objects, 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",
                                              edges=(0, 4000))
isi_profile = spk.isi_profile(spike_trains[0], spike_trains[1])
x, y = isi_profile.get_plottable_data()
plt.plot(x, y, '--k')
print("ISI distance: %.8f" % isi_profile.avrg())
plt.show()

The following example computes the multivariate ISI-, SPIKE- and SPIKE-Sync-profile for a list of spike trains loaded from a text file:

spike_trains = spk.load_spike_trains_from_txt("PySpike_testdata.txt",
                                              edges=(0, 4000))
avrg_isi_profile = spk.isi_profile(spike_trains)
avrg_spike_profile = spk.spike_profile(spike_trains)
avrg_spike_sync_profile = spk.spike_sync_profile(spike_trains)

More examples with detailed descriptions can be found in the tutorial section.


The work on PySpike was supported by the European Comission through the Marie Curie Initial Training Network Neural Engineering Transformative Technologies (NETT) under the project number 289146.

Python/C Programming:
  • Mario Mulansky
Scientific Methods:
  • Thomas Kreuz
  • Daniel Chicharro
  • Conor Houghton
  • Nebojsa Bozanic
  • Mario Mulansky

pyspike's People

Contributors

mariomulansky avatar ignatenkobrain avatar immanuelsamuel avatar dmeliza avatar jonathanjouty avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.