Abstraction layer API

The abstraction layer is intended to provide explicit mathematical descriptions of any components used in a neuronal network model, where such components may be neuron models, synapse models, synaptic plasticity algorithms, connectivity rules, etc.

The abstraction layer therefore has a modular structure, to support different types of components, and allow extensions to the language. The current modules are:

dynamics:
for describing hybrid dynamical systems, whose behaviour is governed both by differential equations and by discontinuous events. Such systems are often used to model point neurons, synapses and synaptic plasticity mechanisms.
connectionrule:
a module containing several “built-in” connectivity rules (‘all-to-all’, etc.).
randomdistribution:
a module for specifying random distributions.

Common types

Mathematics

Mathematical expressions are stored in Sympy objects throughout the Python NineML library. However, they are typically constructed by passing a string representation to a derived class of the Expression class ( e.g. Trigger, Alias). The Sympy string parsing has been slightly extended to handle the ANSI-C-based format in the NineML specification, such as using the caret symbol to signify raising to the power of (Sympy uses the Python syntax of ‘**’ to signify raising to the power of), e.g:

(3 * B + 1) * V ^ 2

Note

Currently, trigonometric functions are parsed as generic functions but this is planned to change in later versions of the library to use in-built Sympy functions. For the most part this will not have much effect on the represented expressions but in some cases it may prevent Sympy’s solving and simplifying algorithms from making use of additional assumptions.

dynamics module

Ports

Time derivatives

Transitions

connectionrule module

randomdistribution module