Arbor: a multi-compartment neural network simulation library


Install Documentation Get Help


Arbor in 1 minute:

Arbor is a library for implementing performance portable network simulations of multi-compartment neuron models.
Arbor is designed from the ground up for many core architectures.


What is Arbor?

Arbor-Gui
The Arbor GUI.

Arbor is a performance portable library for simulation of large networks of multi-compartment neurons on contemporary high-performance computing (HPC) systems. It is specialized for graphics processing units (GPUs), vectorized multicore, Intel KNL and laptops with a modular design for extensibility to new computer architectures.

Arbor is designed to handle very large, very long and computationally intensive problems in neuroscience. Further, Arbor aims to prepare neuroscience users for new HPC architectures. At the same time, Arbor is meant to be easy to use and understand, so that also beginners to computational neuroscience can get up to speed quickly. Whether your model is large or small, Arbor is able to compute your result on almost any hardware as quick as possible.

Arbor models multi-compartment neurons characterized by axonal delays, synaptic functions and cables. Besides multi-compartment cells Arbor also models leaky integrate-and-fire cells and artificial spike sources.

Use cases?

Use cases have included the neocortical simulations, macaque visual cortical areas, and olfactory bulb simulations. Arbor developers are collaborating with researchers and modellers in the development of efficient support for structural plasticity.

Arbor applications have so far been focused primarily on synthetic verification, testing and performance benchmarks (see arxiv.org/abs/1901.07454 for details).

However, it is planned to increase the user base within the next three years by preparing user-defined cellular-level models for portable HPC simulations using Arbor across a variety of current and emerging supercomputing resources through a Call for Expression of Interest (check out www.humanbrainproject.eu/en/collaborate/open-calls/ for updates).

Expert computational neuroscientists from both outside and inside the Human Brain Project (HBP) are invited to develop models and adapt workflows for Arbor, specifically for networks of detailed cell models that require HPC (github.com/arbor-sim/arbor).

Where do I get it?

Arbor is developed by the Swiss National Supercomputing Center and the Jülich Supercomputing Center under the auspices of the HBP as an active open source project, developed using an open-development model with code, continuous integration, bug reports and issues hosted on GitHub: github.com/arbor-sim/arbor. Benchmarking and validation of Arbor and other simulators can be performed with the NSuite performance and validation testing suite (nsuite.readthedocs.io, github.com/arbor-sim/nsuite).

Is it suitable for me?

Use Arbor if you have the need to run your detailed cellular-level model in an efficient manner; Arbor has been designed to become an order of magnitude more efficient both in terms of solution times and memory usage as compared to existing simulation engines, without sacrificing ease of use and flexibility (see arxiv.org/abs/1901.07454 for details). Full support for the SONATA model exchange format is under active development, and Arbor will also provide APIs for integration with other tools and simulators, including co-simulation with NEST (nest-simulator.org) mediated via spike exchange for large, multi-scale brain simulations, and participation in orchestrated simulation, analysis and visualization applications with NEST, Elephant (neuralensemble.org/elephant/), TVB (thevirtualbrain.org) and other tools using the HBP in-situ pipeline (hbp-hpc-platform.fz-juelich.de/?hbp_software=in-situ-pipeline).

How do I work with it?

Arbor provides both a low level C++ API and a higher level Python API:


Get help and get involved

Arbor Documentation - Arbors concepts and APIs

The first place to search for an answer is probably our documentation. If information you seek is missing, let us know.

Arbor Discussions - User Forums

Arbor Discussions is intended to be a forum for questions on the usage of Arbor, the exchange of code and general discussions about Arbor. The idea is that all users profit by sharing their experience. All Arbor developers are participate in this forum as well, so even more complex questions should be getting a satisfying answer.

Github repo - Code, Issues, Pull Requests

Arbor draws its strength from the many people that use and improve it. We are happy to consider your contributions (e.g. own models, bug or documentation fixes) for addition to Arbor. We work with the Issue/Pull Request workflow, so head on over to our our code repo to propose your new features or bug fixes.

Arbor Wiki - Guides and Howtos

While still in early stages, the Arbor Wiki is a place where we are slowly compiling articles on how various procedures work in both the team (e.g. How do I make a PR?) and what facts we have discovered during the construction of a simulation or the use of data obtained from experiment or online-databases. You're invited to search the Wiki for information, and encouraged to contribute your knowledge.

Get in touch

Have you used Arbor to create a model? Have you used Arbor in a publication? Do you have a workflow or tool that involves Arbor? Please let us know! We're eager to find out how Arbor is used and we'd be very happy to showcase your work through our channels. You can reach out to us by email.

For general inquiry, you can approach the Arbor team via email. Press materials (logos) and the Copyright Transfer Agreement can be found in our materials repository.