NEST 3.0
NEST 3.0 is the result of 5043 commits by 47 developers since NEST 2.20.0 which was released on 2020-01-28.
With the release of NEST 3.0, we introduce a ton of new features to improve how you create and manage simulations.
NEST 3.0 introduces a more direct approach to accessing neuron and device properties and to interacting with synapses. You can now read and write properties of nodes and connections with the functions get()
and set()
or by direct member access (e.g., neuron.V_m = -55.0
). Parameter objects make mathematical and probabilistic functions available to pick neuron properties, create spatial positions, define connection probabilities, and much more. In addition, it is now way easier to perform operations such as slicing, iterating, and tests for equality on collections of neurons and synapses.
NEST 3.0 replaces the old random number generator library with a new one based on the C++ Standard Library. The new library also provides generators from the Random 123 library, including crypotgraphic generators. Most notably, you can now much more easily seed all generators and change the type of random number generator you are using.
We have improved how recordings from simulations are handled, making the infrastructure more modular and extensible. In addition to the previously supported recording methods, a new backend for SIONlib is now available. The interface for stimulation devices can now handle data from external sources, such as other simulators.
The Topology Module is no longer a separate module; it is integrated within PyNEST, and now referred to as support for spatially-structured networks.
NEST Server is a novel backend to NEST that allows to run simulations via a RESTful API. Instead of directly importing nest
into your Python session, the code that controls the simulation is sent over HTTP to NEST Server in this use-case.
Enhancements
Critical
High
- Add Urbanczik-Senn synapse and supported neuron model
- Integrate web service for RESTful API to NEST Simulator
- Add option to generate connections from NumPy arrays
- Refactor PyNEST Microcircuit example Potjans_2014
- Add infrastructure for generic input backends to feed devices
- Improve visibility of NEST 3.0 conversion guides
- Update model docs to reStructuredText format II
- Update PyNEST examples to use NEST 3 features
- Enhance Connect to work seamlessly with arrays and lists
- Move to Ubuntu Bionic on Travis
- Modernize random number generator setup
- Add information on NEST and multiprocessing
- Create connections with lists of synapse dictionaries
- Update globals to support execution of hpc_benchmark.py example
- Add PyNEST function to obtain local VPs
- Switch to Github actions for CI testing
- Replace conda environment files with one file covering all needs
- Add MPI-enabled version of NEST Server and NEST Server documentation
- Revise quantal STP example
Normal
- Add support for rate data in MUSIC proxies
- Communication via compressed spikes
- Update issue templates (bugs/features)
- User documentation extractor
- Correct documentation of the stdp_dopamine_synapse model
- Create documentation workflow page
- Create template for documentation issues
- Improve documentation of rate-based models
- Add array indexing to NodeCollections
- Change definition of realtime factor in print_time
- Fix error in serializable
- Allow direct conversion from NodeCollection to numpy
- Avoid naming conflicts by installing shared objects to lib/nest instead of lib
- Add information about nest_vars.sh and update Linux installation instructions
- Copy the current Microcuircit documentation for use with Readthedocs
- Set and get structural plasticity status parameters through set and getKernelStatus
- Add min_rate to specify a non-zero rectfying rate for rate neuron models with input noise (rate_neuron_ipn)
- Systematize error messages for Connect failures
- Get distances between sources and targets in SynapseCollection
- Fix Izhikevich model initial conditions
- Refer to Vim syntax highlighting
- Add special cases for empty NodeCollections
- Add documentation how to install NEST via homebrew
- Add Jonke synapse
- Add getters/setters for excitatory/inhibitory synaptic conductance state
- Add guide about weight normalization
- Clarify conda installation with MPI
- Add badges with versions and statistics to README
- Add functionality for getting/setting synaptic currents in iaf_psc_exp_ps model
- Add tips for installing NEST with conda to documentation
- Efficient initialization of membrane potentials with original and optimized conditions in Potjans_2014
- Update PyNEST README to reStructuredText and fix broken link in documentation
- Make configuration options more visible in documentation
- Use ring buffer that allows for multiple values per slot
- Timers for Benchmarking (related to issue #1471 "Basic Instrumentation")
- Add PyNEST version dunder
- Add description for SIONlib file format to backend documentation
- Add description for "Two neuron example"
- Add documentation about our CI pipeline
- Fast and safe Siegert implementation
- Add synapse_label and receptor_type support to spatial connections
- Add checker for forbidden types
- Revised documentation on synapse specification slightly
- Add a Python script reporting Python imports from the NEST code base.
- Add example for how to store and restore a network.
- Restructure NEST 3.0 guides
- Make activation term exponent for I_NaP and I_T configurable in ht_neuron
- Add instructions for how to work with Eclipse when developing NEST
- Add link to set_verbosity documentation
- Add support for different virtual environment types for Python
- Add instructions for how to work with VS Code when developing NEST
- Add a NEST documentation style guide
- Add documentation on parameter comparators
Bug fixes
Critical
- Use vector of integer for per-thread bool indicators
- Count local devices for each thread
- Correctly initialize result vector in music_rate_in_proxy::get_status()
- Improve BlockVector to fix issues when sorting with recent versions of Boost
- Fix Python compatibility issue on Readthedocs
- Fix GetConnections to not include erroneous connections when using multiple threads
- Fix setting synapse parameters when running connect_arrays multi-threaded
- Clean up t_ref parameter in aeif models
- Fix for failing Read the Docs build
- Remove brackets around NodeCollections in tests
- Fix issue with building Sphinx documentation with recent Jinja version
- Fix catching build warnings in GitHub Actions
High
- Fix misuse of outdated variable that led to an impossible condition
- Use proper delete[] and atomic read in CompletedChecker
- Only check for contains list if params is not empty
- Initialize indicator for changes to connectivity to false
- Enables display of commands with default settings in the
.nestrc
- Switch from bisection method to regula falsi method in precise models
- Correct filename quoting
- Move dependencies and fix broken image links
- Only include audio backend header in MyModule if library support is detected
- Fix broken "Network models" link
- Fix NodeCollection fingerprint
- Fix synaptic time constants in model documentation
- Fix NodeCollection creation to correctly raise error when using non-unique or unsorted node IDs
- Handling of out-of-range slicing and indexes for NodeCollections
- Add CMake switch for enabling/disabling the recording backend for Arbor
- Replace Python 3.6 f-strings to achieve Python 3.5 compatibility
- Make multimeter record at correct time when offset is specified
- Add missing initialiser in copy constructor for stdp_nn_pre-centered_connection
- Improve parsing of PyNEST test results and list of failed tests
- Update doc/model_details notebooks to work with NEST 3.0
- Update syn_spec when a synapse parameter is list and we use fixed_total_number
- Slice spatial metadata when slicing a NodeCollection with spatial metadata
- Autodetect Python include path and library file instead of hardcoding them
- Fix GetConnections to correctly get connections with devices as sources when specifying only target
- Fix NodeCollection equality comparison to ensure that the other NodeCollection is of the right type
- Fix wrong connection in STDP NN unit test
- Fix for first spike passing through "tsodyks2" synapse
- Fix hpc_benchmark.py to work when more than 30 ranks are used
- Fix linking problems on OSX in presence of MPI4Py
- Fix test_connect_all_patterns.py on TravisCI
- Fix segfault when mpi4py is imported before NEST
- Fix printing of sliced composite NodeCollection
- Fix incrementation of weight and delay in connect_arrays
- Skip setting of parameter if test is skipped
- Fix measurement of presimulation time in PyNEST Potjans_2014
- Fix int/float data type check
- Fix broken colors in documentation
- Fix doc buildsystem (again)
- Reduce amount of data exchanged in test to ensure stable operation.
- Fix encode error of help text.
- Parse build output of GitHub Actions
- Fix failing assert when connecting spatial populations
- Make sure
init_state_
is called for models that need it, and remove redundant ones - Fix missing state variable initialisation in iaf_chxk_2008
- Fix Python MPI tests
- Fix failing build on ReadtheDocs due to key error
- Correct documentation of local_spike_counter.
Normal
- Identify changed files for static code analysis using git diff for PRs
- Use theme options to show logo on readthedocs
- Clean up handling of path-related environment variables
- Fix broken dependency in old Python on readthedocs
- Fixed minimal typo in user documentation.
- Correct path
- Check if parameter is in model dictionary before setting it
- Revise PyNEST documentation for GetStatus and get()
- Support slicing of NodeCollections in NEST Server
- Return all values when using get() on a SynapseCollection with more than one synapse
- Fix typo in IMapFunction::backtrace
- Fix for printing empty SynapseCollection
- Correctly draw rectangular masks with azimuth_angle != 0
- Fix nest-server not starting with apt-installed uwsgi
- Add missing include file to CMakeLists
- Propagate the
cython --version
error
Maintenance
Critical
- Remove NEST 3.0 preview warnings
- Bump Python version for macOS build
- Update to latest Python on MacOS Travis CI build
- Fix location for 'spatial' headers
- Parse C++ warnings more specifically
- Rename Stimulating{Backend,Device} to Stimulation{Backend,Device}
High
- Update the conda environment to create the documentation locally
- Build NEST with Boost as default
- Sunset Python 2
- Fixed the Travis Python library path for version 3.6.10
- Remove MyModule example and pertaining documentation
- Restructure build stages to use names instead of individual flags
- Consistently use python3 command instead of python
- Remove stray files in models directory
- Fix math rendering error in documentation
- Fix Part 4 tutorial link
- Add documentation for CollocatedSynapses
- Update NumPy installation on Mac OS X Travis build
- Fix performance issues for weak scale benchmarks caused by creation of DictionaryDatums
- Change Travis macOS build to MINIMAL to avoid timeouts (temporary).
- Restructure recorder documentation to contain all properties.
- Revise Mac installation instructions
- Fix PyNest help and helpdesk commands
- Hike and enforce Python version requirement to 3.8
- Move CI documentation file to new userdoc directory
- Only static code analysis in Travis Build Matrix
- Adapt warning parser to output format on GitHub Actions
- Make quantal_stp_synapse support setting
n
anda
when connecting - Add a brief description of features of NEST 3.0 to its index
Normal
- Update copyright file in debian directory
- Document kernel status dictionary entries
- Add missing using directives
- Implement communication via Alltoallv for secondary events
- Remove pylab for plotting
- Change EnableStructuralPlasticity documentation to address issue #571
- Improve documentation and location of iaf_chxk_2008 model
- Document purpose of multiplicity-unrolling code in spike delivery
- Refactor beta normalization factor calculation into function
- Update Debian installation instructions
- Add links to the new NEST virtual machine
- Refactor SendBufferPosition, fail on query with rank outside of range
- Refactor/collocate target data
- Fix python 3.8.0 attribute error: module 'cgi' has no attribute 'escape'
- Rename suggest_vp_for_node_id to node_id_to_vp
- Rename has_source_subsequent_targets -> source_has_more_targets
- Improve table of contents
- Update Mac manual link
- Remove pylab and delay pyplot import
- Move "Editor support" from README into documentation
- Move topology documentation into doc folder
- Remove SubnetExpected exception and other references to subnet.
- Update readthedocs style sheet to improve text contrast
- Fix sphinx-build warnings
- Fix default parameters of siegert_neuron
- Remove comments from CMake cache internal
- Update MUSIC tutorial
- Mention mutual exclusivity of MUSIC and Arbor in documentation
- Remove redundant setting of environment variables
- Update documentation on adding spatial masks in user-defined modules
- Reorganize the travis build stages
- Silence startup
- Move JunitXML and run_test functions to their own files
- Update iaf_psc_alpha.h
- Convert exact-integration.ipynb to rst file
- Add documentation on converting from PSC to PSP
- Fix subscripts in ginzburg_neuron model documentation
- Remove "Documentation" label from documentation issue template
- Systematize multiline strings for message text in hl_api
- Fix technical typos and spelling
- Update description for parameter U in Tsodyks synapses
- Remove scrollbars from parameters and other tables on RTD
- Mention NESTML/NEST Desktop in the section "Related projects" on the documentation main page
- Update model documentation output directory
- Add "Acknowledgements" section to welcome page
- Update docstring, add comments, and minor refactoring of Create()
- Remove unused CMake options
- Fix rendering of kernel parameter documentation in PyNEST
- Convert conngen documentation to a proper guide
- Remove orphaned and unmaintained bibliography file
- Make testsuite harness independent of variable replacement
- Minor update to conngen documentation
- Fix issues when showing plots in examples
- Rename spike_detector to spike_recorder
- Merge precisemodule into modelsmodule
- Copy documentation from gh-pages to doc/contribute
- Rename and refactor test_spatial_kernels.py
- Add tests for GetConnections with synapse_model and synapse_label as arguments
- Fix stdout in nest server and add option to disable restriction
- Make NEST installation prefix references consistent
- Update hpc_benchmark.py to avoid error when running with multiple processes
- Simple typos/documentation fixes
- Changes to volume transmitter documentation
- Shrink MPI buffers for spike communication
- Delete iaf_psc_exp_multisynapse.cpp.orig
- Dissolve Topology module and move files to nestkernel/spatial
- Fix duplicate "models" entry and remove dead "topology" entry from documentation TOC
- Remove SLI neuron
- Rename "topology" to "spatial"
- Add test of connecting arrays using MPI
- Update edgecolor to default value in examples and code that use scatterplot
- Remove obsolete volume mask
- Enable MUSIC tests and correct NEST testsuite results summary
- Remove Python 2 compatibility code
- Remove erroneous example in NEST Tutorial
- Minor cleanup of linux_install.rst
- Enhance PyNEST error messages from kernel
- Replace all occurrences of "to old" with "too old"
- Update documentation of glif models
- Update documentation of gif models
- Update GIF toolbox link
- Fix SetKernelStatus examples in documentation
- Fix compiler warnings
- Remove long outdated documentation
- Add tests for receptor_type with CollocatedSynapses
- Revise user-level documentation workflow
- Fix typo in stdp_connection.h
- Create StructuralPlasticityNode separate from Archiving_Node
- Update PyNEST template code to reference current nest 3 code.
- Refactor conngen module to be a ConnBuilder
- Update connection management documentation
- Improve printing of SynapseCollections
- Add documentation on array indexing
- Rename PyNEST microcircuit example titles
- Fix doc buildsystem
- Fix NEST3 transition guide formatting
- Unify spelling of 'postsynaptic'
- Update documentation on parameter dictionaries with lists
- Update NeuroFedora URL in documentation
- Remove stray occurrences of double_t
- Remove unused lines from the part 1 tutorial document.
- Remove contact invitation from HPC systems tab
- Fix typo in test_sp/test_mpitests.py
- Add -Woverloaded-virtual to CI compiler flags
- Avoid misleading warning when connecting
- Improve NodeCollection iterator dereferencing performance when using composite NodeCollections with metadata
- Remove unnecessary notebooks
- Remove colorize.rst from docs
- Explain neuron models in documentation
- Remove "Edit on GitHub" button on Read the Docs
- Update NEST 2.20.x CMake configuration to support OpenMP fully on OSX
- Revise NEST 2.20.x guide on random numbers to be ajour with NEST 2.12 and later
- Remove all mentions of spike multiplicity from user documentation
- Remove broken link in poisson generator documentation
- Clarify the post-pre convention used in plot-weight-matrices example documentation
- Remove SLI examples in model documentation
- Hike Boost minimum version to 1.69
- Remove neuronview example
- Include ACKNOWLEDGMENTS.md directly into main page of ReadtheDocs
- Fix citation for NEST 2.20.1 and add citation for NEST 2.20.2
- Provide links to model_details in relevant model documentation
- Remove unnecessary and properly order remaining includes in gif_cond models
- Add Visual Studio Code settings directory to .gitignore
- Extended gitignore with specific excludes for various IDE config files, macOS-specific files and _build.
- Fixed a number of missing initialisations detected by Eclipse.
- Make file, C++ class and model names consistent for synapses
- Fix broken images in documentation
- Remove hill_tononi_Vp example
- Improve documentation of Run() and RunManager()
- Minor update parallel computing guide
- Update user-level documentation workflow
- Fix wrong code in the getting started documentation
- Move developer space content into docs on master branch
- Remove unused function communicate_Allreduce_max_in_place()
- Add documentation on multicompartment models
- Move connect_arrays() from nest.cpp to connection_manager
- Remove unused event_prototypes_ member
- Invalid node collection error message
- Add functions to access information about simulation time
- C++ implementations of spatial distribution functions
- Add renamed 'time' to 'biological_time' kernel status variable
- Update NEST2-to-NEST3 reference guide
- Add user-level documentation for built-in timers
- Removed outdated CMake options
- Remove 'nest-' from setup.py version
The list contains 322 PRs.