Talk DANA, Distributed (Asynchronous) Numerical & Adaptive computing framework

Presented by Nicolas Rougier in Scientific track 2010 on 2010/07/11 from 14:30 to 14:45 in room Dussane

DANA (Distributed (asynchronous) Numerical and Adaptive computing) is a python computing framework based on numpy and scipy libraries whose primary goals relate to computational neuroscience and artificial neural networks. However, this framework can be used in several different areas like physic simulations, cellular automata or image processing.

The computational paradigm supporting the DANA framework is grounded on the notion of a unit that is a set of arbitrary values that can vary along time under the influence of other units and learning. Each unit can be linked to any other unit (including itself) using a weighted link and a group is a structured set of such homogeneous units.

For example the game of life can be written very simply as follow:

>>> from dana import *
>>> G = (n,n)*Unit(u'''
       V = np.maximum(0,1.0-(N<1.5)-(N>3.5)-(N<2.5)*(1-V)) : bool
       N = self.V*np.array([[1, 1, 1], \
                            [1, 0, 1], \
                            [1, 1, 1]]) : sparse''')

G is now a group of (n,n) units, each of them having a single boolean value V whose value is computed according to V equation and where N designates a link from G to G (with specified connection kernel).

To simulate the game of life, one can then write:

>>> G.setup()
>>> G.V = rnd.randint(0,2,G.shape)
>>> for i in range(100):

In the example above, the link is static, but link could have also been made adaptive by defining the equation dN/dt. The dana framework offers a set of core objects to design and run such models with the possibilty to specify model equations (differentials or regular) links, link equations and to run them iteratively.

More information at:

DANA is mainly a thin layer on top of numpy that provide a framework for distributed numerical and adaptive computing. It has been first designed for artificial neural networks, but it can be used for other domains as well (cellular automaton, image processing and some physics simulation, see,, The adaptive part is very specific to neural networks and allow to adapt a connection from one group to the other using learning rules. Also, DANA is very close to brian (that is a neural network simulator for spiking neuron model) but DANA attempts to address a broader audience.

The page at explains what DANA can do in the case of the Game Of Life with the "old" version of DANA (different from the version above).