Releases: nest/nest-simulator
NEST 2.16.0
WARNING: This version of NEST is affected by issue #1394, which can lead to incorrect simulation results under certain circumstances. Please double-check all simulation results obtained with this version and if in doubt, re-run using a different split between MPI processes and threads. The description of the issue contains more details and will be updated when new information becomes available.
NEST 2.16.0 is the result of 89 merged pull requests by 39 developers since NEST 2.14.0 which was released on 20th of October 2017.
This release contains many bug fixes and improvements. Most notably it brings a new infrastructure for the storage of connections, which reduces the memory consumption and network build times (Jordan et al., 2018).
and extends the rate model framework for novel use-cases (Senden et al., 2018).
Enhancements
Models
- #492: Erfc neuron model
- #671: Adding inhomogeneous poisson generator model
- #845: Allow rectangular and box masks to be rotated
- #849: Aeif psc delta 2 continued
- #858: Extended rate-model framework
- #895: New neuronal population model gif_pop_psc_exp
- #901: Add iaf_psc_exp_ps_lossless model by Krishnan et al
- #966: Fix #825: Improve sign check
- #980: Added parameter to get/set function in tanh_rate model
Installation
- #789: Major change in the installation and testing of packages using multiple python versions
- #890: Add 'install-nodoc' target for make
- #1008: Do not use the -Wall option on K computer
Documentation
Kernel
- #812: Record conductance from aeif_cond_beta_multisynapse model
- #823: Add gamma kernel in topology
- #836: Allow negative exponential distributions (fixes #835)
- #920: NEST 5g simulation kernel
Infrastructure
PyNEST
Fixed Bugs
Models
- #846: Fixes for the gif multisynapse and quantal_stp model
- #860: Fix for #859: Added setting of wfr parameter
- #886: Fix copy/paste bug in copy constructor of Archiving_Node
- #944: Better documentation of hh_cond_exp_traub and Brette-2007-compatible refractory time
- #978: keep conductance positive in gif_cond_exp model
Installation
- #870: Bug fixed on cmake with user modules
- #871: Fixing issue on linking user module libraries with recent GCC versions
- #897: Update NEST Homebrew installation instructions to changes in Homebrew…
- #915: Fix issue 830 - Make fails with UnicodeDecodeError
- #953: Update help generation for MyModule and fix Py27-unicode
Documentation
Kernel
- #840: Fix handling of PyNEST and SLI commandline arguments
- #887: Fix incorrect error message when connecting with bad delay
- #903: Support linking against topology when building extension modules
- #924: Numerical imprecision stdp
- #963: Fixed a bug in the SecondaryEvent delivery
- #1003: Resize Connector vectors when adding connection models
Infrastructure
- #857: Improve handling of output vars from FindXXX.cmake
- #905: Bump version requirement for CMake to support all features, we actually use
- #917: cmake -Dwith-ltdl= fix
- #983: fixed function invocation in hpc_benchmark.py script
- #984: run nosetests with the Python interpreter (2 vs. 3) that was requeste…
PyNEST
- #840: Fix handling of PyNEST and SLI commandline arguments
- #864: Fix test_disconnect by converting filter object to list for len
- #900: Fix Python3 print problem in some tests.
- #947: Remove assertion that argv[0] is a non-empty string in slistartup
Maintenance
Models
- #995: fixed minor issue in WeightRecorderEvent
- #998: Shuts off the warnings from LLVM/Clang 4.0.0
- #1007: Clean up modification of dynamic recordables map in models
Installation
Interpreter
- #948: Obtain help pager information via SLI and handle failures better
- #976: Fix SLI sleep function (fixes #973)
Documentation
- #852: Adapt tarball name in documentation to GitHub convention
- #855: Correct a few typos in documentation comments
- #878: Remove outdated information and redirect to NESTML
- #885: Reinstating code snippets in the Topology User Manual
- #891: Updating import instructions for scipy, sklearn - issue #848
- #912: Fixed doc in GetDefaults
- #913: Return help text
- #927: Documentation of inhomogeneous_poisson_generator
- #930: Updated Topology User Manual for NEST 2.16.
- #943: Added warning against bad use of Rank()
- #950: Fix typo for Hodgkin-Huxley model
- #964: Nest developer space: Description for conversion to 5g
- #965: Fix #949: NEST help files (hlp, html) should end with newline
- #987: README: minor typographic
- #1004: Fix compatibility issues with Python 2
Kernel
- #850: Make Connector properties and growth factor configurable
- #856: Improved structure of secondary event types
- #888: Issue error message when attempting to set an invalid resolution
- #898: Make sure that Run and Cleanup are called after Prepare
- #935: Fix typo in SimulationManager status output
- #956: Fix #954: Avoid the use of unrelated typenames to distinguish template classes
- #962: Improve documentation on setting extent and center (addresses #961)
- #993: Fix 990 / Compilation issues with C++11 and libc++
- #999: Adjust send_recv_count_target_data_
- #1000: Removing pointless comparison with uint
##...
NEST 2.14.0
NEST v2.14.0 contains 705 repository commits by 33 developers since v2.12.0.
This release is mainly a bug fix release, but also contains some new features, most notably a framework for the simulation of rate neurons (Hahne et al., 2017).
New features
- Multimeter now supports
offset
for recording (#669, #670) - Topology now supports elliptical masks and a function to obtain GIDs inside masked areas (#664)
- Currents generated by stimulating devices can now be recorded (#658, #663, #720, #730, #733)
- Split
Simulate
intoPrepare
,Run
andCleanup
(#650, #692, #778, #803) - New static synapse
benoulli_synapse
with probabilistic transmission (#747) - The global id can now be removed from the filename of recording devices (#760)
Documentation, tests and web resources
- Better download page for NEST website (#689)
- Make
help
andhelpdesk
more robust when used from Python and Jupyter notebooks (#688) - Revised content in the [Introduction to PyNEST}(http://nest-simulator.org/introduction-to-pynest/) (#661)
- Installation documentation now points out that install path should be absolute (#561, #701)
- Topology tests are now automatically run (#302, #705)
- Small fixes for spelling errors (#729)
- Added example script for structural plasticity (#753)
- Updated testsuite readme file (#752)
- Properly set the environment variables for
do_tests.sh
(#819)
Bug fixes
- Throw exception when connecting fails (#693)
- Fix NumPy test for
quantal_stp_synapse
(#680, #681) - Fix crash with wrong data types in
SetDefaults
for connections (#545, #704) music_event_out_proxy
now also works correctly in multi-threaded simulations (#696, #710)- Fixed bug in
CopyModel
related to the delivery of secondary events (#708, #711) - GetConnections work correctly now also for _hpc synapses (#714, #521)
ResetKernel
now properly ensures thatoff_grid_spiking
is reset (#716)Name
insertion is now done in thread-serial contexts only and all plain strings for property handling are replaced withName
objects (#719, #722, #724)- Fix OSX clang compilation problems and warnings (#74, #732, #729)
- Fix possible deadlock in neuron update loop in multi-threaded code (#718, #734)
- Moved
check_synapse_params
to specific synapse classes and add tests for synapse parameter check (#735, #736, #739) - Files starting with
.#
are now excluded from help generation (#802) - Time in
step_current_generator
is now internally represented in steps (#740, #815) iaf_psc_exp_ps
now handle simultaneous spikes independently (#368, #810)- Module installation is now prohibited after
CopyModel
(#746, #804) - Fix execution of MPI-enabled tests for structural plasticity (#791, #799)
- Compile-time variable
CMAKE_NEST_PREFIX
now uses absolute path (#749, #783, #796) - Fix
bad_alloc
exception (#644, #787) - Prohibit
DataConnect
in multi-threaded mode as correct connectivity cannot be guaranteed here (#776) - Skip
test_crash_or_die.sli
if NDEBUG is set as this does not work (#272, #770) - Fix usage of
precision
inspin_detector
and documentation (#767) - Fix PyNEST helper functions to make them work again (#688, #766)
- Allow compilation with FCC by removing
const
qualifier (#755) - Environment variables are now properly set for
do_tests.sh
(#816, #819) - Fixed various typos in PyNEST documentation (#816)
- Ensure number of vacant synaptic elements is always >= 0 (#818)
Under the hood
- Changed all files to comply to code style checks. Especially all single line conditionals and loops are now enclosed in curly brackets (#691)
- Remove duplicate constructors for
long
&double
fromTime
units (#699) - Support for custom connector models (#683, #686)
- Avoid divisions/calulcation of steps in the
Time
class (#685, #706) - Secondary events now contain a time stamp (#707, #709)
- CPPCHECK is activated in the continuous integration by ignored for now (#668)
- Removes
binary_neuron_impl.h
in favor of code inbinary_neuron.h
(#813) - Change in
GetStructrualPlasticityStatus
format (#775) - Remove patching of Python's
warning
function (#662, #769) - Moved sanity check for structural plasticity vacant elements to decay function (#827)
- Fixes for using a relative install prefix (#828)
- Properly reduce
primary_end_
marker for heterogeneous connections (#832, #834) - Fix problem with
iaf_psc_delta_canon
in connection withtest_dcgen_vs_I_e.sli
(#822) - Refactor ConnectionGenerator Interface and improve documentation (#206, #309, #483)
Build system and continuous integration
- Skipped SLI tests are now marked as skipped, not success (#713)
- Skip help generation without Python or Python versions prior to 2.7.8 (#678, #715, #748, #751)
- Circumvent negative max_width in Travis log parser (#731)
- Ensure correct options for
sed
are used on BSD-based systems (#713, #744) - Fix typo in
check_code_style.sh
, which lead to aborting the continuous integration run in some cases (#814) - PyNEST test result parsing is now not confused anymore by NEST output (#762, #788)
- Use the minimal image
trusty
in TravisCI with recommended group option (#757, #785)
Contributors since 2.12.0
- Shailesh Appukuttan
- Milena M. Carvalho
- David Dahmen
- Rajalekshmi Deepu
- Sandra Diaz
- Jochen Martin Eppler
- Tanguy Fardet
- Steffen Graber
- Jan Hahne
- Michael Hoff
- Tammo Ippen
- Jakob Jordan
- David Kappel
- Itaru Kitayama
- Susanne Kunkel
- Sepehr Mahmoudian
- Jessica Mitchell
- Håkon Mørk
- Abigail Morrison
- Eric Müller
- Alexander Peyser
- Hans Ekkehard Plesser
- Maximilian Schmidt
- Jannis Schuecker
- Martin Schulze
- Till Schumann
- Ankur Sinha
- Dennis Terhorst
- Guido Trensch
- Hünkar Can Tunç
- Stine Brekke Vennemo
- Philipp Weidel
- Barna Zajzon
Citation
If you use this version of NEST, please cite it as Peyser, Alexander et al. (2017). NEST 2.14.0. Zenodo. 10.5281/zenodo.882971. The full citation is available in different formats on Zenodo.
NEST 2.12.0
NEST 2.12.0 contains 1763 repository commits from 169 pull requests by 40 developers since v2.10.0.
New models, tests and examples
- Symmetric STDP model
vogels_sprekeler_synapse
(Vogels et al., 2011; #218) - Support for inhibitory STDP (#284)
- New neuron model
aeif_cond_beta_multisynapse
using GSL ODE solver (#439) - Generalized integrate-and-fire (GIF) neuron models
gif_psc_exp
,gif_psc_exp_multisynapse
,gif_cond_exp
,gif_cond_exp_multisynapse
(#261, #516, #579) weight_recorder
for recording weights of plastic synapses (#497)- Added current based adaptive exponential I&F neurons
aeif_psc_alpha
,aeif_psc_exp
(#513) - Implement the full NMDA model for
ht_neuron
(#491) - Added cubic milimeter microcircuit model for PyNEST (#451)
- New PyNEST example
sensitivity_to_perturbation.py
(#198) - New test and improvements for handling the
multiplicity
property ofEvent
s (#255) - Added sigmoid growth curve for structural plasticity (#476)
General improvements
- Support for two-dimensional parameter arrays in
Connect
(#465) - Added a
vim
syntax highlighing file (#253) - PyNEST raster plot example now uses pandas if available (#422)
- New environment variables
SLI_PATH
for adding to the SLI search path andNEST_MODULES
for loading modules on startup (#479) - New flag
supports_precise_spikes
for models supporting off-grid events (#475) Connect
now supports a new keywordsymmetric
to also add a reverse connection in a single run, synapses which require this now have therequires_symmetric
flag set (#315, #524)- Better support for Python 3 and improved build system support for Python-less builds (#313, #342, #452, #620, #631, #634)
- Cleaned up and more informative logging during
Simulate
(#269) do_tests.sh
prints out the error message in case a test fails (#515)
Documentation and example changes
- Extended documentation of SLI
regexec
function (#251) - Improve documentation of current filtering in
iaf_psc_exp
(#276) - Fix and clean up
hpc_benchmark.sli
example (#289) - Re-format all PyNEST code to be PEP8 compliant and use NumPy style docstrings (#263, #337)
- Add documentation on heterogenenous MPI environments (#335)
- Add information on how to contribute (#320)
- Added link to NEST Contributor Agreement to documentation index (#235)
- Added documentation for synaptic elements and growth curves (#219)
- Added more information about spike generation and precision (#364)
- Documentation of exact integration method used in current based models (#383)
- The toplevel
README.md
now contains all general information about NEST (#423) - Added documentation on using
gcc
on BlueGene/Q (#447) - Documentation improvement to
ht_neuron
and minor code prettification (#387) - Updates to Eclipse instructions (#444)
- Extended
README.md
s for testsuite and PyNEST (#503) - Added info on static linking against non-standard allocators on BG/Q (#489)
- Add information on filing bugs to contribution guidelines and development documentation (#548, #549)
- Added full user documentation in markdown (#292, #371)
- Move gap junction examples to more appropriate directory (#594)
- More information on conventions for naming models (#611)
- Extended gap junction documentation in markdown and SLI docstrings (#608, #623)
- Added information on spike exchange to documentation (#612)
- Updated installation documentation (#615)
- Converted NEST by example book chapter to Jupyter notebook and updated for 2.12.0 (#602)
- Replaced
iaf_neuron
in docstrings and examples byiaf_psc_alpha
(#626)
Performance
- Improve
GetConnections
performance up to 118 times (#490) - Improved performance of threaded connection generation for large networks up to 80 times (#485)
- Improved connection parameter skipping with connection rule
all_to_all
(#568)
Build system and continuous integration
- Rewrite build system to use CMake instead of autotools (#213, #234, #318, #326, #350)
- Add CMake option for colored
gcc
output (#378) - TravisCI now checks for PEP8 and counts compiler warnings (#296, #298)
- Reduce the number of build jobs from a whole matrix to only dependent jobs (#409, #640)
- Improved logging and more robust parsing of TravisCI log (#395, #413)
- Add automatic testing for MUSIC (#471)
- Better handling of precise spike times in
spike_detector
(#446)
Bug fixes
- Fixed shadowing of
connect()
function inSPBuilder
(#216) - Fix the hard coded decay of synaptic elements in the structural plasticity framework (#215)
- Fix for importing
readline
with Anaconda Python (#209) - Bug fix for
icpc
compiler (#232) - Syntax fixes for relative imports in Python 3 (#233)
- Fix uninitialized variables in multisynapse models (#283)
- Fix compilation on K computer (#288)
- Fix and document the usage of
nosetests
for the PyNEST testsuite (#321) - Topology now skips non-local potential targets correctly (#282)
- Properly handle precise times in
spike_generator
(#327) - Fix copyright header test to exclude backup files (#340)
- Remove PyNEST's link dependency on
libreadline
(#323) - Fix
MyModule
example build and install problems (#328) - Fixed order of setting parameters for synapse models (#333)
- Fix C++11 compilation error due to stream conversion (#389)
- Fix handling of params dictionary in Connect (#441)
- Improve numerical stability of some tests (#466)
- Record correct quantity for post-synaptic current in
iaf_psc_alpha
(#500) - Use correct unit (ms) for printing MUSIC acceptable latency (#535)
- Fixing encoding issues in PyNEST (#536)
- Fix conversion from heterogeneous to homogeneous connector when deleting last synapse of a type (#566)
- Fix refractoriness handling for adaptive exponential I&F neuron models and
hh_cond_exp_traub
(#575, #590) - Replace
operator<<
with regular function to avoid issues with K compiler (#587) - Fix bug in
sp_disconnect()
that could lead to heterogeneous connectors not being used any more during spike delivery (#597) - Fixed desynchronization of MPI processes due to waveform relaxation (#607)
- Fixed
get_targets()
for structural plasticity (#604) - Exception when structural plasticity and multiple threads are used (#629)
- Added check on threading in two PyNEST tests which require it (#642)
- V-bounded implementation for adaptive exponential I&F neuron and fix for Delta_T=0 (#474)
- Fix for usage of gap junctions without waveform relaxation (#655)
ConnectLayers
now connects thread siblings of devices properly (#666)
Under the hood
- Split and refactor NEST
Scheduler
andNetwork
classes into separate*Manager
classes according to their responsibility (#205) - Replaced internal C++ variable U0_ by E_L (#236)
- Improvements of the framework for iterative solutions (#273)
- Re-format all code files to have a maximal line width of 80 characters (#297)
- Move inline functions from
*.cpp
to*_impl.h
(#397) - Additional timers and local spike counter for profiling and performance measurements (#434)
- Removed
*_t
aliases for built-in C++ data types (#454) - Rename
Parameter
class in Topology toTopologyParameter
(#408) - Add vera++ config file to repository (#562)
- Removed plural forms of certain parameter names (#551)
- New help generator re-written in PyNEST replaces the old SLI generator (#464)
- Better handling of exceptions during update (#542)
Changed behavior and removed functionality
- Raise exceptions on incommensurate times (#265)
- Unified synaptic recordable names for current based models (#502)
- Added protection against probabilistic wiring to spike_detector (#560)
The long deprecated functions ConvergentConnect
, DivergentConnect
, RandomConvergentConnect
, RandomDivergentConnect
and FindConnections
were removed in favor of the new unified Connect
framework. See the documentation on connection management for details on how to convert your code.
Deprecated functions and models
The following models will be removed in the next major release:
iaf_neuron
, please useiaf_psc_alpha
insteadsubnet
,siblingcontainer
andproxynode
will be removed without replacementaeif_cond_alpha_RK5
, please use plainaeif_cond_alpha
instead
Due to the upcoming removal of the subnet
model and the concept of a hierarchical network storage, the following functions are also marked as deprecated and will be removed together with the subnet
model in the next major release:
LayoutNetwork
,GetNetwork
BeginSubnet
,EndSubnet
,ChangeSubnet
,CurrentSubnet
GetNodes
,GetLeaves
,GetChildren
GetLID
The remaining functionality of DataConnect
over normal Connect
will be integrated into the normal Connect
function. Thus DataConnect
is marked as deprecated and will be removed once Connect
has the same feature set.
For all deprecated models and functions, a corresponding message will be printed upon usage (#580).
Contributors since v2.10.0
- Alcazar, Jesus Garrido
- Bachmann, Claudia
- Blundell, Inga
- Bos, Hannah
- Breitwieser, Oliver
- Deepu, Rajalekshmi
- Diaz, Sandra
- Djurfeldt, Mikael
- Eppler, Jochen Martin
- Fardet, Tanguy
- Golosio, Bruno
- Graber, Steffen
- Hagen, Espen
- Hahne, Jan
- Ippen, Tammo
- Jordan, Jakob
- Kunkel, Susanne
- Lepperød, Mikkel Elle
- Mahmoudian, Sepehr
- Morrison, Abigail
- Muller, Eilif Benjamin
- Mørk, Håkon
- Peyser, Alexander
- Plesser, Hans Ekkehard
- Plotnikov, D...
v2.10.0
NEST 2.10.0 contains 303 repository commits by 25 developers since v2.8.0. The most notable changes over v2.8.0 are:
- Support for simulations of gap junctions (see Jan Hahne et al., 2015)
- Framework for structural plasticity (see Markus Butz et al., 2013 and Markus Butz et al., 2014)
- Full support for the K computer (just in case you found one under your Christmas tree ;-))
New features and functionality
- To group connections that belong together, synapse models may now contain a numeric label, specified at creation time.
GetConnections
can select on this label. - Array parameters in calls to
Connect
can now also be specified as lists and tuples.
New models and model updates
- New Tsodyks synapse model with common properties.
- New STDP triplet synapse (see Pfister & Gerstner, 2006).
- All precise models are now derived from
ArchivingNode
to support STDP connections. parrot_neuron
now supports connections onto port 0 and 1.- Added call to
set_spiketime
to make STDP work with this model.
Documentation and example improvements
- Updated examples for the use of CSA in NEST.
- Cleaned up
hpc_benchmark.sli
, which now also randomizes initial membrane potentials. - Updated online documentation on kernel parameters, including rng seeds.
- New tests for
parrot_neuron_ps
andparrot_neuron
and for STDP between parrot neurons
Bug fixes
parrot_neuron_ps
now saves times of outgoing spikes.binary_neuron
now records spike times.pp_pop_psc_delta
does not support STDP anymore (as this was not sensible).- binary neurons and non-binary neurons cannot be connected anymore (which was possible but meaningless)
- MUSIC now behaves correctly upon ResetKernel.
- PyNEST now correctly handles changes to argv made by MPI or MUSIC during initialization.
Under the hood
- The PyNEST high-level API was split into multiple files and submodules are loaded dynamically.
- Improved tools for static analysis and automatic formatting of code in the CI and locally.
- Fix errors in models when non default tics_per_ms setting is used.
Contributors since v2.6.0
- Hannah Bos
- Rajakelshmi Deepu
- Moritz Deger
- Sandra Diaz
- Mikael Djurfeldt
- Jochen Martin Eppler
- Jan Hahne
- Moritz Helias
- Tammo Ippen
- Susanne Kunkel
- Frank Michler
- Janne Morén
- Abigail Morrison
- Alexander Peyser
- Hans Ekkehard Plesser
- Maximilian Schmidt
- Alex Seeholzer
- Teo Stocco
Citation
If you use this version of NEST, please cite it as Bos, Hannah et al. (2015). NEST 2.10.0. Zenodo. 10.5281/zenodo.44222. The full citation is available in different formats on Zenodo.
v2.8.0
NEST 2.8.0 is distributed under the GNU General Public License version 2 (or later). This version marks the completion of our development efforts during the HBP ramp up phase and consists of 290 repository checkins by 25 developers since 2.6.0. The most notable changes are:
- The new connection framework introduced in NEST 2.6.0 can now handle parameter arrays for the 'all-to-all' and 'one-to-one' rules.
- A new propagator for integrate-and-fire neurons correctly handles the case where membrane and synapse time constants are similar or the same.
- Better documentation and much extended examples for PyNEST improve the discoverability of NEST's features.
All users are encouraged to upgrade and adapt their simulation scripts to the changes in the user interface at this point in time to benefit from the improvements in the new version.
Changes of default behavior and functionality
- Topology functions are now available from the main namespace in SLI.
- The parameters of
sinusoidal_poisson_generator
andsinusoidal_gamma_generator
were changed as follows:dc
->rate
ac
->amplitude
freq
->frequency
phi
->phase
; units changed from radian to degrees
- The parameter name
amplitude
ofppd_sup_generator
was changed torelative_amplitude
. - Previously most synapse models prohibited the case of tau_m being equal to tau_syn because of the numerics used. The integrate-and-fire neurons now use a different propagator if tau_syn and tau_m are the same or very similar. This might lead to slightly different membrane potential values in these cases than before. See
doc/model_details/IAF_neurons_singularity.ipynb
for details
New models and examples
spike_dilutor
repeats incoming spikes with a certain probability.correllospinmatrix_detector
allows to measure the covariance matrix from several inputs.brunel-2000_newconnect.sli
demonstrates the use of the new connection framework.brunel-2000_newconnect_dc.sli
using DC instead of Poisson stimulation.precise_spiking.py
compares precise and grid-constrained neuron model.
Documentation improvements
- All PyNEST examples are now extensively documented and available from nest-simulator.org.
- The Potjans_2014 example now has an updated documentation.
- Topology user manual now explains how to connect devices to subregions of layers.
noise generator
now has documentation in form of a Jupyter Notebook indoc/model_details/noise_generator.ipynb
.- The
voltmeter
is now documented and the documentation ofmultimeter
is fixed. - The
emit()
function in precise models is now properly documented. - The online help of
cont_delay_synapse
now has usage examples.
Bug fixes
pp_psc_delta
now works correctly with multiple calls toSimulate
- The membrane potential of
izhikevich
is now more consistent with the original Matlab implementation. hpc_benchmark.sli
now aborts when attempting to run with too few local neurons to record from.
Minor changes
- SLI can now extract information about their origin in the revision control system.
- MPI is now initialized with mode THREAD_FUNNELED instead of THREAD_SERIALIZED.
- Module handling in the build system got simplified and cleaned up.
- Topology free layers now work for single neuron layers.
CreateLayer
is up to 100-fold faster for large networks.pp_pop_psc_delta
uses a refined check for small spike probability.- The logos were updated and are available in
extras/logos
. - The PyNEST testsuite now also runs on older NumPy and Python versions.
- Rebuilding the NEST build system now requires autoconf >= 2.63.
- Renovations to MyModule's build system allow to also build modules on BlueGene.
- The last occurrences of CPEX were removed from the
Communicator
class. - New scripts execute static code analysis and formatting locally as TravisCI would do it.
Testsuite improvements
CreateLayer
now has a regression test.iaf_cond_alpha_mc
andcont_delay_synapse
have new unit tests.do_tests.sh
now returns non-zero exit code in case of failing tests.
Contributors since v2.6.0
- Sacha van Albada
- Claudia Bachmann
- Hannah Bos
- Rajalekshmi Deepu
- Moritz Deger
- Renato Duarte
- Jochen M. Eppler
- Marc-Oliver Gewaltig
- Espen Hagen
- Moritz Helias
- Tammo Ippen
- Jakob Jordan
- Susanne Kunkel
- Frank Michler
- Abigail Morrison
- Robin Pauli
- Alexander Peyser
- Luis Riquelme
- Hans Ekkehard Plesser
- Wolfram Schenk
- Maximilian Schmidt
- Jannis Schuecker
- Johanna Senk
- Hesam Setareh
- Ali Shirvani
- Tiziano Zito
Citation
If you use this version of NEST, please cite it as Eppler, Jochen Martin et al. (2015). NEST 2.8.0. Zenodo. 10.5281/zenodo.32969. The full citation is available in different formats on Zenodo.
v2.6.0
NEST 2.6.0 is a fast and efficient simulator for networks of spiking neurons and distributed under the GNU General Public License version 2 (or later). It contains new memory-saving data structures for the storage of connections and many general improvements over the 2.4 series. The most notable changes are:
- A complete re-write of the connection infrastructure, which reduces memory consumption considerably.
- Many new tests to ensure and guarantee a continued quality of the code-base.
- Updated and extended documentation
All users are encouraged to upgrade and adapt their simulation scripts to the changes in the user interface at this point in time to benefit from the bug fixes and improvements.
IMPORTANT: some of the defaults in NEST changed. You might have to adapt your scripts accordingly. See the release notes for details.
New connection infrastructure
This release of NEST contains a complete re-write of the data structures for storing neural connections as described in the article Spiking network simulation code for petascale computers by Susanne Kunkel et al. (doi:10.3389/fninf.2014.00078). They adapt to their load and thus require only minimal overhead compared to conventional C++ vectors. The new infrastructure comes with synapse model variants optimized for HPC (suffixed by "_hpc"), which can be used if less than 65k neurons are simulated per MPI process and the receptor_type
is not set for this synapse model.
In addition to the new data structures, an optional pool-based memory allocator allows to save even more memory on very large machines. It can be enabled by adding -DPMA
to the CFLAGS
and CXXFLAGS
at compile time.
The improvements required to change the API for neuron and synapse models.
Changes of default behavior and functionality
The default connection rule of the new connection framework introduced in 2.4.0 (see http://nest-simulator.org/Connection_Management) changed from one_to_one
to all_to_all
as this rule is much more frequent in most modelling tasks.
The default rounding scheme for delays changed from always rounding up to the nearest multiple of the resolution (next step value) to mathematically rounding to the nearest multiple, i.e., for a resolution of 0.1 ms, a delay of 0.14 ms now will be rounded down to 0.1 ms, a delay of 0.16 ms rounded up to 0.2 ms; in the past, both were rounded up to 0.2 ms.
Nodes are now always round robin distributed onto threads and processes, while it was possible to force them to a specific virtual process using the property children_on_same_vp
of the subnet
they belong to.
To remove ambiguousness, we renamed the property node_type
contained in the status dictionaries of neurons, devices and synapse to element_type
. The field can contain the values "synapse", "stimulator", "recorder", "neuron", "structure", or "other".
New functionality
- The device
correlomatrix_detector
allows to measure the covariance matrix from several spiking neurons online. - The function
SetFakeNumProcesses
allows to fake the process of building the network for a parallel machine using only a single compute node. This is helpful to estimate the amount of memory needed for large-scale simulations prior to running a simulation. - The script
nest_vars.sh
can be used to set the environment variablesPATH
andPYTHONPATH
to ease switching between different installed versions of NEST
Minor changes
- Synapse model
static_synpase_hom_wd
has been replaced bystatic_synapse_hom_w
. - Initialization of
pp_pop_psc
is now done properly to allow multiple calls to Simulate in a simulation script. - Improved support for the Clang compiler and MacOS.
- SLI dictionaries can now be nested without causing memory leaks and crashes.
- NEST now contains information about the revision in a revision control system it is based on to make it easier to pinpoint bugs in releases to a specific internal version.
- The error state of
libltdl
is now properly reset in order to circumvent errors when loading custom modules. - The microcircuit model example (Potjans&Diesmann, doi:10.1093/cercor/bhs358) is now installed.
- The neuron
model iaf_psc_exp
now supports zero refractory time. - The MPI tests of Topology now report errors explicitly.
Create
now explicitly mentions the absence of GSL as a possible reason, when a model is not found.- SLI command
memory_thisjob
now supports Linux, OSX and IBM BlueGene.
Documentation improvements
The tutorial "NEST by Example" has been updated to reflect the recent changes in NEST. To make it easier to carry out performance benchmarks with NEST, the HPC benchmarks used by Kunkel et al. (doi:10.3389/fninf.2014.00078) have been added to the examples contained in NEST. Moreover, the documentation of the SLI function getinterval
has been extended and clarified and the doxygen configuration files were updated to support current versions of doxygen.
Better testing
The test coverage has been considerably increased from 427 tests in NEST 2.4.2 to 714 in 2.6.0. Where available, NEST now uses Python's nosetests
instead of the custom test harness for running the PyNEST tests. This makes testing easier and more reliable and produces reports in the standard JUnit XML format, which can be analyzed by a selection of existing tools.
Changes under the hood
- Simplified and refactored the
Time
class. - Removed status flags
bitset
in nodes in favor of simple Boolean flags. - Handle exceptions in node preparation in a thread-safe way.
- Removed Pthreads in favor of OpenMP based parallelization.
- Cleanup of internal connect interface and functions.
Memory management
Several memory leaks and segmentation faults were found and fixed by adding a destructor to Topology's ntree
class and by fixing the creation of ArrayDatums
. Moreover, the function GetDefaults
is now thread-safe when retrieving the number of connections from a synapse model.
Deprecated functionality
The following SLI/PyNEST functions are obsolete will be removed in the next version:
- The functionality of the functions
(Random)DivergentConnect
and(Random)ConvergentConnect
is now integrated intoConnect
. See http://www.nest-simulator.org/connection_management for documentation on how to convert your scripts to the new syntax. - The old connect framework in PyNEST ('OneToOneConnect') will be removed in favor of the new connect framework.
FindConnections
is superseded byGetConnections
.
Contributors since v2.4.2
- Sacha van Albada
- Hannah Bos
- Moritz Deger
- Markus Diesmann
- Mikael Djurfeldt
- Renato Duarte
- Jochen Martin Eppler
- Marc-Oliver Gewaltig
- Jan Hahne
- Moritz Helias
- Tammo Ippen
- Jakob Jordan
- Susanne Kunkel
- Abigail Morrison
- Alex Peyser
- Hans Ekkehard Plesser
- Wolfram Schenck
- Maximilian Schmidt
- Jannis Schücker
- Hesam Setareh
- Yury V. Zaytsev
v2.4.2
This is a bugfix and maintenance release for v2.4.1. Users are advised to update their installation as soon as possible. The release contains the following improvements and fixes for minor bugs:
- Updated MUSIC examples to use the new
Connect
framework and allowmusic_channel
as an alias forreceptor_type
during connection setup. - Turned PyNEST deprecation warning into a decorator and beautified URLs in the output to allow IPython Notebooks to parse and link them properly.
- Improved performance of SLI functions
token_s
andsymbol_s
by a factor of 1000 by replacing a loop by an explicit function call. - Made CyNEST handle parameters passed as Unicode strings in all Python versions by using
basestring
instead ofstr
for Python versions < 3. - Fixed segmentation fault produced by additional command line arguments for Python when PyNEST was imported.
Contributors in addition to v2.4.0 and v2.4.1
- Oliver Breitwieser
- Jan Hahne
- Frank Michler
v2.4.1
This is a bugfix and maintenance release for v2.4.0, in which the Topology Module contains a bug which leads to the creation of too few connections (N/num_threads instead of N) when using the divergent connection_type
in ConnectLayers
in a multi-threaded mode. Users are advised to update their installation as soon as possible.
Here's a detailed list of changes:
- Fix multi-threaded creation of divergent connections in Topology Module and add a regression test for this.
- Add
SetNumRecProcesses
to PyNEST to enable the Global spike detection mode. - Update Toplogy Manual for NEST 2.4 and to be Py3k compatible.
- Use proper syntax for getting default synapse model in the
ConnectionGenerator
. - Update the reference in the
README.txt
of the microcircuit model by Potjans&Diesmann. - Remove special characters from
iaf_chs_2007
that confused the copyright-header checker.
v2.4.0
NEST 2.4.0 is distributed under the GNU General Public License version 2 (or later) and contains many new features, neuron models and general improvements. The most important ones are:
- A Python 3.0 compatible re-implementation of the Python interface.
- A new framework for setting up connections and their parameters.
- A new spike detection mode with greatly improved I/O performance.
- More flexible framework for working with random distributions.
- Support for connectivity-generating libraries through
libneurosim
.
All users are encouraged to upgrade and adapt their simulation scripts to the changes in the user interface at this point in time to benefit from the bug fixes and improvements.
Re-implementation of PyNEST
The Python interface to NEST (PyNEST) has been re-implemented from scratch. The new implementation (CyNEST) is based on Cython and provides the following improvements over the previous version:
- Support for Python 2.6, 2.7, and 3.x
- Installation now works properly on all platforms
- Better extensibility and maintainability
See Zaytsev & Morrison (2014), doi:10.3389/fninf.2014.00023 for details of the new interface.
Minor changes to PyNEST are:
- PyNEST's visualization.plot_network() can now create PNGs or PDFs
- Importing SciPy after NEST does not cause segfaults anymore
Please note that CyNEST requires Cython version 0.19.2 or higher to regenerate the source files (only for developers). This can be installed using pip install --user --upgrade cython
.
New routines for setting up connectivity
The Connect
function of NEST has been completely re-written in order to support a more flexible setup of connectivity. In particular this means that connectivity is now specified using a rule ("all-to-all", "one-to-one", "fixed-indegree", "fixed-outdegree", "fixed-total-number", or "pairwise-bernoulli") and a dictionary with synapse parameters. All connection parameters can now be randomized already during connection setup by specifying the random distribution.
In addition to more flexibility, the new framework is faster due to a massive clean-up of the code and OpenMP parallelization throughout.
Please see http://www.nest-simulator.org/connection_management for more information about the new connection routines and how to transition your simulation scripts from the old functions to the new framework.
If you are using SLI, all your scripts will be working without changes. PyNEST's Connect
function was renamed to OneToOneConnect
. Connect
now uses the new semantics as explained in the documentation.
The new Connect
function is provided as a technology preview. This means that while the basic user interface will stay, the functionality and performance will be further extended in future releases.
Global spike detector
In parallel simulations on very large machines without local disks, saving recorded spikes often leads to performance problems, because each spike detector will write out one file per virtual process. This problem is now ameliorated by a new spike detection mode, which can be activated by the users of such machines. In the new mode, all spike detectors are allocated on a distinct set of processes.
See http://www.nest.simulator/global_spike_detector for details on the new recording mode and how to activate it.
Random number generators and distributions
In the process of implementing the new connection routines, we found several performance problems in NEST's librandom and inconsistencies with PyNN ([1]). To solve these problems, we changed several aspects of librandom.
The random deviate generators in NEST have been extended and modified to support random initialisation of synapse parameters for the new connection routine, and to achieve greater similarity between NEST and PyNN. For most users, these changes only add new features. Scripts using uniformint
or normal_clipped
need to be adapted as explained in http://www.nest-simulator.org/random_numbers.
To achieve consistent results for both global and local spike detector mode, the seed of the global RNG was changed from n_vp+1 to 0. To allow the comparison of new results with those obtained with earlier versions of NEST, this seed has to be set to n_vp+1 manually. See http://www.nest.simulator/global_spike_detector for details.
If NEST is compiled with support for GSL, gsl_rng_knuth2002
is now used instead of knuthlfg
as per-thread and global random number generator (RNG) to improve performance. Both RNGs create identical sequences, so new simulation results are still comparable to old ones.
Support for connectivity-generating libraries
In NEST 2.4, the direct implementation of the ConnectionGenerator
interface has been replaced in favor of support for libneurosim
(http://software.incf.org/software/libneurosim). This allows to couple all connectivity-generating libraries (e.g. the Connection-set algebra; http://software.incf.org/software/csa) with NEST, which support libneurosim
.
See Djurfeldt et al. (2014), doi:10.3389/fninf.2014.00043 for details about the new interface.
New models and model improvements
stdp_facetshw_synapse
mimics the restrictions of the neuromorphic HMF developed in the context of FACETS and BrainScaleS.aeif_cond_alpha_RK5
, which is independent of the GSL by using a custom version of the RK5 solver.aeif_cond_alpha_multisynapse
is a variant of the exponential integrate-and-fire model with multiple synaptic time constants.quantal_std_synapse
is a probabilistic synapse model with short term plasticity (Fuhrmann et al. 2002, doi:10.1152/jn.00258.2001).iaf_chs_2007
is a spike-response model (Carandini et al. 2007, doi:10.1167/7.14.20).iaf_chxk_2008
is a conductance based leaky integrate-and-fire neuron model (Casti et al. 2008, doi:10.1007/s10827-007-0053-7).- Weighted excitatory and inhibitory input spikes are recordable in
iaf_psc_exp
andiaf_psc_delta
. - Excitatory and inhibitory synaptic currents are recordable in
iaf_psc_exp
andiaf_psc_alpha
. - Recovery variable
U_m
is recordable inizhikevich
. spike_detector
now throws an error for spike times of 0.
Improved quality and documentation
Compared to v2.2.2, we have increased the number of unit tests from 270 to 418. This improvement guarantees the continued quality of NEST on the computer of the user and allows to find and fix problems quickly. To run the testsuite after installation, run make installcheck
from the build directory.
Many examples have been updated and extended to demonsrate the usage of NEST. In addition, we have added the full microcircuituit model by Potjans & Diesmann (2014), doi:10.1093/cercor/bhs358.
In order to prevent memory leaks by forgotten arguments on the SLI stack, PyNEST now can do stack checking and runs its own testsuite in this mode.
New SLI functions and improvements
- Added an
eval
function to execute SLI code in strings. SetMaxBuffered
which sets the max buffered parameter of a MUSIC input port.eq_dv
andeq_iv
to test double and int vector equality.cva
applied to an array now leaves array elements as they are if they can not be converted to an array.round
now converts to double if applied on an integer.cvi
is identity operation for integers.Take
now also works for strings.
Deprecated functionality
The following SLI/PyNEST functions are obsolete will be removed in the next version:
- The functionality of the functions
(Random)DivergentConnect
and(Random)ConvergentConnect
is now integrated intoConnect
. See http://www.nest-simulator.org/connection_management for documentation on how to convert your scripts to the new syntax. - The old connect framework in PyNEST (
OneToOneConnect
) will be removed in favor of the new connect framework. FindConnections
is superseded byGetConnections
.- Support for plain POSIX threads will be removed in favor of OpenMP.
Contributors since v2.2.2
- Claudia Bachmann
- Hannah Bos
- Ekatarina Brocke
- David Dahmen
- Moritz Deger
- Markus Diesmann
- Mikael Djurfeldt
- Håkon Enger
- Jochen Martin Eppler
- Marc-Oliver Gewaltig
- Moritz Helias
- Tammo Ippen
- Jakob J. Jordan
- Susanne Kunkel
- Abigail Morrison
- Mikael Naveau
- Daniel Peppicelli
- Alexander Peyser
- Thomas Pfeil
- Hans Ekkehard Plesser
- Wolfram Schenck
- Maximilian Schmidt
- Jannis Schuecker
- Sacha van Albada
- Yury V. Zaytsev
WARNING!
The Topology Module of this version of NEST contains a bug which leads to the creation of too few connections (N/num_threads instead of N) when using the divergent connection_type
in ConnectLayers
in a multi-threaded mode. Please update your installation to at least v2.4.1!
v2.2.2
NEST 2.2.2 is a bugfix releas that contains fixes to the kernel, SLI, build system and other areas.
New models and devices:
iaf_psc_alpha_multisynapse
iaf_psc_exp_multisynapse
mcculloch_pitts_neuron
ginzburg_neuron
spin_detector
sinusoidal_gamma_generator
Updated models and devices:
smp_generator
is replaced bysinusoidal_poisson_generator
, which sends an individual spike train to each of its targets by default; be wary when updating your code! In order to replicate the old behavior of thesmp_generator
(all targets receive the same spike train), set/individual_spike_trains
tofalse
on thesinusoidal_poisson_generator
model before creating a generator node.iaf_psc_alpha
: bugfixesstdp_dopamine_synapse
: bugfixes
PyNEST:
- fixes to the
DataConnect
interface
Topology:
- more efficient
GetTargetNodes
implementation - lognormal distribution for parameter values