Closed thorstenhater closed 1 year ago
Hey,
the #1919 PR layed the foundation. We decided offline to make the actual plasticity (ie finding new partners and deleting old ones) part outside of Arbor, since it is usecase specific and/or requires extra facilities like spatial queries. So, for now, this is considered done.
In order to conduct experiments on long-term learning and structural development of the brain Arbor should support dynamic connectivity.
We would need to wire new synapses (not Gap Junctions for now due to the implications on load balancing) at runtime. Here are some assumptions I'll make for the remainder of this proposal (if users have different need we will try to accomodate, so please comment).
simulation::run
as plasticity is on timescales ofO(min)
|R^3
Connectivity
Implementation: Phantom Connections
It is possible to add phantom connections between all sources and targets and edit weights over time. Howevere, this is catastrophic for performance as
#Sources * #Targets
, amortised by storing only the local parts on the source side.In addition we need one spike detector per source location and one synapse per target.
Thus the global spike count grows with the total number of sources
S
(even if dormant byw=0
) and the spike delivery grows withN log(N)
(by sorting) whereN=S*f
andf
the mean spiking frequency andT log(N)
(by filtering) withT
being the target count.This approach might be simplified by tracking source as one detector per cell, eg at the soma, and its number of active connections. This is a trade-off between fidelity and efficiency to be considered.
We will have to add some runtime support for changing weights and/or parameters, see also #1705.
Implementation: Editing the Connection Table
The connection table is built implicitly by keeping track of
deliverable_event = { weight, time, target }
and the localtarget
s; so adding entries should be simple. Still needs to editweight
over time. Adding connection should go via the DSL proposed in #418.Implementation: Finding New Partners
As noted above this will be based on
We have a proposal that cover 2. and 3. in #418. The challenge will be adding
Further a naive implementation scale as
N^2
, but there should be one inN log(N)
, see literature. This might be also interesting for #418.Reading