NEURON { POINT_PROCESS IClampSine RANGE i,del,dur,u0,u1,r,torn,std,bias,A,f ELECTRODE_CURRENT i } UNITS { (nA) = (nanoamp) } PARAMETER { del = 100 (ms) dur = 200 (ms) : torn= 500 (ms) : std = 0.2 (nA) : u0 = 0.2 (nA) : u1 = 0.8 (nA) : r = 60 bias = 0 (nA) pi = 3.1415926 A = 1 (nA) f = 2.5 : frequency of sine } ASSIGNED { ival (nA) i (nA) amp (nA) noise (nA) res (nA) :Respiration modulation on (1) } INITIAL { i = 0 on = 0 net_send(del, 1) } BEFORE BREAKPOINT { if (on) { :noise = normrand(0,std*1(/nA))*1(nA) res = 0.5*sin(2*pi*f*(t/1000-0.25/f))+0.5 :amp = u0 + 0.5*(u1-u0)*(tanh((t-torn)/(r/3)/(1(ms))-3)+1) ival = A*res + bias } else { ival = 0 } } BREAKPOINT { i = ival } NET_RECEIVE (w) { if (flag == 1) { if (on == 0) { : turn it on on = 1 : prepare to turn it off net_send(dur, 1) } else { : turn it off on = 0 } } }