Releases: arbor-sim/arbor
v0.12.0
Release v0.12 (#2506)
Release notes
This release constitutes a major improvement in terms of parallel
performance
by replacing the underlying MPI algorithm (see our paper at IPDPS'26)
and
setup time by improving label resolution and adding the access to raw
labels.
On the functional side, we introduced AdEx cells, added a new load
balancing
method, and probes for the reversal potential.
What's Changed
- V0.11.0 rc by @thorstenhater in
#2454 - Release finalisation by @thorstenhater in
#2455 - CSCS CI by @thorstenhater in
#2448 - Re-factor connection setup and event dispatch. by @thorstenhater in
#2449 - Add tiled busyring by @thorstenhater in
#2456 - Fill in a missing part of the docs by @thorstenhater in
#2462 - Major Optimisations in Label Resolution by @thorstenhater in
#2458 - Refactor domain decomposition by @thorstenhater in
#2457 - Add an escape hatch to label resolution by @thorstenhater in
#2459 - Fix crash on probding elided values by @thorstenhater in
#2466 - Only store PRNG data if needed by @thorstenhater in
#2467 - 🐍 Polish
label_dictby @thorstenhater in
#2451 - use better builtins for double max/min by @thorstenhater in
#2469 - Remove typed map and refactor cable cell by @thorstenhater in
#2468 - Many small refactoring / clean-ups / memory savings by @thorstenhater
in #2465 - Bump pb11 to latest major version by @thorstenhater in
#2475 - Fix GPU test issues by @ibanezbm in
#2479 - Align versions by @thorstenhater in
#2481 - Add probing of eX. by @thorstenhater in
#2478 - Add trivial compiler test by @thorstenhater in
#2488 - Replace MPI_Allgatherv with MPI_Alltoallv for communication pattern by
@ibanezbm in #2460 - Use CBRNG in schedules. by @thorstenhater in
#2386 - Update year 🎉 by @thorstenhater in
#2491 - Don't use deprecated numpy functions by @thorstenhater in
#2490 - Co-simulation tutorial by @thorstenhater in
#2492 - Nested timers by @marvinKaster in
#2486 - Clean-up iclamp interface by @thorstenhater in
#2494 - Fix override by @thorstenhater in
#2493 - Better use of restrict by @thorstenhater in
#2476 - Add AdEx cells. by @thorstenhater in
#2230 - units in cv policy by @thorstenhater in
#2495 - Flat map in mechanism description for 1.5x speed-up in synapse
creation by @thorstenhater in
#2501 - Perf/compress contiguous by @thorstenhater in
#2470 - Allow more SWC files in the parser by @thorstenhater in
#2471 - STDP case for busyring benchmark by @jlubo in
#2489 - round robin load balance by @thorstenhater in
#2500
New Contributors
- @ibanezbm made their first contribution in
#2479 - @marvinKaster made their first contribution in
#2486
Full Changelog:
v0.11.0...v0.12.0
v0.11.0
v0.11.0 (22.04.2025 Happy Easter)
Focussing on bug fixes, modernisation and performance improvements.
The memory footprint has been reduced substantially
Major changes since v0.10
- Modernising the code base and infrastructure:
- Begin adopting C++20
- Use the
rufflinter / formatter - Use CPM and simplify CMake.
- Fixing problems with diffusion
- Update units and scaling
- Correct solver matrix coefficients
⚠️ Modcc used to mis-compile-K^ninto(-K)^ndue to a parser error- Allow probing of point mechanism state variables by tag.
Breaking changes
- Stricter checks on network construction / simulation parameters.
- connections will now throw errors when given negative / zero delays
- simulation will throw when given a network with minimum delay less than the
timestep
- Discretisation now is a property of the
cable_cellobject, no longer the
decor
New tutorials and documentation
- Plasticity tutorial
- Add connectivity tutorial
Internal changes
- Auto-generate type stubs
- Remove clock for std::chrono
- added E_R to lif cell model
- Performance
- Fix embarrassingly quadratic bug in fvm-layout
- Faster sort spikes
- Faster event dispatch
- Memory footprint
- Create less intermediate data from events
- Elide GPU allocations for unused arrays (
Xd,Xi, ...)
- Clean-up catalogue extension. by @thorstenhater in #2409
- Refactor discretization. by @thorstenhater in #2415
Detailed Changes
- v0.10.0 post-release by @thorstenhater in #2381
- Auto-generate type stubs by @thorstenhater in #2384
- added E_R to lif cell model by @ErbB4 in #2383
- ASCII art for segment tree by @thorstenhater in #2224
- Small syntax fix for profiler macro calls by @jlubo in #2391
- added brunel network tutorial by @ErbB4 in #2387
- 📊 Cache region/locset during paint/place. by @thorstenhater in #2389
- Make const element proxy. by @thorstenhater in #2388
- Use CPM and simplify CMake. by @thorstenhater in #2267
- Fix embarrassingly quadratic bug in fvm-layout. by @thorstenhater in #2397
- Add debug print to flaky JSON test by @thorstenhater in #2404
- Replace black and flake8 with Ruff by @thorstenhater in #2405
- 🧹 Emit multiply kernel only if potentially called. by @thorstenhater in #2399
- re-introduce updated CSCS CI by @boeschf in #2402
- Create less intermediate data from events by @thorstenhater in #2249
- Remove clock for std::chrono by @thorstenhater in #2408
- Clean-up catalogue extension. by @thorstenhater in #2409
- Make version dynamic by @thorstenhater in #2403
- C++20 Spaceship operator by @thorstenhater in #2401
- Fix memory based on PR "less event data" by @thorstenhater in #2407
- Fix molarity scaling. by @thorstenhater in #2414
- Avoid
bash\rwith gitattributes eol by @Helveg in #2252 - spack: variant for hwloc support by @boeschf in #2419
- Fix me. by @thorstenhater in #2420
- Check for supported compilers. by @thorstenhater in #2411
- Clean-up redundant items: files and functions. by @thorstenhater in #2410
- Refactor discretization. by @thorstenhater in #2415
- Allow probing of point state by tag. by @thorstenhater in #2417
- Reduce even more GPU allocations by @thorstenhater in #2394
- event handling: fix a bug and clean house by @boeschf in #2421
- use supported compiler for codeql by @boeschf in #2422
- Reduce redundant GPU allocations by @thorstenhater in #2393
- 🧹 Fix GCC complaints by @thorstenhater in #2400
- Add iostream to forest by @thorstenhater in #2423
- Plasticity tutorial by @thorstenhater in #2426
- Add connectivity tutorial. by @thorstenhater in #2427
- Add cable cell option to Brunel example by @thorstenhater in #2430
- Bump year by @thorstenhater in #2435
- Erroneous precedence handling for
^in modcc by @thorstenhater in #2432 - fixed code line number by @ErbB4 in #2437
- Diffusion: tests, fixed coefficients in the solver, & tutorial by @thorstenhater in #2226
- 📊 Sort spikes. by @thorstenhater in #2433
- Fixes for cantata by @thorstenhater in #2438
- Adjust Diffusion Scaling by @thorstenhater in #2439
- Clean up K_T and K_P. by @thorstenhater in #2428
- Polish event dispatch by @thorstenhater in #2434
- Stricter checks on network construction / simulation parameters. by @thorstenhater in #2264
- Bump JSON by @thorstenhater in #2452
Full Changelog: v0.10.0...v0.11.0
v0.10.0
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)
modccno longer allows internal variables (v,celsius, ...) asASSIGNED- 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: v0.9.0...v0.10.0
v0.10.0
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)
modccno longer allows internal variables (v,celsius, ...) asASSIGNED- 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: v0.9.0...v0.10.0
v0.9.0
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_onmethod 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)andtanh(x). Control volumeareais 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 nowarb.context(threads=12, gpu=None). In the case no arguments are supplied, the context initialized todefault_allocation, which means it will use the total number of threads and first GPU that are locally available.arbor.simulationconstructed without an explicitarbor.contextalso initializes adefault_allocation. - Version bumps:
- CUDA 11 or higher is required for GPU builds.
Full commit log
Neuroscience, documentation
- Emit better warning. by @thorstenhater in #2071
- ANN activation functions for NMODL:
sigmoid(x),relu(x)andtanh(x)by @llandsmeer in #2052 - 📊 Make profiler output a bit nicer. by @thorstenhater in #2078
- Merge GUI tutorial by @brenthuisman in #2088
- Busyring example by @boeschf in #2100
- Feature: External Connectivity by @thorstenhater in #2001
- FEATURE: fixed dt by @boeschf in #2053
- mention Matrix, GUI, Playground in docs by @brenthuisman in #2113
- Document presets by @thorstenhater in #2126
- Doc updates by @brenthuisman in #2119
- CV area exposed to NMODL. by @thorstenhater in #2110
- Fix enumeration in docs by @thorstenhater in #2140
- Docs: corrections. by @brenthuisman in #2135
- Fix documentation by @boeschf in #2152
- Address missing logo on all but front page by @brenthuisman in #2155
- Document features by @brenthuisman in #2158
- Make (most) painted parameters scalable. by @thorstenhater in #2141
- Add better (helpful?) errors on mechanism semantic misuse. by @thorstenhater in #2171
- Checkpoint/Resume by @thorstenhater in #2081
Core
- Better handling of powers in modcc. by @thorstenhater in #2061
- Silence spurious unused variable warnings in generated code by @bcumming in #2073
- BluePyOpt API updates by @lukasgd in #2045
- Add some missing #include directives by @musicinmybrain in #2080
- Remove redundant sample events structure. by @thorstenhater in #2079
- 🧹 Re-factor FVM lowered cell implementation and shared state by @thorstenhater in #2082
- Take less locks for shorter times when sampling. by @thorstenhater in #2093
- Fix LIF oversampling. by @thorstenhater in #2091
- 📊 Pin threads by @thorstenhater in #2094
- Add zero'ing by @thorstenhater in #2107
- Add an error on NET_RECEIVE w/ > 1 args. by @thorstenhater in #2127
- Update busyring to generate rings by @bcumming in #2144
- Apply some polish to model construction. by @thorstenhater in #2134
- SVE backend by @boeschf in #2148
- Exit
sup::pathstage left; enterstd::filesystem::pathstage right by @thorstenhater in #2165 - gtest dependency by @boeschf in #2163
Build, testing, CI
- v0.8.1 by @brenthuisman in #2072
- v0.8.1 postrelease by @brenthuisman in #2074
- Enable Spack tests by @brenthuisman in #2098
- Python/pip strikes again: execute
pip installin venvs by @brenthuisman in #2111 - Scikit build core by @brenthuisman in #2121
- Spack: add dev version by @brenthuisman in #2150
- Break out pip and doc tests, exclude doc-change from eating up precious runner cycles by @brenthuisman in #2160
- rename test-pip.yml by @boeschf in #2166
- cscs-ci by @boeschf in #2149
- gtest in CI containers by @boeschf in #2170
- Spack-solvable versions, add tests to Spack workflow by @brenthuisman in #2156
- Fudge version in pyproject.toml for ci by @brenthuisman in #2200
- enable remote example by @boeschf in #2173
Fixes, optimization
- [BUGFIX] a-b-c: actually set compiler, improved default by @brenthuisman in #2051
- 🐙 Optimise PPACK by @thorstenhater in #2067
- Silence flake8 and appease black. by @thorstenhater in #2086
- BUGFIX: add missing functions to sve backend by @boeschf in #2096
- BUGFIX gpu ppack declarations by @boeschf in #2087
- BUGFIX: gpu mechanism init by @boeschf in #2095
- The Initialisation Optimisation by @thorstenhater in #2097
- Fix crash in FindId Visitor. by @thorstenhater in #2115
- Add LTO and M1 arch to CMake by @thorstenhater in #2106
- Fix crash on probing non-existent mechanism state. by @thorstenhater in #2112
- Python/concurrency defaults by @brenthuisman in #1979
- Add faster merge events. by @thorstenhater in #2108
- Fix a typo in python bindings. by @thorstenhater in #2125
- Fix incorrect mention of attribute
catalogueinsingle_cell_modelby @Helveg in #2122 - Avoid crash when integrating over empty branch. by @thorstenhater in #2124
- fix lint pipleine by @boeschf in #2151
- Ward against probing the void. by @thorstenhater in #2139
- Fix GPU/NVC problems by @thorstenhater in #2143
- fix ODR violation by @boeschf in #2154
New Contributors
- @musicinmybrain made their first contribution in #2080
Full Changelog: v0.8.1...v0.9.0
v0.8.1
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
--cxxflag inarbor-build-catalogueis now properly used; falls back toc++. (#2051)
Full commit log
- Post release: add Zenodo entry, add Spack entry, update docs and scripts by @brenthuisman in #2036
- BUGFIX: add ARB_CUDA flag to example catalogue by @boeschf in #2039
- Additional builtin functions to Arbor's NMODL dialect by @boeschf in #2035
- Throw better errors when we cannot look up ion diffusivity by @thorstenhater in #2040
- ⚡ Voltage Processes by @thorstenhater in #2033
- simplify make catalogue by @boeschf in #2042
- spack gpu option by @boeschf in #2043
- Remove deprecated spike_detector. by @thorstenhater in #2041
- make ARB_MODCC functional again by @brenthuisman in #2029
- Yank v0.5 from Spack file, it does not build due to change in setting arch by @brenthuisman in #2037
- Use pugixml instead of libxml2 by @thorstenhater in #2048
- [BUGFIX] a-b-c: actually set compiler, improved default by @brenthuisman in #2051
- Sde Tutorial by @boeschf in #2044
- Set Python to known version for all CI workflows by @brenthuisman in #2058
- consistent mechanism ids by @boeschf in #2057
- Fix docs about exprelr. by @thorstenhater in #2064
- Allow __ in profiler names. by @thorstenhater in #2065
- CI fixes for wheel building, prep for musllinux, Spack by @brenthuisman in #2069
Full Changelog: v0.8...v0.8.1
v0.8
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
- 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 - Allow editing morphologies. Supported operations: join_at, split_at, equivalence, equality, apply isometry. #1957
- Arbor cable cell exporter and backend support in BluePyOpt. #1959
- Make LIF cells probeable. #2021
Breaking changes since v0.7:
- A change in decor API:
arbor.cable_cellhas the labels and decor arguments swapped. I.e.:(tree, labels, decor)
->(tree, decor, label). Labels are now optional. #1978 - Remove the
generate-cataloguescript.modccaccepts now a list of NMODL files and is able to spit out a catalogue.cpp file. #1975 - Mechanism ABI version is bumped to 0.3.1. #1884
- Rename spike detector -> threshold detector. #1976
- Remove access to time
tin NMODL. #1967 - Major dependency version bumps:
- GCC: 9 and up
- CUDA: 11 and up
- Clang: 10 and up
Full commit log
Neuroscience, documentation
- Convenience: shorter code to build decor. by @thorstenhater in #1903
- Fix doc error. by @thorstenhater in #1934
- probe id -> probeset id, and clarification in docs by @brenthuisman in #1898
- Elaborate on mpi4py. by @thorstenhater in #1940
- Add all_closest to place_pwlin. by @thorstenhater in #1952
- Add more visibility to decor. by @thorstenhater in #1953
- add spike source docs. by @thorstenhater in #1939
- 🦑 Excise
timeby @thorstenhater in #1967 - 🐍 Rename spike detector -> threshold detector by @thorstenhater in #1976
- Mutable connection table by @thorstenhater in #1919
- Allow multiple schedules per source_cell. by @thorstenhater in #1963
- Allow editing morphologies by @thorstenhater in #1957
- generate-catalogue is gone by @thorstenhater in #1975
- SDE by @boeschf in #1884
- Discuss q10 pattern in NMODL docs. by @thorstenhater in #1995
Core
- modcc: Allow redundant, but correct READ declaration. by @thorstenhater in #1936
- Deny WATCH statements. by @thorstenhater in #1942
- Excise fvm type aliases by @thorstenhater in #1938
- Add stack information to
arbor_exceptionby @thorstenhater in #1945 - Expose find_private_gpu to python by @thorstenhater in #1943
- Make
mpoints hashable. by @thorstenhater in #1950 - Arborio reads from Stream objects now. by @thorstenhater in #1937
- Remove explicit generator by @thorstenhater in #1962
- Clean up plasticity by @thorstenhater in #1985
- Heaviside step by @llandsmeer in #1989
- Do not restrict SWC record identifier by @schmitts in #1996
- Make decor mandatory and labels optional. by @thorstenhater in #1978
- Add virtual dtors to recipe components by @thorstenhater in #2000
- cleanup documentation by @boeschf in #2007
- Arbor cable cell exporter and backend support in BluePyOpt by @lukasgd in #1959
- Add a plethora of config options to a-b-c. by @thorstenhater in #1958
- Make LIF cells probeable. by @thorstenhater in #2021
- Added fixture dev docs. Made fixtures more robust. by @Helveg in #2025
- Make LIF cells LIF cells again. by @thorstenhater in #2026
- update cray documentation by @boeschf in #2022
Build, testing, CI
- Spack cache change, bump versions by @brenthuisman in #1926
- Expand docs on testing. by @thorstenhater in #1944
- Fix cmake paths so we can use Arbor as a sub-project. by @thorstenhater in #1948
- bump pybind11 for py3.11 compat by @brenthuisman in #1955
- Add spike counts to pre-commit tests. by @thorstenhater in #1965
- Move pybind11 to
/extby @brenthuisman in #1968 - Add black config to pyproject.toml. by @thorstenhater in #1971
- Bump CI workflow and GoogleTest by @boeschf in #2003
- Remove cscs-ci badges by @brenthuisman in #1999
- fix cmake: ninja + ExternalProject by @boeschf in #2008
- Use HTTPS access instead of ssh/git for gtest. by @thorstenhater in #2009
- Add memory sanitizer by @thorstenhater in #2013
- Try to use OpenMPI as of brew/apt. by @thorstenhater in #2016
- Bump versions by @thorstenhater in #2017
- Include ubenches into CI by @boeschf in #2014
- Speed up CI by @boeschf in #2019
- Update pyproject.toml for Py3.11 by @brenthuisman in #2018
- Check internal invariants in CI by @thorstenhater in #2023
Fixes, optimization
- Disable inconsistent rule. by @thorstenhater in #1928
- Action must change
VERSIONexcept on version tag. by @brenthuisman in #1931 - NMDOL: default catalogue clean up by @thorstenhater in #1935
- PANIC! Forgot to fix fvm type in GPU!!!. by @thorstenhater in #1946
- Remove abuse of arg_v. by @thorstenhater in #1954
- Catch symdiff errors. by @thorstenhater in #1964
- Bug fix: point mechs applying weights to ionic concentrations by @thorstenhater in #1960
- Fix some issues found by PVS Studio. by @thorstenhater in #1974
- load_asc Python fix by @lukasgd in #1977
- Ensure proper Pybind11 is found. by @thorstenhater in #1961
- missing std namespace by @boeschf in #1994
- Optimize CPU-side solvers by @thorstenhater in #1992
- 🦑 modcc now generates GPU mechs again. by @thorstenhater in #1988
- 🦑 Never call a procedure again. by @thorstenhater in #1972
- compiler warnings by @boeschf in #2006
- guard for zero random variables by @boeschf in #2031
- fix some compiler warning by @boeschf in #2034
New Contributors
Full Changelog: v0.7...v0.8-rc
v0.7
What's Changed
Neuroscience/documentation
- prep extracellular potentials tutorial. Updated corresponding example by @espenhgn in #1825
- Add documentation on faster NMODL. by @thorstenhater in #1840
- Add tstop doc in recipe API doc by @schmitts in #1852
- Use list comprehension to speed up creation of connections by @schmitts in #1864
- Support markers in neurolucida ascii files by @bcumming in #1867
- simplified
create_polygonfunction in lfpykit example by @espenhgn in #1881 - Better key for the
lfpykitintersphinx mapping by @Helveg in #1878 - Sort (in python) the mechanism names (for convenience). by @thorstenhater in #1882
- Always emit weight expression. by @thorstenhater in #1875
- Add support for epoch callbacks by @bcumming in #1873
- Add introspection for global properties. by @thorstenhater in #1890
- Add point probes to demo by @schmitts in #1891
- Tut/use avail threads by @brenthuisman in #1900
- Allen tutorial by @brenthuisman in #1781
- New policy 'round_robin_halt' by @jlubo in #1868
- Axial Diffusion by @thorstenhater in #1729
- Add some convenience to simulation creation. by @thorstenhater in #1904
- Predefine SWC Regions. by @thorstenhater in #1911
- Diffusion Example Improvements (and a bit of clean-up) by @thorstenhater in #1914
- Inhomogeneous parameters by @AdhocMan in #1887
- Fix line numbers in tutorials and assorted doc corrections by @brenthuisman in #1917
Core
- 🐍 Be more lenient when accepting args to file I/O by @thorstenhater in #1819
- modcc: generate missing
node_indexread needed for reading timetin the mechanisms by @noraabiakar in #1866 - Add Developer Documentation by @thorstenhater in #1639
- Isolate external catalogues from libarbor.a. by @thorstenhater in #1837
Build, testing, CI
- Build Python 3.10 binary wheels. Add v0.6 to spackfile. by @brenthuisman in #1817
- export API by @boeschf in #1824
- export doc by @boeschf in #1849
- Include CMAKE+CUDA iff NVCC is needed. by @thorstenhater in #1855
- Bit more on Spack, fix in tutorial by @brenthuisman in #1838
- json submodule added by @brenthuisman in #1871
- Fix a bug where Debian/Ubuntu's Python malfunctions by @brenthuisman in #1894
- Have dependency version policy by @brenthuisman in #1865
- random123 submodule added by @brenthuisman in #1872
- Fix tool installation paths. by @thorstenhater in #1905
- Adopt Black for Python. by @thorstenhater in #1906
- add cmake checks for non-bundled random123 by @bcumming in #1907
- Temporarily disable A64FX CI by @bcumming in #1910
- Adopt flake8 by @thorstenhater in #1908
- Move Python build to
pyproject.toml, bump Python minver to 3.7, fix macos wheel generation by @brenthuisman in #1916 - Weekly CI Python wheel build pushes to Test.PyPI.org by @brenthuisman in #1921
Fixes, optimization
- Users may not give dt < 0. by @thorstenhater in #1821
- Fix
ubenchescompilation errors by @noraabiakar in #1828 - death test: wrong signal by @boeschf in #1858
- Make brunel.py setup faster. by @thorstenhater in #1854
- add a better error. by @thorstenhater in #1846
- Fix load_component for label-dict by @noraabiakar in #1859
- Found out the hard way that this is still needed :/ by @thorstenhater in #1860
- Elide memcpy where not needed by @thorstenhater in #1863
- Bug fix: Fix voltage vector size in threshold_watcher contstructor by @noraabiakar in #1820
- remove test statements for move ctor by @boeschf in #1899
- Code Quality: PVS Studio Finds by @thorstenhater in #1901
- Two context decomp swaps were forgotten by @brenthuisman in #1912
New Contributors
Full Changelog: v0.6...v0.7
v0.6
What's Changed
Core API:
- Add S-Exp for CV Policies by @thorstenhater in #1511
- Clean-up and extend mech cat iterator interface. by @thorstenhater in #1564
- Mech ABI: The final step. by @thorstenhater in #1452
- Add
dim3to gridDim constructor in generated mechanism code by @noraabiakar in #1630 - Added an empty catalogue by @Helveg in #1677
- Allow to limit Poisson schedule with a stop time (closes #1617) by @schmitts in #1684
- Expose profiler to Python by @Helveg in #1688
- Added a debug mode to
build-catalogueby @Helveg in #1686 - Write build-catalogue (c)make errors to
stdoutandstderrby @Helveg in #1679 - Makejobs arg by @Helveg in #1673
- Feature/python clean memory by @max9901 in #1670
- Feature/label dict by @apeyser in #1711
- Add locset expressions for proximal and distal translation of locations by @bcumming in #1671
- Gap Junction mechanisms by @noraabiakar in #1682
- Solve non-linear systems that are not kinetic schemes. by @noraabiakar in #1724
- Add cos and sin SVE implementations by @noraabiakar in #1744
- Deal with zero radius points in a morphology by @halfflat in #1719
- Simplify default proc_allocation generation. by @halfflat in #1725
- Find morphology location from a coordinate by @bcumming in #1751
- resurrect lmorpho by @schmitts in #1746
- Expose information about the CV discretization to the public inteface by @noraabiakar in #1758
- Allow the use of string s-expression CV-policies in pyarb by @noraabiakar in #1799
- Construct
domain_decompositiongiven a list ofgroup_descriptions. by @noraabiakar in #1788 - Profile externally loaded mechanisms by @noraabiakar in #1691
- Have option to set thread count to local maximum by @brenthuisman in #1716
CI/build/testing:
- Python unit test clean-up by @noraabiakar in #1595
- Add CI for the in-repo Spack package by @schmitts in #1544
- Ci/sanitize by @thorstenhater in #1521
- Update spack package to include fmt for arbor@0.5.3: by @bcumming in #1609
- Cache Spack for GHA by @schmitts in #1619
- Run examples via scripts (closes #1566) by @schmitts in #1631
- Build a catalogue in CI by @schmitts in #1632
- Switch to PyPA's
cibuildwheelaction repo's. by @Helveg in #1703 - Automatic test discovery sans boilerplate by @Helveg in #1693
- build external mechanism catalogues in release mode by @noraabiakar in #1713
make VERBOSE=1in verbose mode by @Helveg in #1715- Bump pybind to 2.8.1 by @brenthuisman in #1742
- Better error reporting in python context interface by @bcumming in #1732
- Better error diagnostic in python when invalid cell properties are provided. by @bcumming in #1743
- Test separately built catalogues by @bcumming in #1748
- Weekly cron job checking for submodule updates by @brenthuisman in #1741
- Added local Python testsuite instructions by @Helveg in #1809
- CMake CUDA clean-up. by @thorstenhater in #1804
- Add dry run benchmark cell model for testing communication scaling by @bcumming in #1627
- v0.6-rc by @brenthuisman in #1814
- More robust build-catalogue by @thorstenhater in #1784
Documentation:
arbor.mechanism_catalogue.extend()documentation added. by @brenthuisman in #1597- zenodo 0.5.2 entry by @brenthuisman in #1598
- mpi.py updated for new synapse labelling by @brenthuisman in #1602
- Tutorial structure: remove deduplication, includify by @brenthuisman in #1575
- Docs mechabi by @brenthuisman in #1610
- Improved documentation about weights by @brenthuisman in #1620
- Adapt to changes in Pandas requiring unique indices by @brenthuisman in #1625
- Add implies default license by @kanzl in #1635
- Update Slack to Gitter by @brenthuisman in #1637
- Better Python installation instructions by @brenthuisman in #1622
- Add example based on LFPykit example Example_Arbor_swc.ipynb by @espenhgn in #1652
- Name and describe arguments to constructors where ambiguous. by @brenthuisman in #1678
- improved Github Issue templates by @brenthuisman in #1698
- Add some comments about units to network ring examples by @schmitts in #1697
- Fix link (closes #1664) by @schmitts in #1701
- Fix class members in cable example by @schmitts in #1641
- Correctify and seabornize dendrite tutorial by @brenthuisman in #1706
- Polish GJ example readme by @thorstenhater in #1726
- Completed the docs with more
config()flags by @Helveg in #1708 - Make connectivity example more complete by @brenthuisman in #1721
- Add description of arbor and NEURON's
nernstapplication rules to the docs. by @noraabiakar in #1638 - Show docs version info more prominently on RTD by @brenthuisman in #1737
- Update/fix tinyopt README.md by @halfflat in #1747
- Add python gap junction example by @kanzl in #1750
- Documentation: add expected nmodl units by @noraabiakar in #1756
- Fixed broken link from
get_probestoprobesby @Helveg in #1763 - Removed double preposition by @Helveg in #1762
- Fixed MD to RST typo by @Helveg in #1760
- Fix broken links in
probe_sample.rstby @Helveg in #1761 - Docs/contrib updates by @brenthuisman in #1736
- Add Release procedure to docs by @brenthuisman in #1738
- Example and tutorial for two cells connected via a gap junction by @schmitts in #1771
- Have single source for citation info, compatible with Github citation UI by @brenthuisman in #1791
- Advertise GH Discussions for modelling by @brenthuisman in #1793
- Add release cycle info to docs by @brenthuisman in #1798
- Added a warning when users are reading latest docs. by @Helveg in #1800
Fixes/optimization:
- Fix GPU compile. by @thorstenhater in #1601
- Compile all arbor source files with
-fvisibility=hiddenby @noraabiakar in #1599 - Bug/assorted static analysis by @thorstenhater in #1615
- Fix ambiguous Region/Locset expressions by @thorstenhater in #1629
- Clean-up AVX routine and global def [EOM] by @thorstenhater in #1618
- Categorise ASSIGNED RANGE variables as STATE-ish. by @thorstenhater in #1624
- Check that mechanisms have the right kind by @noraabiakar in #1633
- Resolve uninitialised values. by @thorstenhater in #1616
- Correctly parse diameter in ASCII files by @bcumming in #1640
- Attempt fixing a64fx build by @bcumming in #1636
- Fix simulation::add_sampler cell_group dispatch by @noraabiakar in #1654
- Fix on-components on empty cable bug by @halffla...
Arbor Library v0.5.2
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.