NEURON {
POINT_PROCESS syn_ampa_sat
RANGE tau_o, tau_c, erev, syn_step, ampa_sat, alpha, count
NONSPECIFIC_CURRENT i
}
UNITS {
(nA) = (nanoamp)
(uA) = (microamp)
(mA) = (milliamp)
(A) = (amp)
(mV) = (millivolt)
(mS) = (millisiemens)
(uS) = (microsiemens)
(molar) = (1/liter)
(kHz) = (kilohertz)
(mM) = (millimolar)
(um) = (micrometer)
(S) = (siemens)
}
PARAMETER {
tau_o = 0.2 (ms)
tau_c = 3.0 (ms)
erev = 0.0 (mV)
syn_step = 1.25
ampa_sat = 100 :0.001
alpha = 0.95
}
ASSIGNED {
v (mV)
i (nA)
}
STATE {
o
c
}
INITIAL {
o = 0
c = 0
}
BREAKPOINT {
SOLVE states METHOD cnexp
i = (c - o) * (v-erev)
}
NET_RECEIVE(weight (uS), w, count) {
w=weight*pow(alpha,count)
:o = o + syn_step*w
:c = c + syn_step*w
o = o + syn_step*(1-(c-o)/ampa_sat)*w
c = c + syn_step*(1-(c-o)/ampa_sat)*w
:printf("%g \n", c-o)
count=count+1
}
DERIVATIVE states {
o' = -o/tau_o
c' = -c/tau_c
}