Posts mit dem Label Neuralensemble werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Neuralensemble werden angezeigt. Alle Posts anzeigen

Donnerstag, 25. November 2010

Towards fast scientific python

Python seems to come of age in its role as an universal language for scientific computing. It already has a good standing in the computational neuroscience community. The Neural Ensemble project gathers some initiatives that use Python as the primary language for neuronal simulation and data analysis. Large simulator projects like Nest and NEURON adopted Python as their primary command language already a few years ago. The core of those simulators is still written in C/C++, which delivers good performance, but leads to interfacing issues with the command language. Those issues can be addressed by clever software design, but a pure-python implementation of a simulator is much more convenient regarding maintainability and extendibility. The problem is, that pure Python will lag behind the speed of compiled languages like C/C++ by an order of magnitude.

The Brian simulator is designed to be a simulator written entirely in python. To cope with the speed of C/C++-based simulators, Brian can generate compiled code from the python network model. This code can also be compiled for graphics processors (GPUs), which promise high speedups for computational problems that can be parallelized efficiently. The Brian developers describe how to do just that in their article on vectorized algorithms for neuronal simulations, which is one of my current favorite papers.

Today, and that was the initial motivation for this post, I came across the announcement for the new version of Theano, a compiler for evaluation mathematical expressions on CPUs and GPUs. I haven't tried it out yet, but it looks definitely promising. But the really interesting fact is that there is vivid development toward making Python not only an ubiquitous language for scientific computing (a goal which has largely been achieved already), but also an alternative in terms of performance to established software packages.

Without licence fees, and fully open source.

Donnerstag, 13. März 2008

Neural Ensemble

The Neuralensemble project brings together several efforts to make simulations of neurons easier. Currently, I spend most of my time working with the tools they created. Since a few days I have an account on their TRAC server, so I thought this is a good time to blog about it.

The project which got me into neuralensemble is PyNN , which provides a unified front end to several widely used neural simulators, e.g. NEURON, NEST and PCSIM. PyNN greatly facilitates setting up neural networks, because it provides an abstraction from simulator-specific languages. As the name suggests, it's written in Python, and lets you specify the network in Python, too.

For experiment design and analysis of simulated data there is Neurotools. It's written for PyNN (in Python), but can also be used independently from it. One of the most promising design goals is its ability to control large experiment sets, e.g. to systematically investigate the impact of certain parameters on network function. I'm sure every scientist who does computational modeling has written code to deal with this tasks at least once. Having a common API for this is a great thing.

Neuralensemble is a dynamic community which is still very open to all sorts of contributions. So if you're into modeling of neural networks, you should definitely give it a shot!