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.
For the past months weâve had a weekly public-ish meeting with some modelers. Today we announce that this meeting is now open to all! Every Wednesday 13:00 CET we convene in the Arbor Community channel on Gitter to have a videochat for an hour of questions, answers, demonstrations, anything related to Arbor really. Please join if youâre interested in sharing your work, getting help or just getting an idea of whatâs going on in our community.
The Arbor workshop at the HBP Summit 2023 has concluded. To those who attended: thanks for your interest! Please reach out if you are thinking of using Arbor for your science.
How have you used Arbor and how do you plan to use Arbor going forward?
Brief user presentations
Discussion!
If you are working on large networks of morphologically detailed cells or would like to, donât hesitate to join and bring your ideas, questions, struggles, etc.! We hope to create a fruitful event thatâll help you further.
At the 2023 edition of the Human Brain Project Summit Arbor will be present with both three posters and a hands-on session. One of the posters is ready and can be previewed at here. The hands-on takes place Monday 27 March. Keep an eye on the official program for the timeslot.
If you are working on large networks of morphologically detailed cells or would like to, donât hesitate to join and bring your ideas, questions, struggles, etc.! We hope to create a fruitful event thatâll help you further.
As of today the Arbor-playground is online. The Playground is a version of Arbor compiled to the web, through Emscripten and Pyodide. This means you can take Arbor for a test drive right in your browser, without having to install anything. The Playground comes preloaded with a few models, weâre still working on you being able to load them yourself.
A đ holiday release! Not much has changed in a month, but weâd like to share it all the same. Notably, the Arbor GUIis 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)
With the release of Arbor v0.8 we plan to co-release Arbor and Arbor GUI. It took a bit longer than anticipated to get the generation of the Linux AppImage and MacOS Disk Image back in working state, but we succeeded :) At this time we do not have a MacOS image for the Apple Arm architecture, but on this platform you can build the Arbor GUI yourself.
With the v0.8 release of Arbor GUI, youâre getting all the goodies of Arbor v0.8. Please find the code and ready-made executables here.
Version v0.8 has been released! This is the third version released in our 3 month release cadence, again with a bit of delay.
Major new features are:
Stochastic Differential Equations. Introduces sources of white noise to arbor (and nmodl). Both point and density mechanisms may now use white noise as part of the state updates, turning the ODEs effectively into SDEs. The noise sources are provided per connection end point (point mech.) or control volume (density mech.) and are uncorrelated (spatially, temporally and across different mechanism instantiations). #1884
Mutable connection table. Add functionality, docs, and examples on editing the connection table. This is a first, small PR on the topic, further functionality will come as requested. #1919
A change in decor API: arbor.cable_cell has the labels and decor arguments swapped. I.e.: (tree, labels, decor) -> (tree, decor, label). Labels are now optional. #1978
Remove the generate-catalogue script. modcc accepts now a list of NMODL files and is able to spit out a catalogue.cpp file. #1975
The next Arbor release, v0.8 is planned in the week of 19 September 2022.
The next developer meeting is planned for 30 August 2022, from 10:00-13:00 CEST. The meeting will be held here; downloadable as ICS file. Any changes to the scheduling of this meeting will be advertised here and through our Gitter.
Like last time, in this meeting, a list of features (see âNext Releaseâ column) is proposed for delivery in the next release. The Developer Meeting is the right place to make your own priorities known, and any filed Issues can be added for inclusion in the next (or later) release. Please do join if you have research that depends on the delivery of features in Arbor, or if youâre interested in Arbor development! If youâd like to bring anything to our attention in the meeting, make sure itâs filed as an issue.
Our Kanban board lets you follow all of this outside of the developer meetings. At a glance you can see whatâs cooking in Arbor. We use Githubâs Milestone feature to plan Issues for specific releases, so with time, the Milestone overview will give you some insight in whatâs planned for and already merged in Arbor.
Hope to see you there!
Please find the minutes of earlier Developer Meetings here.