INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)} NEURON { POINT_PROCESS FakeExcSyn POINTER pre RANGE lastrelease, dummy, lastspike, spike, delay, amp NONSPECIFIC_CURRENT i GLOBAL dur, Prethresh, Deadtime } UNITS { (nA) = (nanoamp) (mV) = (millivolt) (umho) = (micromho) (mM) = (milli/liter) } PARAMETER { dur = 0.1 (ms) : current pulse duration amp = 2 (nA) : 2 : pulse amplitude Prethresh = -20 : voltage level nec for release Deadtime = 1 (ms) : mimimum time between release events delay = 0 (ms) : time between presynaptic AP and postsyn response. : A delay of 0.6 is used to simulate the time of AP propagation from : the middle of the CTX/CER axons to their synapses on TIN & RN. } ASSIGNED { i (nA) : pre : pointer to presynaptic variable lastrelease (ms) : time of last spike lastspike (ms) : time of last presynaptic spike dummy spike } INITIAL { lastrelease = -9e9 lastspike = 0 dummy = 0 spike = 0 } BREAKPOINT { SOLVE release i = -dummy*amp } PROCEDURE release() { LOCAL q, r :will crash if user hasn't set pre with the connect statement q = ((t - lastrelease) - dur) : time since last release ended r = (t - lastspike) : time since last spike : ready for another release? if (q > Deadtime && spike == 0) { if (pre > Prethresh) { : spike occured? spike = 1 lastspike = t } } else if (q > Deadtime && spike == 1) { if (t >= lastspike + delay) { dummy = 1 : start new injection lastrelease = t } } else if (q < 0) { : still releasing? : do nothing } else if (dummy == 1) { : in dead time after release dummy = 0 spike = 0 } }