COMMENT
BDNF kinetics
Includes extracellular and intracellular mechanisms.
Based on data provided by V. Lessmann and Kurt ???
Developers: Solinas & Migliore 2017
BDNF release
The proBDNF-containing vesicles are released with 100 s delay
after an increase of cai. To model this we must explicity model BDNF vesicles
as events triggered by a cai thereshold that execute a net_send with a probability
that is proportional to the inverse of the time step.
ENDCOMMENT
NEURON {
POINT_PROCESS RM_eCB
USEION ca READ cai : Weight update requires cai
:RM
RANGE tau_RM
:cai->RM
RANGE alpha_cai_RM,theta_cai_RM, sigma_cai_RM
: RM->RMr
RANGE tau_RMLTP11, RMr
: RMr->U_SE
RANGE alpha_RMru, theta_RMru, sigma_RMru
:cai->RMBLK
RANGE alpha_cai_RMBLK, theta_cai_RMBLK, sigma_cai_RMBLK
:RMBLK
RANGE tau_RMBLK
:RM_RMr
RANGE tau_RM_RMr, alpha_RM_RMr, theta_RM_RMr, sigma_RM_RMr
: delta_U->U_SE
POINTER delta_U
}
UNITS {
(nA) = (nanoamp)
(mV) = (millivolt)
(uS) = (microsiemens)
(molar) = (1/liter)
(mM) = (millimolar)
FARADAY = (faraday) (coulomb)
R = (k-mole) (joule/degC)
}
PARAMETER {
cai (mM)
dt (ms)
: RM
tau_RM = 1800e3 (ms)
RM_inf = 0 (mM)
alpha_cai_RM = 1e-3 (mM/ms)
theta_cai_RM = 1.5e-3 (mM)
sigma_cai_RM = 0.01e-3 (mM)
tau_RMLTP11 = 1800e3 (ms) :1800e3 (ms) : 1 min = 60e3 ms, 30 min = 1800e3 ms
RMr_0 = 0 (mM)
alpha_RMru = 0.3 (1)
theta_RMru = 0.5 (mM)
sigma_RMru = 0.1 (mM)
:RMBLK
tau_RMBLK = 1800e3 (ms)
RMBLK_inf = 0 (mM)
alpha_cai_RMBLK = 1e-3 (mM/ms)
theta_cai_RMBLK = 1.8e-3 (mM)
sigma_cai_RMBLK = 0.01e-3 (mM)
theta_RMBLK = 0.015 (mM)
sigma_RMBLK = 0.001 (mM)
:RM
tau_RM_RMr = 1e3 (ms)
alpha_RM_RMr = 1
theta_RM_RMr = 0.02 (mM)
sigma_RM_RMr = 0.001 (mM)
}
ASSIGNED {
delta_U (1)
}
STATE {
RM (mM)
RMr (mM)
RMBLK (mM)
post_intra (mM)
}
INITIAL {
RM = RM_inf
RMr = RMr_0
: printf("sigcai%f\t", sigh(RMr,theta_RMr,sigma_RMr))
RMBLK = RMBLK_inf
: RMBLKe = RMBLKe_0
post_intra = 0
delta_U = alpha_RMru * sigh(RMr,theta_RMru,sigma_RMru): * (1 - sigh(RMBLKe,theta_RMBLKe,sigma_RMBLKe))
}
BREAKPOINT {
SOLVE state METHOD cnexp
}
DERIVATIVE state {
RMBLK' = (RMBLK_inf - RMBLK)/tau_RMBLK + alpha_cai_RMBLK * sigh(cai,theta_cai_RMBLK,sigma_cai_RMBLK): - alpha_rmep * RMBLK: + (RMBLK_inf - RMBLK) / tau_RMBLKLTP11
: RMBLKe' = (RMBLK - RMBLK_inf) / tau_RMBLKLTP11 : thereshould be a decay here otherwize the LTP11 accumulates, this is a memory eraser
: We have to use a negative rate to decrease RM if during induction the RMBLK is activated to prevent RM accumulation.
: This way is preferreble to the product by a sigmoid of delta_u, see below, as it does not depotentiate the effects induced by an LTP11.
: This should be further clarified as depotentiation could be important here.
: Note that for this to work must be alpha_rmep > alpha_cai_RM
RM' = (RM_inf - RM)/tau_RM + alpha_cai_RM * sigh(cai,theta_cai_RM,sigma_cai_RM) * (1 - sigh(RMBLK,theta_RMBLK,sigma_RMBLK)) + (RM_inf - RM) / tau_RM_RMr * alpha_RM_RMr * sigh(RM,theta_RM_RMr,sigma_RM_RMr)
RMr' = (RM - RM_inf) / tau_RM_RMr * alpha_RM_RMr * sigh(RM,theta_RM_RMr,sigma_RM_RMr) - RMr / tau_RMLTP11
: there should be a decay here otherwize the effects of LTP11 accumulates, this would a memory eraser
: post_intra is a intracellular buffer for RMr states that will be converted to post_intra with time const tau_RMLTP11
post_intra' = RMr / tau_RMLTP11
delta_U = alpha_RMru * sigh(post_intra,theta_RMru,sigma_RMru)
}
FUNCTION sigh(x (mM), theta (mM), sigma (mM)) {
: LOCAL e
: e = (x - theta) / sigma
: if ( -e > 700 ) {
: printf("%f\t",(-(x - theta) / sigma))
: }
sigh = 1 / (1 + exp((theta - x) / sigma))
}