COMMENT
Voffset.mod
Shifts voltage by the steady state level just before the onset of a current step. This is useful when fitting passive/subthreshold parameters.
Implemented by Christina Weaver, 2007 (christina.weaver@mssm.edu)
ENDCOMMENT
NEURON {
SUFFIX offst
RANGE Voff, Vshift, Vsum
}
PARAMETER {
Vraise = -71.3 (mV) : how much to shift voltage overall
on = 300 (ms) : onset time of current step
W = 50 (ms) : length of window to average over
we = 10 (ms) : time before step onset to end averaging window
didAvg = 0 (1) : flag to minimize computation
}
UNITS {
(mV) = (millivolt)
}
ASSIGNED {
v (millivolt)
: t (ms)
Vsum (mV)
npts (1)
Voff (mV)
Vshift (mV)
}
INITIAL {
Vsum = 0
Vshift = 0
npts = 0
Voff = v - Voff + Vraise
didAvg = 0
: printf("Set npts = %g, Voff %g\n",npts,Voff)
}
BREAKPOINT {
if( t >= on-we-W && t <= on-we ) {
Vsum = Vsum + v
npts = npts + 1
: printf("time %g\tv %g\tVsum %g\tnpts %g\n",t,v,Vsum,npts)
}
if( didAvg == 0 && t > on-we ) { : past averaging window
didAvg = 1
Voff = Vsum / npts
:printf("***TIME %g\tFound offset %g = %g / %g\n",t,Voff,Vsum,npts)
}
Vshift = v - Voff + Vraise
: if( t > on-we ) {
: printf("SH time %g\tVshift %g = v %g\t- Voff %g\t+ Vraise %g\n",t,Vshift,v,Voff,Vraise)
: }
}