arbor

The Arbor multi-compartment neural network simulation library.

BSD-3-CLAUSE License

Downloads
12.2K
Stars
108
Committers
31

Bot releases are visible (Hide)

arbor - v0.10.0 Latest Release

Published by github-actions[bot] 3 months ago

v0.10.0 (08.08.2024)

Major Changes since v0.9.0

  • Automatic network generation from high-level specifications.
  • Units at the user interface including scaling and conversion.
  • Morphologies are loaded through a unified interface; which produces a bundle of morphology, metadata, and segment tree.

Internal Updates

  • Documentation overhaul
  • Python bindings offer type stubs; giving auto-completion and inline documentation in some editors/IDEs.
  • Performance improvements
    • Label resolution uses hashes instead of strings, saving memory, network traffic, and time.
    • Spike delivery is up to 30% faster leading to 10% end-to-end improvements in some cases (e.g. example/brunel)
    • Load balancing is faster and doesn't rely on MPI, leading to shorter setup times for large networks.
  • Fixes
    • Better support for source builds on MacOS (aarch64)
    • modcc no longer allows internal variables (v, celsius, ...) as ASSIGNED
    • Better support for raw (C++) mechanisms
  • MC cells renamed cable cells.

Breaking changes

  • Return values of all morphology loaders have changed.
  • Raw (segment tree) loaders removed.
  • Support for Python 3.8 removed.
  • C++: Removed simulation::inject_events, use a generator instead.

New Contributors

Full Changelog: https://github.com/arbor-sim/arbor/compare/v0.9.0...v0.10.0

arbor - v0.10.0

Published by thorstenhater 3 months ago

v0.10.0 (08.08.2024)

Major Changes since v0.9.0

  • Automatic network generation from high-level specifications.
  • Units at the user interface including scaling and conversion.
  • Morphologies are loaded through a unified interface; which produces a bundle of morphology, metadata, and segment tree.

Internal Updates

  • Documentation overhaul
  • Python bindings offer type stubs; giving auto-completion and inline documentation in some editors/IDEs.
  • Performance improvements
    • Label resolution uses hashes instead of strings, saving memory, network traffic, and time.
    • Spike delivery is up to 30% faster leading to 10% end-to-end improvements in some cases (e.g. example/brunel)
    • Load balancing is faster and doesn't rely on MPI, leading to shorter setup times for large networks.
  • Fixes
    • Better support for source builds on MacOS (aarch64)
    • modcc no longer allows internal variables (v, celsius, ...) as ASSIGNED
    • Better support for raw (C++) mechanisms
  • MC cells renamed cable cells.

Breaking changes

  • Return values of all morphology loaders have changed.
  • Raw (segment tree) loaders removed.
  • Support for Python 3.8 removed.
  • C++: Removed simulation::inject_events, use a generator instead.

New Contributors

Full Changelog: https://github.com/arbor-sim/arbor/compare/v0.9.0...v0.10.0

arbor - v0.9.0

Published by github-actions[bot] about 1 year ago

v0.9.0

** 2023 08 09 **

After much more delay than anticipated, we are very happy to present a new Arbor release. Nearly 8 months of work is in it, much of which focussed on speed, optimisation, fixes and build system changes. This release includes Python 3.12 wheels as probably one of the first packages on PyPI 😄.

Major new features

  • External Connectivity: Arbor can now interface with other simulators or processes through MPI. Contexts now accept a second MPI communicator and Recipes can implement a external_connections_on method to specify how simulations might be interacting. See documentation for more.
  • Arbor now supports checkpointing and resume from a previously stored checkpoint. Useful when a certain point in time needs to be explored in multiple directions, when you want to rewind to a previous state, etc. See documentation for more.
  • More painted parameters are now scalable through iexpr: temperature, capacitance, resistivity, membrane potential and the following ionic parameters: internal and external concentration, diffusivity, and reversal potential. See documentation.
  • A set of ANN activation functions for NMODL have been added: sigmoid(x), relu(x) and tanh(x). Control volume area is exposed through NMODL.
  • A revamped backend for ARM CPU's that support Scalable Vector Extension (SVE). Arbor and modcc are now fully compatible, so users who have access to A64FX-based HPC can take full advantage of that hardware.

