The NESTML modeling language

https://raw.githubusercontent.com/nest/nestml/master/doc/fig/neuron_illustration.svg
https://raw.githubusercontent.com/nest/nestml/master/doc/fig/synapse_illustration.svg

NESTML is a domain-specific language for neuron and synapse models. These dynamical models can be used in simulations of brain activity on several platforms, in particular the NEST Simulator.

NESTML combines:

  • an easy to understand, yet powerful syntax;

  • a flexible processing toolchain, written in Python;

  • good simulation performance by means of code generation (C++ for NEST Simulator).

To see what NESTML looks like, please see the models library. The library contains a variety of models from standard integrate-and-fire to a family of biophysical, Hodgkin-Huxley type neurons, as well as several synaptic plasticity models such as spike-timing dependent plasticity (STDP) variants and third-factor plasticity rules.

PyNESTML is the Python-based toolchain for the NESTML language: it parses the model and performs code generation. Modify PyNESTML to add language elements such as new predefined functions, or to add new target platforms in the form of Jinja templates.

Internally, differential equations are analyzed by the associated ODE-toolbox, to compute an exact solution if possible or to select an appropriate numeric solver otherwise.

Tutorials

Creating neuron models

  • Izhikevich tutorial

    Learn how to write the Izhikevich spiking neuron model in NESTML.

  • Spike-frequency adaptation

    Spike-frequency adaptation (SFA) is the empirically observed phenomenon where the firing rate of a neuron decreases for a sustained, constant stimulus. Learn how to model SFA using threshold adaptation and an adaptation current.

  • Active dendrite tutorial

    Learn how to model a dendritic action potential in an existing NESTML neuron.

  • Ornstein-Uhlenbeck noise

    Implement the Ornstein-Uhlenbeck process in NESTML and use it to inject a noise current into a neuron.

Creating synapse models

  • STDP windows

    An STDP window describes how the strength of the synapse changes as a function of the relative timing of pre- and postsynaptic spikes. Several different STDP model variants with different window functions are implemented.

  • Triplet STDP synapse

    A triplet STDP rule is sensitive to third-order correlations of pre- and postsynaptic spike times, and accounts better for experimentally seen dependence on timing and frequency.

  • Dopamine-modulated STDP synapse

    Adding dopamine modulation to the weight update rule of an STDP synapse allows it to be used in reinforcement learning tasks. This allows a network to learn which of the many cues and actions preceding a reward should be credited for the reward.

Getting help

Report bugs and request features

NEST draws its strength from the many people that use and improve it. We are happy to consider your contributions (e.g., new models, bug or documentation fixes) for addition to the official version of NEST.

If you find an error in the code or documentation or want to suggest a feature, submit an issue on GitHub at https://github.com/nest/nestml.

Make sure to check that your issue has not already been reported there before creating a new one.

Mailing list

The NEST users mailing list is intended to be a forum for questions on the usage of NEST, the exchange of code and general discussions about NEST. The philosophy is that all users profit by sharing their experience. All NEST core developers are subscribed to this list and will participate in the discussions as far as time allows.

By subscribing to the mailing list you will also get notified of all NEST related events!

Before submitting a question, please take a look at our guidelines for the NEST mailing list.

Acknowledgements

This software was initially supported by the JARA-HPC Seed Fund NESTML - A modeling language for spiking neuron and synapse models for NEST and the Initiative and Networking Fund of the Helmholtz Association and the Helmholtz Portfolio Theme Simulation and Modeling for the Human Brain.

This software was developed in part or in whole in the Human Brain Project, funded from the European Union’s Horizon 2020 Framework Programme for Research and Innovation under Specific Grant Agreements No. 720270, No. 785907 and No. 945539 (Human Brain Project SGA1, SGA2 and SGA3).

Neuron and synapse illustration: copyright Angela Fischer <a.fischer@fz-juelich.de>, INM-6, Forschungszentrum Jülich GmbH (CC-BY-SA)