Closed schmitts closed 2 years ago
Such constraints are not entirely compatible with the cable cell model, which is based on the cable equation.
Instead of coercing the cable cell model to implement cell models like LIF and AdEx, we could consider implementing a new cell type for AdEx that implements the specific model that you have in mind.
I do not want to turn Arbor into a point neuron simulator, but I need to have a starting point from which I can turn the point neuron model into a compartmental (cable) model. Treating one CV as a substitute for a point neuron model would allow for that.
And for the neuromorphic model I want to use the gap junctions, i.e., compartments coupled via a conductance. Would that work out of the box with a custom cell type?
Voltage clamps #1343 also sound like easily implemented by just manipulating/forcing the voltage on a compartment to be within some range (ie. min=max).
I don't want to do anything that is "wrong" (numerically or alike) but if it is correct enough and allows to extend the model to a real multi-compartment model later with only minimal changes, that sounds like a good way forward to me.
Just to make sure: when you say scale up, do you mean to have a few compartments or really an arbitrarily large number of compartments, and all the rest that Arbor's cable_cell has?
Just to make sure: when you say scale up, do you mean to have a few compartments or really an arbitrarily large number of compartments, and all the rest that Arbor's cable_cell has?
We want a smooth transition in terms of compartments: one, few, many. I don't see how we should gain insight when starting with morphological detailed neurons. We need to bootstrap ourselves.
As it stands, this request (and anything manipulating the voltage without a mechanism) breaks an assumption in the cable_cell
, and would require a bit more work (we've looked at the PR and we were not sure what would happen on the GPU for instance). That's why our first idea was to build out a new point neuron cell kind, and learn from that how these features can be kept performant across hardware. https://github.com/arbor-sim/arbor/issues/1605 is meant to lower the threshold for such experiments, without potentially breaking performance of the cable_cell
when such a feature is used. We will need to re-prioritize that issue if you are certain that nothing less will do :) .
Last try to see if another way is possible: it is just the morphology that you need? I.e. would the entire cell 'have AdEx' and nothing else (besides potentially clipping of the membrane voltage or other voltage manipulation in general)?
Last try to see if another way is possible: it is just the morphology that you need? I.e. would the entire cell 'have AdEx' and nothing else (besides potentially clipping of the membrane voltage or other voltage manipulation in general)?
I guess my laundry list would be:
As of now this hangs in limbo: Clipping Um
breaks the cable model, yet there's some need for it.
Your list reads like you need the full cable model plus membrane potential manipulation, so I suggest
we add it in the following way:
Um
can be written from mechanisms (that gives both clamping and clipping) via the ABIIs the order in which mechanisms are executed deterministic? It would be important that the mech that manipulates (e.g. clips) the membrane voltage is run before any other.
Currently we run all reversal potential mechanisms then current and state updates of all other mechanisms.
I would suggest making a POTENTIAL
mechanism kind that run in a separate phase, so
where the potential phase can go first, last, between ...
Inside a phase though, order is undefined but stable, ie it may change between runs but not during a run.
@schmitts is this still open? Would the suggestion help?
@thorstenhater The suggestion would help, but is the infrastructure already in place to do so?
@thorstenhater ping
Yes, the infrastructure would support it, but we'd need to devise a new mechanism kind that's doing the actual clamping. Likely it'd look similar to this
NEURON {
POTENTIAL_PROCESS clamp
}
BREAKPOINT {
v = max(v_hi, min(v_lo, v))
}
But I'll need to convince myself that this is the proper approach. I have some concerns, though.
This is done as of #2033
Typical computational neuroscience models, like LIF and AdEx, restrict the membrane voltage to below the threshold. To allow to replicate results, e.g., the AdEx Naud patterns (https://dx.doi.org/10.1007%2Fs00422-008-0264-7), it is crucial that the membrane voltage does not exceed the threshold.
1841 implements clipping of the membrane to user defined ranges.
This functionality is also vital for modelling (analog) neuromorphic circuits that have an intrisic range (like up to 1.8 V).