Cargando…

CyNEST: a maintainable Cython-based interface for the NEST simulator

NEST is a simulator for large-scale networks of spiking point neuron models (Gewaltig and Diesmann, 2007). Originally, simulations were controlled via the Simulation Language Interpreter (SLI), a built-in scripting facility implementing a language derived from PostScript (Adobe Systems, Inc., 1999)....

Descripción completa

Detalles Bibliográficos
Autores principales: Zaytsev, Yury V., Morrison, Abigail
Formato: Online Artículo Texto
Lenguaje:English
Publicado: Frontiers Media S.A. 2014
Materias:
Acceso en línea:https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3953856/
https://www.ncbi.nlm.nih.gov/pubmed/24672470
http://dx.doi.org/10.3389/fninf.2014.00023
_version_ 1782307414688661504
author Zaytsev, Yury V.
Morrison, Abigail
author_facet Zaytsev, Yury V.
Morrison, Abigail
author_sort Zaytsev, Yury V.
collection PubMed
description NEST is a simulator for large-scale networks of spiking point neuron models (Gewaltig and Diesmann, 2007). Originally, simulations were controlled via the Simulation Language Interpreter (SLI), a built-in scripting facility implementing a language derived from PostScript (Adobe Systems, Inc., 1999). The introduction of PyNEST (Eppler et al., 2008), the Python interface for NEST, enabled users to control simulations using Python. As the majority of NEST users found PyNEST easier to use and to combine with other applications, it immediately displaced SLI as the default NEST interface. However, developing and maintaining PyNEST has become increasingly difficult over time. This is partly because adding new features requires writing low-level C++ code intermixed with calls to the Python/C API, which is unrewarding. Moreover, the Python/C API evolves with each new version of Python, which results in a proliferation of version-dependent code branches. In this contribution we present the re-implementation of PyNEST in the Cython language, a superset of Python that additionally supports the declaration of C/C++ types for variables and class attributes, and provides a convenient foreign function interface (FFI) for invoking C/C++ routines (Behnel et al., 2011). Code generation via Cython allows the production of smaller and more maintainable bindings, including increased compatibility with all supported Python releases without additional burden for NEST developers. Furthermore, this novel approach opens up the possibility to support alternative implementations of the Python language at no cost given a functional Cython back-end for the corresponding implementation, and also enables cross-compilation of Python bindings for embedded systems and supercomputers alike.
format Online
Article
Text
id pubmed-3953856
institution National Center for Biotechnology Information
language English
publishDate 2014
publisher Frontiers Media S.A.
record_format MEDLINE/PubMed
spelling pubmed-39538562014-03-26 CyNEST: a maintainable Cython-based interface for the NEST simulator Zaytsev, Yury V. Morrison, Abigail Front Neuroinform Neuroscience NEST is a simulator for large-scale networks of spiking point neuron models (Gewaltig and Diesmann, 2007). Originally, simulations were controlled via the Simulation Language Interpreter (SLI), a built-in scripting facility implementing a language derived from PostScript (Adobe Systems, Inc., 1999). The introduction of PyNEST (Eppler et al., 2008), the Python interface for NEST, enabled users to control simulations using Python. As the majority of NEST users found PyNEST easier to use and to combine with other applications, it immediately displaced SLI as the default NEST interface. However, developing and maintaining PyNEST has become increasingly difficult over time. This is partly because adding new features requires writing low-level C++ code intermixed with calls to the Python/C API, which is unrewarding. Moreover, the Python/C API evolves with each new version of Python, which results in a proliferation of version-dependent code branches. In this contribution we present the re-implementation of PyNEST in the Cython language, a superset of Python that additionally supports the declaration of C/C++ types for variables and class attributes, and provides a convenient foreign function interface (FFI) for invoking C/C++ routines (Behnel et al., 2011). Code generation via Cython allows the production of smaller and more maintainable bindings, including increased compatibility with all supported Python releases without additional burden for NEST developers. Furthermore, this novel approach opens up the possibility to support alternative implementations of the Python language at no cost given a functional Cython back-end for the corresponding implementation, and also enables cross-compilation of Python bindings for embedded systems and supercomputers alike. Frontiers Media S.A. 2014-03-14 /pmc/articles/PMC3953856/ /pubmed/24672470 http://dx.doi.org/10.3389/fninf.2014.00023 Text en Copyright © 2014 Zaytsev and Morrison. http://creativecommons.org/licenses/by/3.0/ This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) or licensor are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.
spellingShingle Neuroscience
Zaytsev, Yury V.
Morrison, Abigail
CyNEST: a maintainable Cython-based interface for the NEST simulator
title CyNEST: a maintainable Cython-based interface for the NEST simulator
title_full CyNEST: a maintainable Cython-based interface for the NEST simulator
title_fullStr CyNEST: a maintainable Cython-based interface for the NEST simulator
title_full_unstemmed CyNEST: a maintainable Cython-based interface for the NEST simulator
title_short CyNEST: a maintainable Cython-based interface for the NEST simulator
title_sort cynest: a maintainable cython-based interface for the nest simulator
topic Neuroscience
url https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3953856/
https://www.ncbi.nlm.nih.gov/pubmed/24672470
http://dx.doi.org/10.3389/fninf.2014.00023
work_keys_str_mv AT zaytsevyuryv cynestamaintainablecythonbasedinterfaceforthenestsimulator
AT morrisonabigail cynestamaintainablecythonbasedinterfaceforthenestsimulator