Ca_ZH2019_IO#
- class braincell.channel.Ca_ZH2019_IO(size, g_max=Quantity(0.4, 'mS / cm^2'), E=Quantity(120., 'mV'), mMidV=Quantity(-61., 'mV'), freeze_m_inf=True, name=None)#
Somatic calcium current of the inferior-olive model (Zhang 2019).
A fixed-reversal-potential calcium current with an instantaneous, non-stateful cubic activation and one dynamic inactivation gate, used for the single-compartment inferior-olive neuron model of (Zhang & Santaniello, 2019) [2]:
\[\begin{split}\begin{aligned} I_{Ca} &= g_{max} \cdot m_\infty \cdot h \cdot (E - V) \\ m_\infty &= \left(\frac{1}{1 + \exp((V_{mid} - V) / 4.2)}\right)^3 \\ h_\infty &= \frac{1}{1 + \exp((V + 85.5) / 8.6)} \\ \tau_h &= 40 + 30 \cdot \frac{1}{1 + \exp((V + 84) / 7.3)} \cdot \exp\!\left(\frac{V + 160}{30}\right) \end{aligned}\end{split}\]Only \(h\) is an integrated
Gatestate (gates = (Gate("h"),)); \(m_\infty\) is recomputed from \(V\) on every call tocurrent()rather than tracked as a channel state (see Notes).- Parameters:
size (
int|Sequence[int] |integer|Sequence[integer]) – Channel state shape.g_max (
Array|ndarray|bool|number|bool|int|float|complex|Quantity|Callable) – Maximum conductance density. Defaults to0.4 mS/cm**2.E (
Array|ndarray|bool|number|bool|int|float|complex|Quantity|Callable) – Fixed calcium current reversal potential (this class does not derive \(E\) from an ion concentration). Defaults to120.0 mV.mMidV (
Array|ndarray|bool|number|bool|int|float|complex|Quantity|Callable) – Midpoint voltage of the instantaneous activation curve. Defaults to-61.0 mV.freeze_m_inf (
bool) – IfTrue(the default), block autodiff through the instantaneous activation factor withjax.lax.stop_gradient()while leaving the forward current value unchanged; see Notes.
See also
Ca_ZH2019_IO_FrozenRegistry alias that forces
freeze_m_inf=Trueunconditionally.braincell.channel.hyperpolarization_activated.HCN_ZH2019_IOSibling inferior-olive current from the same import family (different bibliography origin; see Notes).
Notes
Ported from
IO/channel/Ca_ZH19_IO.mod, whose header credits “Ca channel from Manor (Rinzel, Segev, Yarom) 1997” and porter “B. Torben-Nielsen @ HUJI, 7-10-2010” – i.e. the kinetics originate with Manor, Rinzel, Segev & Yarom (1997) [1] and were ported to NEURON by Torben-Nielsen, Segev & Yarom (2012), whose inferior-olive model in turn was reused, without further modification credit, by Zhang & Santaniello (2019) [2]. The 2012 port paper is cited here only in this prose, per house style, not as a numbered reference.The inferior-olive neurons in both the Torben-Nielsen et al. (2012) and Zhang & Santaniello (2019) models are single-compartment (
nseg = 1); the multi-compartment part of that lineage is a separate Purkinje-cell population, not the inferior olive. This docstring does not describe this mechanism as multi-compartment.In the imported
.modfile, the sharedrates(v)helper that recomputesminf/hinf/htauwas called fromBREAKPOINTin the original NEURON mechanism; BrainCell’s port (like the rest of thisZH19/IOimport family) evaluates the equivalent expressions fromDERIVATIVE-time state updates instead, som_inf/h_inf/tau_hare refreshed before, rather than after, the state integration step within a given call.mcarries no persistent state and is not part ofgates:current()callsf_m_inf()fresh on every evaluation, so nothing “evolves” over time for the activation term – it is a purely algebraic function of the instantaneous voltage. Settingfreeze_m_inf=True(the default) wraps that same forward value injax.lax.stop_gradient(); it changes only which terms appear in gradients taken through this channel, never the forward current or the value ofm_infitself.References
- current(V)[source]#
Calculate the current for this ion channel.
This method should be implemented by subclasses to compute the current based on the channel’s specific properties and state.
- Parameters:
*args – Variable length argument list.
**kwargs – Arbitrary keyword arguments.
- Raises:
NotImplementedError – This method must be implemented by subclasses.
- root_type#
alias of
HHTypedNeuron