** 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 😄.
- 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)
andtanh(x)
. Control volumearea
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.
- 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.simulation
constructed without an explicitarbor.context
also initializes adefault_allocation
. - Version bumps:
- CUDA 11 or higher is required for GPU builds.
- Emit better warning. by @thorstenhater in arbor-sim#2071
- ANN activation functions for NMODL:
sigmoid(x)
,relu(x)
andtanh(x)
by @llandsmeer in arbor-sim#2052 - 📊 Make profiler output a bit nicer. by @thorstenhater in arbor-sim#2078
- Merge GUI tutorial by @brenthuisman in arbor-sim#2088
- Busyring example by @boeschf in arbor-sim#2100
- Feature: External Connectivity by @thorstenhater in arbor-sim#2001
- FEATURE: fixed dt by @boeschf in arbor-sim#2053
- mention Matrix, GUI, Playground in docs by @brenthuisman in arbor-sim#2113
- Document presets by @thorstenhater in arbor-sim#2126
- Doc updates by @brenthuisman in arbor-sim#2119
- CV area exposed to NMODL. by @thorstenhater in arbor-sim#2110
- Fix enumeration in docs by @thorstenhater in arbor-sim#2140
- Docs: corrections. by @brenthuisman in arbor-sim#2135
- Fix documentation by @boeschf in arbor-sim#2152
- Address missing logo on all but front page by @brenthuisman in arbor-sim#2155
- Document features by @brenthuisman in arbor-sim#2158
- Make (most) painted parameters scalable. by @thorstenhater in arbor-sim#2141
- Add better (helpful?) errors on mechanism semantic misuse. by @thorstenhater in arbor-sim#2171
- Checkpoint/Resume by @thorstenhater in arbor-sim#2081
- Better handling of powers in modcc. by @thorstenhater in arbor-sim#2061
- Silence spurious unused variable warnings in generated code by @bcumming in arbor-sim#2073
- BluePyOpt API updates by @lukasgd in arbor-sim#2045
- Add some missing #include directives by @musicinmybrain in arbor-sim#2080
- Remove redundant sample events structure. by @thorstenhater in arbor-sim#2079
- 🧹 Re-factor FVM lowered cell implementation and shared state by @thorstenhater in arbor-sim#2082
- Take less locks for shorter times when sampling. by @thorstenhater in arbor-sim#2093
- Fix LIF oversampling. by @thorstenhater in arbor-sim#2091
- 📊 Pin threads by @thorstenhater in arbor-sim#2094
- Add zero'ing by @thorstenhater in arbor-sim#2107
- Add an error on NET_RECEIVE w/ > 1 args. by @thorstenhater in arbor-sim#2127
- Update busyring to generate rings by @bcumming in arbor-sim#2144
- Apply some polish to model construction. by @thorstenhater in arbor-sim#2134
- SVE backend by @boeschf in arbor-sim#2148
- Exit
sup::path
stage left; enterstd::filesystem::path
stage right by @thorstenhater in arbor-sim#2165 - gtest dependency by @boeschf in arbor-sim#2163
- v0.8.1 by @brenthuisman in arbor-sim#2072
- v0.8.1 postrelease by @brenthuisman in arbor-sim#2074
- Enable Spack tests by @brenthuisman in arbor-sim#2098
- Python/pip strikes again: execute
pip install
in venvs by @brenthuisman in arbor-sim#2111 - Scikit build core by @brenthuisman in arbor-sim#2121
- Spack: add dev version by @brenthuisman in arbor-sim#2150
- Break out pip and doc tests, exclude doc-change from eating up precious runner cycles by @brenthuisman in arbor-sim#2160
- rename test-pip.yml by @boeschf in arbor-sim#2166
- cscs-ci by @boeschf in arbor-sim#2149
- gtest in CI containers by @boeschf in arbor-sim#2170
- Spack-solvable versions, add tests to Spack workflow by @brenthuisman in arbor-sim#2156
- Fudge version in pyproject.toml for ci by @brenthuisman in arbor-sim#2200
- enable remote example by @boeschf in arbor-sim#2173
- [BUGFIX] a-b-c: actually set compiler, improved default by @brenthuisman in arbor-sim#2051
- 🐙 Optimise PPACK by @thorstenhater in arbor-sim#2067
- Silence flake8 and appease black. by @thorstenhater in arbor-sim#2086
- BUGFIX: add missing functions to sve backend by @boeschf in arbor-sim#2096
- BUGFIX gpu ppack declarations by @boeschf in arbor-sim#2087
- BUGFIX: gpu mechanism init by @boeschf in arbor-sim#2095
- The Initialisation Optimisation by @thorstenhater in arbor-sim#2097
- Fix crash in FindId Visitor. by @thorstenhater in arbor-sim#2115
- Add LTO and M1 arch to CMake by @thorstenhater in arbor-sim#2106
- Fix crash on probing non-existent mechanism state. by @thorstenhater in arbor-sim#2112
- Python/concurrency defaults by @brenthuisman in arbor-sim#1979
- Add faster merge events. by @thorstenhater in arbor-sim#2108
- Fix a typo in python bindings. by @thorstenhater in arbor-sim#2125
- Fix incorrect mention of attribute
catalogue
insingle_cell_model
by @Helveg in arbor-sim#2122 - Avoid crash when integrating over empty branch. by @thorstenhater in arbor-sim#2124
- fix lint pipleine by @boeschf in arbor-sim#2151
- Ward against probing the void. by @thorstenhater in arbor-sim#2139
- Fix GPU/NVC problems by @thorstenhater in arbor-sim#2143
- fix ODR violation by @boeschf in arbor-sim#2154
- @musicinmybrain made their first contribution in arbor-sim#2080
Full Changelog: https://github.com/arbor-sim/arbor/compare/v0.8.1...v0.9.0
** 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.
- 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)
- None 💃!
- Fix ornstein_uhlenbeck example on gpu (#2039)
- Setting ARB_MODCC was broken and nunfunctional. Fixed. (#2029)
- The
--cxx
flag inarbor-build-catalogue
is now properly used; falls back toc++
. (#2051)
- Post release: add Zenodo entry, add Spack entry, update docs and scripts by @brenthuisman in arbor-sim#2036
- BUGFIX: add ARB_CUDA flag to example catalogue by @boeschf in arbor-sim#2039
- Additional builtin functions to Arbor's NMODL dialect by @boeschf in arbor-sim#2035
- Throw better errors when we cannot look up ion diffusivity by @thorstenhater in arbor-sim#2040
- ⚡ Voltage Processes by @thorstenhater in arbor-sim#2033
- simplify make catalogue by @boeschf in arbor-sim#2042
- spack gpu option by @boeschf in arbor-sim#2043
- Remove deprecated spike_detector. by @thorstenhater in arbor-sim#2041
- make ARB_MODCC functional again by @brenthuisman in arbor-sim#2029
- Yank v0.5 from Spack file, it does not build due to change in setting arch by @brenthuisman in arbor-sim#2037
- Use pugixml instead of libxml2 by @thorstenhater in arbor-sim#2048
- [BUGFIX] a-b-c: actually set compiler, improved default by @brenthuisman in arbor-sim#2051
- Sde Tutorial by @boeschf in arbor-sim#2044
- Set Python to known version for all CI workflows by @brenthuisman in arbor-sim#2058
- consistent mechanism ids by @boeschf in arbor-sim#2057
- Fix docs about exprelr. by @thorstenhater in arbor-sim#2064
- Allow __ in profiler names. by @thorstenhater in arbor-sim#2065
- CI fixes for wheel building, prep for musllinux, Spack by @brenthuisman in arbor-sim#2069
** 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.
- 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). arbor-sim#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. arbor-sim#1919
- Allow editing morphologies. Supported operations: join_at, split_at, equivalence, equality, apply isometry. arbor-sim#1957
- Arbor cable cell exporter and backend support in BluePyOpt. arbor-sim#1959
- Make LIF cells probeable. arbor-sim#2021
- 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. arbor-sim#1978 - Remove the
generate-catalogue
script.modcc
accepts now a list of NMODL files and is able to spit out a catalogue.cpp file. arbor-sim#1975 - Mechanism ABI version is bumped to 0.3.1. arbor-sim#1884
- Rename spike detector -> threshold detector. arbor-sim#1976
- Remove access to time
t
in NMODL. arbor-sim#1967 - Major dependency version bumps:
- GCC: 9 and up
- CUDA: 11 and up
- Clang: 10 and up
- Convenience: shorter code to build decor. by @thorstenhater in arbor-sim#1903
- Fix doc error. by @thorstenhater in arbor-sim#1934
- probe id -> probeset id, and clarification in docs by @brenthuisman in arbor-sim#1898
- Elaborate on mpi4py. by @thorstenhater in arbor-sim#1940
- Add all_closest to place_pwlin. by @thorstenhater in arbor-sim#1952
- Add more visibility to decor. by @thorstenhater in arbor-sim#1953
- add spike source docs. by @thorstenhater in arbor-sim#1939
- 🦑 Excise
time
by @thorstenhater in arbor-sim#1967 - 🐍 Rename spike detector -> threshold detector by @thorstenhater in arbor-sim#1976
- Mutable connection table by @thorstenhater in arbor-sim#1919
- Allow multiple schedules per source_cell. by @thorstenhater in arbor-sim#1963
- Allow editing morphologies by @thorstenhater in arbor-sim#1957
- generate-catalogue is gone by @thorstenhater in arbor-sim#1975
- SDE by @boeschf in arbor-sim#1884
- Discuss q10 pattern in NMODL docs. by @thorstenhater in arbor-sim#1995
- modcc: Allow redundant, but correct READ declaration. by @thorstenhater in arbor-sim#1936
- Deny WATCH statements. by @thorstenhater in arbor-sim#1942
- Excise fvm type aliases by @thorstenhater in arbor-sim#1938
- Add stack information to
arbor_exception
by @thorstenhater in arbor-sim#1945 - Expose find_private_gpu to python by @thorstenhater in arbor-sim#1943
- Make
mpoint
s hashable. by @thorstenhater in arbor-sim#1950 - Arborio reads from Stream objects now. by @thorstenhater in arbor-sim#1937
- Remove explicit generator by @thorstenhater in arbor-sim#1962
- Clean up plasticity by @thorstenhater in arbor-sim#1985
- Heaviside step by @llandsmeer in arbor-sim#1989
- Do not restrict SWC record identifier by @schmitts in arbor-sim#1996
- Make decor mandatory and labels optional. by @thorstenhater in arbor-sim#1978
- Add virtual dtors to recipe components by @thorstenhater in arbor-sim#2000
- cleanup documentation by @boeschf in arbor-sim#2007
- Arbor cable cell exporter and backend support in BluePyOpt by @lukasgd in arbor-sim#1959
- Add a plethora of config options to a-b-c. by @thorstenhater in arbor-sim#1958
- Make LIF cells probeable. by @thorstenhater in arbor-sim#2021
- Added fixture dev docs. Made fixtures more robust. by @Helveg in arbor-sim#2025
- Make LIF cells LIF cells again. by @thorstenhater in arbor-sim#2026
- update cray documentation by @boeschf in arbor-sim#2022
- Spack cache change, bump versions by @brenthuisman in arbor-sim#1926
- Expand docs on testing. by @thorstenhater in arbor-sim#1944
- Fix cmake paths so we can use Arbor as a sub-project. by @thorstenhater in arbor-sim#1948
- bump pybind11 for py3.11 compat by @brenthuisman in arbor-sim#1955
- Add spike counts to pre-commit tests. by @thorstenhater in arbor-sim#1965
- Move pybind11 to
/ext
by @brenthuisman in arbor-sim#1968 - Add black config to pyproject.toml. by @thorstenhater in arbor-sim#1971
- Bump CI workflow and GoogleTest by @boeschf in arbor-sim#2003
- Remove cscs-ci badges by @brenthuisman in arbor-sim#1999
- fix cmake: ninja + ExternalProject by @boeschf in arbor-sim#2008
- Use HTTPS access instead of ssh/git for gtest. by @thorstenhater in arbor-sim#2009
- Add memory sanitizer by @thorstenhater in arbor-sim#2013
- Try to use OpenMPI as of brew/apt. by @thorstenhater in arbor-sim#2016
- Bump versions by @thorstenhater in arbor-sim#2017
- Include ubenches into CI by @boeschf in arbor-sim#2014
- Speed up CI by @boeschf in arbor-sim#2019
- Update pyproject.toml for Py3.11 by @brenthuisman in arbor-sim#2018
- Check internal invariants in CI by @thorstenhater in arbor-sim#2023
- Disable inconsistent rule. by @thorstenhater in arbor-sim#1928
- Action must change
VERSION
except on version tag. by @brenthuisman in arbor-sim#1931 - NMDOL: default catalogue clean up by @thorstenhater in arbor-sim#1935
- PANIC! Forgot to fix fvm type in GPU!!!. by @thorstenhater in arbor-sim#1946
- Remove abuse of arg_v. by @thorstenhater in arbor-sim#1954
- Catch symdiff errors. by @thorstenhater in arbor-sim#1964
- Bug fix: point mechs applying weights to ionic concentrations by @thorstenhater in arbor-sim#1960
- Fix some issues found by PVS Studio. by @thorstenhater in arbor-sim#1974
- load_asc Python fix by @lukasgd in arbor-sim#1977
- Ensure proper Pybind11 is found. by @thorstenhater in arbor-sim#1961
- missing std namespace by @boeschf in arbor-sim#1994
- Optimize CPU-side solvers by @thorstenhater in arbor-sim#1992
- 🦑 modcc now generates GPU mechs again. by @thorstenhater in arbor-sim#1988
- 🦑 Never call a procedure again. by @thorstenhater in arbor-sim#1972
- compiler warnings by @boeschf in arbor-sim#2006
- guard for zero random variables by @boeschf in arbor-sim#2031
- fix some compiler warning by @boeschf in arbor-sim#2034
- @lukasgd made their first contribution in arbor-sim#1977
Full Changelog: https://github.com/arbor-sim/arbor/compare/v0.7...v0.8-rc
** 2022 07 20 **
- prep extracellular potentials tutorial. Updated corresponding example by @espenhgn in arbor-sim#1825
- Add documentation on faster NMODL. by @thorstenhater in arbor-sim#1840
- Add tstop doc in recipe API doc by @schmitts in arbor-sim#1852
- Use list comprehension to speed up creation of connections by @schmitts in arbor-sim#1864
- Support markers in neurolucida ascii files by @bcumming in arbor-sim#1867
- simplified
create_polygon
function in lfpykit example by @espenhgn in arbor-sim#1881 - Better key for the
lfpykit
intersphinx mapping by @Helveg in arbor-sim#1878 - Sort (in python) the mechanism names (for convenience). by @thorstenhater in arbor-sim#1882
- Always emit weight expression. by @thorstenhater in arbor-sim#1875
- Add support for epoch callbacks by @bcumming in arbor-sim#1873
- Add introspection for global properties. by @thorstenhater in arbor-sim#1890
- Add point probes to demo by @schmitts in arbor-sim#1891
- Tut/use avail threads by @brenthuisman in arbor-sim#1900
- Allen tutorial by @brenthuisman in arbor-sim#1781
- New policy 'round_robin_halt' by @jlubo in arbor-sim#1868
- Axial Diffusion by @thorstenhater in arbor-sim#1729
- Add some convenience to simulation creation. by @thorstenhater in arbor-sim#1904
- Predefine SWC Regions. by @thorstenhater in arbor-sim#1911
- Diffusion Example Improvements (and a bit of clean-up) by @thorstenhater in arbor-sim#1914
- Inhomogeneous parameters by @AdhocMan in arbor-sim#1887
- Fix line numbers in tutorials and assorted doc corrections by @brenthuisman in arbor-sim#1917
- 🐍 Be more lenient when accepting args to file I/O by @thorstenhater in arbor-sim#1819
- modcc: generate missing
node_index
read needed for reading timet
in the mechanisms by @noraabiakar in arbor-sim#1866 - Add Developer Documentation by @thorstenhater in arbor-sim#1639
- Isolate external catalogues from libarbor.a. by @thorstenhater in arbor-sim#1837
- Build Python 3.10 binary wheels. Add v0.6 to spackfile. by @brenthuisman in arbor-sim#1817
- export API by @boeschf in arbor-sim#1824
- export doc by @boeschf in arbor-sim#1849
- Include CMAKE+CUDA iff NVCC is needed. by @thorstenhater in arbor-sim#1855
- Bit more on Spack, fix in tutorial by @brenthuisman in arbor-sim#1838
- json submodule added by @brenthuisman in arbor-sim#1871
- Fix a bug where Debian/Ubuntu's Python malfunctions by @brenthuisman in arbor-sim#1894
- Have dependency version policy by @brenthuisman in arbor-sim#1865
- random123 submodule added by @brenthuisman in arbor-sim#1872
- Fix tool installation paths. by @thorstenhater in arbor-sim#1905
- Adopt Black for Python. by @thorstenhater in arbor-sim#1906
- add cmake checks for non-bundled random123 by @bcumming in arbor-sim#1907
- Temporarily disable A64FX CI by @bcumming in arbor-sim#1910
- Adopt flake8 by @thorstenhater in arbor-sim#1908
- Move Python build to
pyproject.toml
, bump Python minver to 3.7, fix macos wheel generation by @brenthuisman in arbor-sim#1916 - Weekly CI Python wheel build pushes to Test.PyPI.org by @brenthuisman in arbor-sim#1921
- Users may not give dt < 0. by @thorstenhater in arbor-sim#1821
- Fix
ubenches
compilation errors by @noraabiakar in arbor-sim#1828 - death test: wrong signal by @boeschf in arbor-sim#1858
- Make brunel.py setup faster. by @thorstenhater in arbor-sim#1854
- add a better error. by @thorstenhater in arbor-sim#1846
- Fix load_component for label-dict by @noraabiakar in arbor-sim#1859
- Found out the hard way that this is still needed :/ by @thorstenhater in arbor-sim#1860
- Elide memcpy where not needed by @thorstenhater in arbor-sim#1863
- Bug fix: Fix voltage vector size in threshold_watcher contstructor by @noraabiakar in arbor-sim#1820
- remove test statements for move ctor by @boeschf in arbor-sim#1899
- Code Quality: PVS Studio Finds by @thorstenhater in arbor-sim#1901
- Two context decomp swaps were forgotten by @brenthuisman in arbor-sim#1912
- @jlubo made their first contribution in arbor-sim#1868
- @AdhocMan made their first contribution in arbor-sim#1887
Full Changelog: https://github.com/arbor-sim/arbor/compare/v0.6...v0.7
** 2022 01 26 **
Core API:
- Add S-Exp for CV Policies by @thorstenhater in arbor-sim#1511
- Clean-up and extend mech cat iterator interface. by @thorstenhater in arbor-sim#1564
- Mech ABI: The final step. by @thorstenhater in arbor-sim#1452
- Add
dim3
to gridDim constructor in generated mechanism code by @noraabiakar in arbor-sim#1630 - Added an empty catalogue by @Helveg in arbor-sim#1677
- Allow to limit Poisson schedule with a stop time (closes #1617) by @schmitts in arbor-sim#1684
- Expose profiler to Python by @Helveg in arbor-sim#1688
- Added a debug mode to
build-catalogue
by @Helveg in arbor-sim#1686 - Write build-catalogue (c)make errors to
stdout
andstderr
by @Helveg in arbor-sim#1679 - Makejobs arg by @Helveg in arbor-sim#1673
- Feature/python clean memory by @max9901 in arbor-sim#1670
- Feature/label dict by @apeyser in arbor-sim#1711
- Add locset expressions for proximal and distal translation of locations by @bcumming in arbor-sim#1671
- Gap Junction mechanisms by @noraabiakar in arbor-sim#1682
- Solve non-linear systems that are not kinetic schemes. by @noraabiakar in arbor-sim#1724
- Add cos and sin SVE implementations by @noraabiakar in arbor-sim#1744
- Deal with zero radius points in a morphology by @halfflat in arbor-sim#1719
- Simplify default proc_allocation generation. by @halfflat in arbor-sim#1725
- Find morphology location from a coordinate by @bcumming in arbor-sim#1751
- resurrect lmorpho by @schmitts in arbor-sim#1746
- Expose information about the CV discretization to the public inteface by @noraabiakar in arbor-sim#1758
- Allow the use of string s-expression CV-policies in pyarb by @noraabiakar in arbor-sim#1799
- Construct
domain_decomposition
given a list ofgroup_descriptions
. by @noraabiakar in arbor-sim#1788 - Profile externally loaded mechanisms by @noraabiakar in arbor-sim#1691
- Have option to set thread count to local maximum by @brenthuisman in arbor-sim#1716
CI/build/testing:
- Python unit test clean-up by @noraabiakar in arbor-sim#1595
- Add CI for the in-repo Spack package by @schmitts in arbor-sim#1544
- Ci/sanitize by @thorstenhater in arbor-sim#1521
- Update spack package to include fmt for [email protected]: by @bcumming in arbor-sim#1609
- Cache Spack for GHA by @schmitts in arbor-sim#1619
- Run examples via scripts (closes #1566) by @schmitts in arbor-sim#1631
- Build a catalogue in CI by @schmitts in arbor-sim#1632
- Switch to PyPA's
cibuildwheel
action repo's. by @Helveg in arbor-sim#1703 - Automatic test discovery sans boilerplate by @Helveg in arbor-sim#1693
- build external mechanism catalogues in release mode by @noraabiakar in arbor-sim#1713
make VERBOSE=1
in verbose mode by @Helveg in arbor-sim#1715- Bump pybind to 2.8.1 by @brenthuisman in arbor-sim#1742
- Better error reporting in python context interface by @bcumming in arbor-sim#1732
- Better error diagnostic in python when invalid cell properties are provided. by @bcumming in arbor-sim#1743
- Test separately built catalogues by @bcumming in arbor-sim#1748
- Weekly cron job checking for submodule updates by @brenthuisman in arbor-sim#1741
- Added local Python testsuite instructions by @Helveg in arbor-sim#1809
- CMake CUDA clean-up. by @thorstenhater in arbor-sim#1804
- Add dry run benchmark cell model for testing communication scaling by @bcumming in arbor-sim#1627
- v0.6-rc by @brenthuisman in arbor-sim#1814
- More robust build-catalogue by @thorstenhater in arbor-sim#1784
Documentation:
arbor.mechanism_catalogue.extend()
documentation added. by @brenthuisman in arbor-sim#1597- zenodo 0.5.2 entry by @brenthuisman in arbor-sim#1598
- mpi.py updated for new synapse labelling by @brenthuisman in arbor-sim#1602
- Tutorial structure: remove deduplication, includify by @brenthuisman in arbor-sim#1575
- Docs mechabi by @brenthuisman in arbor-sim#1610
- Improved documentation about weights by @brenthuisman in arbor-sim#1620
- Adapt to changes in Pandas requiring unique indices by @brenthuisman in arbor-sim#1625
- Add implies default license by @kanzl in arbor-sim#1635
- Update Slack to Gitter by @brenthuisman in arbor-sim#1637
- Better Python installation instructions by @brenthuisman in arbor-sim#1622
- Add example based on LFPykit example Example_Arbor_swc.ipynb by @espenhgn in arbor-sim#1652
- Name and describe arguments to constructors where ambiguous. by @brenthuisman in arbor-sim#1678
- improved Github Issue templates by @brenthuisman in arbor-sim#1698
- Add some comments about units to network ring examples by @schmitts in arbor-sim#1697
- Fix link (closes #1664) by @schmitts in arbor-sim#1701
- Fix class members in cable example by @schmitts in arbor-sim#1641
- Correctify and seabornize dendrite tutorial by @brenthuisman in arbor-sim#1706
- Polish GJ example readme by @thorstenhater in arbor-sim#1726
- Completed the docs with more
config()
flags by @Helveg in arbor-sim#1708 - Make connectivity example more complete by @brenthuisman in arbor-sim#1721
- Add description of arbor and NEURON's
nernst
application rules to the docs. by @noraabiakar in arbor-sim#1638 - Show docs version info more prominently on RTD by @brenthuisman in arbor-sim#1737
- Update/fix tinyopt README.md by @halfflat in arbor-sim#1747
- Add python gap junction example by @kanzl in arbor-sim#1750
- Documentation: add expected nmodl units by @noraabiakar in arbor-sim#1756
- Fixed broken link from
get_probes
toprobes
by @Helveg in arbor-sim#1763 - Removed double preposition by @Helveg in arbor-sim#1762
- Fixed MD to RST typo by @Helveg in arbor-sim#1760
- Fix broken links in
probe_sample.rst
by @Helveg in arbor-sim#1761 - Docs/contrib updates by @brenthuisman in arbor-sim#1736
- Add Release procedure to docs by @brenthuisman in arbor-sim#1738
- Example and tutorial for two cells connected via a gap junction by @schmitts in arbor-sim#1771
- Have single source for citation info, compatible with Github citation UI by @brenthuisman in arbor-sim#1791
- Advertise GH Discussions for modelling by @brenthuisman in arbor-sim#1793
- Add release cycle info to docs by @brenthuisman in arbor-sim#1798
- Added a warning when users are reading latest docs. by @Helveg in arbor-sim#1800
Fixes/optimization:
- Fix GPU compile. by @thorstenhater in arbor-sim#1601
- Compile all arbor source files with
-fvisibility=hidden
by @noraabiakar in arbor-sim#1599 - Bug/assorted static analysis by @thorstenhater in arbor-sim#1615
- Fix ambiguous Region/Locset expressions by @thorstenhater in arbor-sim#1629
- Clean-up AVX routine and global def [EOM] by @thorstenhater in arbor-sim#1618
- Categorise ASSIGNED RANGE variables as STATE-ish. by @thorstenhater in arbor-sim#1624
- Check that mechanisms have the right kind by @noraabiakar in arbor-sim#1633
- Resolve uninitialised values. by @thorstenhater in arbor-sim#1616
- Correctly parse diameter in ASCII files by @bcumming in arbor-sim#1640
- Attempt fixing a64fx build by @bcumming in arbor-sim#1636
- Fix simulation::add_sampler cell_group dispatch by @noraabiakar in arbor-sim#1654
- Fix on-components on empty cable bug by @halfflat in arbor-sim#1658
- Fix cv_policy parse and write in ACC by @noraabiakar in arbor-sim#1665
- Fixed MRO and code duplication in
setup.py
by @Helveg in arbor-sim#1672 - Rephrase exception message in case of missing segment by @schmitts in arbor-sim#1659
- Fix modcc simd generation by @noraabiakar in arbor-sim#1681
- Segfault on instantiating mechanisms on empty regions by @thorstenhater in arbor-sim#1657
- Add missing closing bracket to mechanism repr (closes #1667) by @schmitts in arbor-sim#1699
- Better handling of errors during dynamic catalogue loading by @thorstenhater in arbor-sim#1702
- Swap && and || operator precedence in modcc by @noraabiakar in arbor-sim#1710
- Remove use of removed INSTRUMENT_MALLOC symbols from Glibc 2.34 by @brenthuisman in arbor-sim#1730
- Generate correct simd code for reading
peer_index
andv_peer
by @noraabiakar in arbor-sim#1735 - fixes for non-standard code by @boeschf in arbor-sim#1769
- Modcc: Forward declare procedure kernels in generated GPU code by @noraabiakar in arbor-sim#1787
- modcc: exit solvers early if errors encountered. by @noraabiakar in arbor-sim#1755
- Fix cmake configuration of out-of-core fmt library by @bcumming in arbor-sim#1796
- Bug fix: properly partition networks containing one-sided gap-junction connections by @noraabiakar in arbor-sim#1774
- Remove footgun: Catalogue Lifetimes by @thorstenhater in arbor-sim#1807
- @kanzl made their first contribution in arbor-sim#1635
- @max9901 made their first contribution in arbor-sim#1670
- @boeschf made their first contribution in arbor-sim#1769
Full Changelog: https://github.com/arbor-sim/arbor/compare/v0.5.2...v0.6
** 2021 06 24 **
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.
** 2021 06 22 **
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
** 2021 01 07 **
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
** 2019 10 15 **
- Moved from C++14 to C++17
- Removed our hand-rolled versions of
any
,optional
andvariant
.
- Removed our hand-rolled versions of
- Added
std::expected
equivalent for error handling.
- 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.
- 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.
- Implemented memory optimizations for GPU matrix solver.
- Added support for ARM SVE intrinsics in the vectorized CPU back end.
- Fixed various modcc code generation errors.
** 2020 04 01 **
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.
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.
** 2019 08 26 **
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.
Minor Update.
** 2019 03 04 **
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.
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.
Nora Abi Akar John Biddiscombe Benjamin Cumming Felix Huber Marko Kabic Vasileios Karakasis Wouter Klijn Anne Küsters Alexander Peyser Stuart Yates
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
** 2018 10 18 **
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.
Nora Abi Akar John Biddiscombe Benjamin Cumming Marko Kabic Vasileios Karakasis Wouter Klijn Anne Küsters Ivan Martinez Alexander Peyser Stuart Yates
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.