COMMENT by Johannes Luthman: Based on DCNsyn.mod. Changes made compared to that file: # variables MgFactor, gamma added, as PARAMETERs. # magnesium-block (variable C below) added, giving fraction of mg-block # of the channel The magnesium-block is based on how GENESIS does it in its built-in Mg_block function (http: //www.genesis-sim.org/GENESIS/Hyperdoc/Manual-26.html#Mg_block), explained in The book of GENESIS, section 19.5 "NMDA Channels". ENDCOMMENT NEURON { POINT_PROCESS DCNsynNMDA NONSPECIFIC_CURRENT i RANGE g, i, e, tauRise, tauFall, MgFactor, gamma, C } UNITS { (nA) = (nanoamp) (mV) = (millivolt) (mM) = (milli/liter) } PARAMETER { tauRise = 1 (ms) tauFall = 1 (ms) e = 0 (mV) MgFactor = 0.1 (mM) gamma = 0.1 } ASSIGNED { C v (mV) i (nA) g (microsiemens) factor } STATE { A (microsiemens) B (microsiemens) } INITIAL { LOCAL tp if (tauRise/tauFall > .9999) { tauRise = .9999*tauFall } A = 0 B = 0 tp = (tauRise*tauFall)/(tauFall - tauRise) * log(tauFall/tauRise) factor = -exp(-tp/tauRise) + exp(-tp/tauFall) factor = 1/factor } BREAKPOINT { SOLVE state METHOD cnexp C = 1 / (1 + MgFactor * exp(-gamma * v)) g = (B - A) * C i = g*(v - e) } DERIVATIVE state { A' = -A/tauRise B' = -B/tauFall } NET_RECEIVE(weight (microsiemens)) { state_discontinuity(A, A + weight*factor) state_discontinuity(B, B + weight*factor) }