NEURON { : ARTIFICIAL_CELL means ARTIFICIAL_CELL LeakyIntFire RANGE m, Iext, i, taum, Cm, tauref, tausyn : m plays the role of voltage } PARAMETER { :Postsynaptic current time constant :Reset potential Vreset = -85 (mV) :Fixed firing threshold Vtheta = -51 (mV) : External Current Iext = 0 (nA) } : Specify units that have physiological interpretations (NB: ms is already declared) UNITS { (mV) = (millivolt) (pF) = (picofarad) (pA) = (picoamps) } ASSIGNED { m(mV) i(pA) t0(ms) refractory Cm(pF) taum(ms) tauref(ms) tausyn(ms) } FUNCTION M() { } FUNCTION I() { } INITIAL { t0 = t refractory = 0 : 0-integrates input, 1-refractory } NET_RECEIVE (w) { if (refractory == 0) { : inputs integrated only when excitable :6.5 i=i+(-i/tausyn)*(t-t0) i=i+w m=m+(((Vreset-m)/taum)+((i+Iext)/Cm))*(t-t0) :7.5 :i=i+w :m=m+(((Vreset-m)/taum)+((i+Iext)/Cm))*(t-t0) :i=i-(i/tausyn)*(t-t0) :6.7 :m=m+(((Vreset-m)/taum)+((i+Iext)/Cm))*(t-t0) :i=i+w :i=i-(i/tausyn)*(t-t0) t0 = t if (m > Vtheta) { refractory = 1 :m = Vreset m = Vreset+100 net_send(tauref, refractory) net_event(t) } }else if (flag == 1) { : ready to integrate again t0 = t refractory = 0 m = Vreset } }