Friday, February 10, 2012

Neo, a base library for handling electrophysiology data in Python

We are proud to announce the 0.2.0 release of Neo, a Python library for working with electrophysiology data, whether from biological experiments or from simulations.

A considerable problem in neurophysiology is the huge number of different, largely proprietary, data formats, which hinders data sharing and can make it difficult for researchers to use the best analysis methods, if the analysis software they wish to use does not support the data formats provided by their data acquisition system.

For cross-platform analysis, the field of neurophysiology is dominated by Matlab, but there is also a small but growing use of Python, perhaps boosted by the success Python has had in the neighbouring field of computational neuroscience. Certainly Python has a major cost advantage compared to Matlab, especially for larger-scale analyses on cluster computers, and as a popular, general purpose programming language makes it easy to tie data analysis into larger workflows including web- and database-access, modelling and simulation, and visualisation.

Neo arose from the realisation by a number of different groups developing Python software for the analysis and databasing of neurophysiology data that we were each independently reimplementing much of the same functionality. Although there is much scope for merging our analysis and visualization code, we decided that the best place to start was to develop standard data structures for electrophysiology, building on NumPy arrays, and to develop input-output modules to allow us to read from a large number of different electrophysiology data formats (and to write to a somewhat smaller subset, including HDF5).

This decision, to exclude data analysis and visualisation from the scope of Neo and to focus only on data representation and IO, makes Neo fairly lightweight as a dependency for other projects, requiring only NumPy and the Quantities package. The software packages OpenElectrophy, NeuroTools, Helmholtz, and PyNN, together with the database tools developed by the German Neuroinformatics Node, are all now in the process of moving to Neo as the basis of their data structures and for their IO layers. We would like to encourage the developers of other Python packages that work with electrophysiology data to consider adopting Neo, which will give you access to a large number of data formats and increase the interoperability of the tools in this domain. If you have Python support for a data format that is not currently available in Neo, we'd also like to talk to you!

Modified BSD
from PyPI or from the INCF Software Center

No comments: