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))
}
}
}