Calcium is heavily buffered in cells, as it is a major second messenger molecule.
Calbindin D28K dynamics
The calcium buffering protein Calbindin D28K has 6 EF-hands, four of which are active calcium ion binding sites. These sites are not equally active. A calcium ion is not free to bind to any of the sites equally. Instead, calcium ions are bound in sequence: 1, 4, 5, 3 with the last binding having the lowest affinity. (Venters et al., 2003.)
(To be clear, these dynamics are not representative of all calcium buffers; Parvalbumin and Calbindin D9K show little conformational change when carrying calcium.)
For our model, let us suppose that instead of calbindin D28K specifically, which has its own very specific binding affinities, we have some arbitrary buffer buf that also has 4 binding sites that load sequentially.
from neuron import h, rxd
# where soma = h.Section(name='soma') cyt = rxd.Region([soma], nrn_region='i') # who ca = rxd.Species(cyt, name='ca', charge=2, initial=1e-4) buf = rxd.Species(cyt, name='buf', initial=1e-4) cabuf = rxd.Species(cyt, name='cab2uf', initial=0) # what buffering = rxd.Reaction(2 * ca + buf, cabuf, 1e6, 1e-2) degradation = rxd.Rate(buf, -1e-3 * buf)
For versions of NEURON before 7.7, we need to initialize the simulation here to enable using pointers for
Let's set up some recording:
t = h.Vector() ca_vec = h.Vector() buf_vec = h.Vector() t.record(h._ref_t) ca_vec.record(soma(0.5)._ref_cai) buf_vec.record(soma(0.5)._ref_bufi)
A more realistic model would include