COMMENT modulate.mod JG 4/2/97 A mechanism for having the external conc of a modulator like cyclothiazide change in the shape of an alpha function &/or DC step/Ramp where glu = 0 for t < Alpha_Delay and glu = Alpha_Max * (t - Alpha_Delay)/Alpha_tau * exp(-(t - Alpha_Delay - Alpha_tau)/Alpha_tau) for t > Alpha_Delay this has the property that the maximum value is Alpha_Max and occurs at t = delay + Alpha_tau. Graphic viewing of the output of this point process is achieved by directly entering the value 'mod_modulator' into the Plot What? entry field for a new graph, State axis. Neuron DOES NOT show this variable on ANY of its menus. ENDCOMMENT INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)} NEURON { POINT_PROCESS modulator RANGE Alpha_Max, Alpha_Delay, Alpha_tau, DC_Level, DC_Delay, DC_Off, Ramp_Max, Ramp_Delay, Ramp_Off, Slope_UP, Slope_DOWN GLOBAL mod } UNITS { (mV) = (millivolt) (umho) = (micromho) (mM) = (milli/liter) } PARAMETER { Alpha_Max=0 (umho) Alpha_Delay=0 (ms) Alpha_tau=.1 (ms) e=0 (mV) v (mV) mod=0 (mM) DC_Level (mM) DC_Delay (ms) DC_Off (ms) Ramp_Max=0.5 (mM) Ramp_Delay=0 (ms) Ramp_Off=0 (ms) Slope_UP=1 (ms) Slope_DOWN=-.0001 (ms) } BREAKPOINT { mod = mramp(t) + (Alpha_Max * alpha( (t - Alpha_Delay)/Alpha_tau )) } FUNCTION alpha(x) { if (x < 0 || x > 10) { alpha = 0 }else{ alpha = x * exp(1 - x) } } FUNCTION mramp(x) { VERBATIM double timeramp, x, Dc; x = _lx; if (x >= DC_Delay & x < DC_Off) Dc = DC_Level; else Dc = 0; if (x < Ramp_Delay) timeramp = Dc; else { if (x < Ramp_Off) { timeramp = Dc + (Slope_UP * (x - Ramp_Delay)); if (timeramp >= Ramp_Max) timeramp = Ramp_Max; } else { timeramp = Ramp_Max + (Slope_DOWN * (x - Ramp_Off)); if (timeramp <= Dc) timeramp = Dc; } } return (timeramp); ENDVERBATIM }