Breaking changes since v0.8.1

  • It is no longer possible to set binning and sampling policies, due to Arbor now having a fixed timestep. Removing exact delivery increases the speed of the simulation due to elimination of small steps, makes the numerics independent of presence of sampling, and also leads to a number of code simplifications.
  • Contexts are now constructed kwargs-only. So, arbor.context(12, None) is now arb.context(threads=12, gpu=None). In the case no arguments are supplied, the context initialized to default_allocation, which means it will use the total number of threads and first GPU that are locally available. arbor.simulation constructed without an explicit arbor.context also initializes a default_allocation.
  • Version bumps:
    • CUDA 11 or higher is required for GPU builds.

Full commit log

Neuroscience, documentation

Core

Build, testing, CI

Fixes, optimization

New Contributors

Full Changelog: https://github.com/arbor-sim/arbor/compare/v0.8.1...v0.9.0

arbor - v0.8.1

Published by github-actions[bot] almost 2 years ago

v0.8.1

** 2022 12 22 **

A 🎄 holiday release! Not much has changed in a month, but we'd like to share it all the same. Notably, the Arbor GUI is co-released as of Arbor v0.8, and v0.8.1 will be no different.

Major new features

  • Voltage Processes: add the VOLTAGE_PROCESS mechanism kind to modcc, allowing for direct writing to the membrane voltage (#2033)
  • Spack gpu option: added conditional variant for cuda builds to enable GPU-based random number generation (#2043)
  • SDE Tutorial (#2044)

Breaking changes since v0.7

  • None 💃!

Bug fixed

  • Fix ornstein_uhlenbeck example on gpu (#2039)
  • Setting ARB_MODCC was broken and nunfunctional. Fixed. (#2029)
  • The --cxx flag in arbor-build-catalogue is now properly used; falls back to c++. (#2051)

Full commit log

Full Changelog: https://github.com/arbor-sim/arbor/compare/v0.8...v0.8.1

arbor - v0.8

Published by brenthuisman almost 2 years ago

v0.8

** 2022 11 15 **

Welcome to another installment of the Arbor simulator!

In this release we add a CHANGELOG, where major new features and breaking changes will be mentioned specifically.

Major new features

Breaking changes since v0.7:

Full commit log

Neuroscience, documentation

Core

Build, testing, CI

Fixes, optimization

New Contributors

Full Changelog: https://github.com/arbor-sim/arbor/compare/v0.7...v0.8-rc

arbor - v0.7

Published by brenthuisman over 2 years ago

What's Changed

Neuroscience/documentation

Core

Build, testing, CI

Fixes, optimization

New Contributors

Full Changelog: https://github.com/arbor-sim/arbor/compare/v0.6...v0.7

arbor - v0.6

Published by brenthuisman over 2 years ago

What's Changed

Core API:

CI/build/testing:

Documentation:

Fixes/optimization:

New Contributors

Full Changelog: https://github.com/arbor-sim/arbor/compare/v0.5.2...v0.6

arbor - Arbor Library v0.5.2

Published by brenthuisman over 3 years ago

This release fixes an error in the CI generated Python wheels, which are as of this release available on PyPI. Other than those fixes, this release is identical to v0.5.1.

arbor - Arbor Library v0.5.1

Published by bcumming over 3 years ago

Since v0.5 there have been some major features, and many small fixes and improvements.

Core API features:

  • [C++/Python] Labels instead of indices for placeable item identification.
  • [C++/Python] Morphology file format support: Arbor Cable-Cell Format.
  • [C++/Python] Morphology file format support: Neurolucida ASCII format.
  • [C++/Python] Morphology file format improvements: SWC.
  • [C++/Python] Simplified connections and junctions.
  • [C++/Python] Enable simulation resume/restart.
  • [C++/Python] Add post events functionality to support models with STDP synapses
  • [C++/Python] Allow dynamically creating and loading of mechanism catalogue

Documentation:

  • Documentation URL changed to docs.arbor-sim.org
  • New Python examples and tutorials
  • Ever more complete documentation
  • Added Code of Conduct

Build / CI:

  • Spack distribution
  • CI generated binary Python wheels
  • Apple M1 compatibility
  • CI moved from Travis to Github Actions
  • Improved Python and C++ unit testing
  • ARM CI
  • Sanitizer CI

Contributions by, in no specific order, @haampie, @clinssen, @espenhgn, @Helveg, @brenthuisman, @noraabiakar,
@thorstenhater, @halfflat, @schmitts and @bcumming

arbor - Arbor Library v0.5

Published by bcumming almost 4 years ago

Since v0.4 there have been some major features, and many small fixes and improvements.

Core API features:

  • [C++/Python] Numerous small bug fixes, optimizations and improvements.
  • [C++/Python] Refactor cable cell interface to be read only, and be constructed from
    descriptions of morphology, labels, and decorations.
  • [C++/Python]Expose diverse probes and rich interface for describing where and
    what to sample on cable cells.
  • [C++/Python] Support for querying names in mechanism catalogues
  • [Python] Wrapper for existing C++ pw_lin functionality
  • [C++] Improved validation of recipe definitions during model building

Documentation:

  • Added new Python examples
  • Many small fixes for links, spelling, grammar and clarity.
  • Add extensive guide for contributions and coding polices.

Build:

  • Allow CMake configuration to use system copies of C++ dependencies
    (nlohmann/json and pybind11), and makes this the default option.
  • Added GitHub Actions support for automated testing of a wider range of tests
    and features than are run on our Travis CI (which will be removed soon)
  • More robust Python detection and consistent use of the same Python
    interpreter in CMake configure and build steps.

Contributions by, in no specific order, @brenthuisman, @noraabiakar,
@thorstenhater, @halfflat, @schmitts and @bcumming

arbor - Arbor Library v0.4

Published by bcumming about 4 years ago

Release notes

Library

  • Moved from C++14 to C++17
    • Removed our hand-rolled versions of any, optional and variant.
  • Added std::expected equivalent for error handling.

Features

  • Added mechanism catalogues with mechanisms used by Allen and BBP models.
  • Removed support for spherical segments at the root of cable morphologies, and
    replaced the sample-based representation with a segment-based representation:
    • Morphologies are defined in terms of two-point segments.
    • Gaps are allowed between segments anywhere in a morphology.
  • Exposed the current time inside mechanisms.
  • Added support for NeuroML2 morphology descriptions.
  • Added a "stitch" morphology builder for constructing morphologies with
    cable sections that can connect to any location on their parent cable.
  • Replaced recipe probe API with more flexible API that allows for sampling
    not only voltages at single locations, but currents, ion species properties,
    and mechanism state variables at single locations or across an entire cell.
  • Added support for querying probe metadata from the simulation object.
  • Added new 'place_pwlin' C++ API for cell geometry queries.
  • Added support for loading Allen SDK cell model morphologies from SWC.
  • Added support for composing policies for creating compartments over sub-regions.

Documentation

  • Restructured documentation to have cleaner separation between high level descriptions
    of concepts and the C++ and Python APIs.
  • Added high level documentation for morphology descriptions, labels and cable cell
    construction.

Optimizations

  • Implemented memory optimizations for GPU matrix solver.
  • Added support for ARM SVE intrinsics in the vectorized CPU back end.

Bug Fixes

  • Fixed various modcc code generation errors.
arbor - Arbor Library v0.3

Published by bcumming over 4 years ago

Arbor library version 0.3, tagged as v0.3

Arbor is a library for implementing performance portable network simulations of multi-compartment neuron models.

An installation guide and library documentation are available online at Read the Docs.

Submit a ticket if you have any questions or want help.

Change Log

Changes since v0.2:

  • Python wrapper with pip installation.
  • Replace the morphology specification API for more flexible cell building.
  • Flat descriptions of ion channel distribution and synapse placement.
  • Multi-compartment back end support for sub-branch mechanism distributions.
  • Improved NMODL support:
    • nonlinear kinetic schemes
    • linear system solution in initial conditions
    • many small features and bug fixes
  • Generic ion species.
  • Many optimizations and bug fixes.
arbor - Arbor Library v0.2.1

Published by bcumming about 5 years ago

Arbor library version 0.2.1, tagged as v0.2.1

Arbor is a library for implementing performance portable network simulations of multi-compartment neuron models.

An installation guide and library documentation are available online at Read the Docs.

Submit a ticket if you have any questions or want help.

Release Notes.

Minor Update.

arbor - Arbor Library v0.2

Published by bcumming over 5 years ago

Arbor library version 0.2, tagged as v0.2

Arbor is a library for implementing performance portable network simulations of multi-compartment neuron models.

An installation guide and library documentation are available online at Read the Docs.

Submit a ticket if you have any questions or want help.

Some key features include:

  • Optimized back ends for CUDA, KNL, AVX2, ARM NEON intrinsics.
  • Asynchronous spike exchange that overlaps compute and communication.
  • Efficient sampling of voltage and current on all back ends.
  • Efficient implementation of all features on GPU.
  • Reporting of memory and energy consumption (when available on platform).
  • An API for addition of new cell types, e.g. LIF and Poisson spike generators.

Change Log

Changes since v0.1:

  • A new Hines matrix solver back end for the GPU that parallelises over cell
    branches, not cells, to increase the amount of parallelism. See #631.
  • Support for describing and simulating electrical gap junctions. See #661 #686.
  • An additional library libarborenv is now installed with useful
    helper functionality for managing the environment (e.g. detecting the number of available CPU cores). See #679.
  • Detection and allocation of GPUs to MPI ranks on systems with more than one GPU per node in libarborenv. See #659 and #654.
  • The miniapp example was removed and replaced with a simple single cell model that shows how to use morphologies. See #703 and #710.
  • Support for ARM NEON intrinsics. See #698.
  • Basic Python support. Full Python support is slated for v0.3. See #668.

Contributors

Nora Abi Akar
John Biddiscombe
Benjamin Cumming
Felix Huber
Marko Kabic
Vasileios Karakasis
Wouter Klijn
Anne Küsters
Alexander Peyser
Stuart Yates

Citation

DOI

Nora Abi Akar, John Biddiscombe, Benjamin Cumming, Felix Huber, Marko Kabic, Vasileios Karakasis, Wouter Klijn, Anne Küsters, Alexander Peyser, Stuart Yates. (2019, March 4). arbor-sim/arbor: Arbor Library v0.2 (Version v0.2). Zenodo. http://doi.org/10.5281/zenodo.2583709

arbor - Version 0.1: First release

Published by apeyser about 6 years ago

Arbor Library

Arbor library version 0.1, tagged as v0.1

Arbor is a library for implementing performance portable network simulations of multi-compartment neuron models.

An installation guide and library documentation are available online at Read the Docs.

Submit a ticket if you have any questions or want help.

Some key features include:

* Optimized back ends for CUDA, KNL and AVX2 intrinsics.
* Asynchronous spike exchange that overlaps compute and communication.
* Efficient sampling of voltage and current on all back ends.
* Efficient implementation of all features on GPU.
* Reporting of memory and energy consumption (when available on platform).
* An API for addition of new cell types, e.g. LIF and Poisson spike generators.
* Validation tests against numeric/analytic models and NEURON.

Contributors

Nora Abi Akar
John Biddiscombe
Benjamin Cumming
Marko Kabic
Vasileios Karakasis
Wouter Klijn
Anne Küsters
Ivan Martinez
Alexander Peyser
Stuart Yates

Citation

DOI

If you use this version of Arbor, please cite it as Nora Abi Akar, John Biddiscombe, Benjamin Cumming, Marko Kabic, Vasileios Karakasis, Wouter Klijn, Anne Küsters, Ivan Martinez, Alexander Peyser, Stuart Yates. (2018, October 12). arbor-sim/arbor: Version 0.1: First release (Version v0.1). Zenodo. http://doi.org/10.5281/zenodo.1459679. The full citation is available in different formats on Zenodo.