TITLE chirp current COMMENT ----------------------------------------------------------------------------- chirp current injection ================================================== IMPLEMENTATION This mechanism is implemented as a nonspecific current defined as a point process, mimicking a current-clamp stimulation protocol, injecting a chirp waveform with a constant frequency or linearly or exponentially changing frequencies. f = t-t1 : time relative to start of chirp 'exponential' chirp = amp*sin(f*exp(f*beta)*Finit*pi) 'linear' chirp = amp*sin(pi*beta*f^2) 'constant' chirp = amp*sin(2*pi*Finit*f) amp, beta, linear, Finit, t1, dur PARAMETERS This mechanism takes the following parameters: amp = 0.0 (nA) : amplitude of injected current. positive values of i depolarize the cell t1 = 0.0 (ms) : starting time of the stimulation. dur = 0.0 (ms) : duration of chirp current Finit = 0.0 (Hz) : initial frequency of the chirp current. beta = 0.0 (Hz/s) : rate of change of chirp frequency ctype = 1 (1) : chirp type. 0 = constant, 1 = linear (default), 2 = exponential ----------------------------------------------------------------------------- ENDCOMMENT :INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)} NEURON { POINT_PROCESS chirp RANGE amp, t1, dur, Finit, beta, ctype NONSPECIFIC_CURRENT i } UNITS { (nA) = (nanoamp) (mV) = (millivolt) } PARAMETER { amp = 1.0 (nA) : amplitude of injected current t1 = 1000 (ms) : starting time of the stimulation. dur = 20000 (ms) : duration of chirp current Finit = 0.05 (Hz) : initial frequency of the chirp current. beta = 0.24 (Hz/s) : rate of change of chirp frequency ctype = 2 (1) : chirp type. 0 = constant, 1 = linear, 2 = exponential } ASSIGNED { i (nA) : fluctuating current } BREAKPOINT { LOCAL tc, pi, uf, mstos :tc is time from start of chirp (s) mstos = 1000 (ms/s) : conversion of ms to s uf = 1 (s) : unit conversion for exponential chirp. beta is in Hz for exponential chirp pi=3.14159265358979323846 :pi=PI if ((t < t1) || (t > t1+dur)) { i = 0 } else { tc=(t-t1)/mstos if (ctype == 0) { i = -amp*sin(2*pi*Finit*tc) } else if (ctype == 1) { i = -amp*sin(pi*beta*(tc+Finit/beta)^2) } else if (ctype == 2) { i = -amp*sin(2*pi*Finit*tc*exp(tc*beta*uf)) } } }