// function to compute stimulus level required to acheive // a specified voltage in the steady state // 2/8/99 P. Manis func setstim() { finitialize(\$1) fcurrent() itot = (ina(0.5)+ik(0.5)+ih(0.5)+ica(0.5)+il_pok(0.5))*somaarea*1e6 return itot } objref s s = new Vector(100, 0) proc lists() { s = \$o1 n = s.size for i = 0, (n-1) { printf("i: %6.0f = %8.3f \n", i, s.x[i]) } } // the next two routines are utility functions for generating // parameterized stimuli /* make array in log space */ proc logspace() { a = \$1 b = \$2 c = \$3 if(c <= 1 || a <= 0 || b <= 0) { printf("\nBad call to logspace: c <= 1 | a <= 0 | b <= 0 a: %f b: %f c: %f\n", a, b, c) stim_list.resize(1) stim_list.x[1] = 1 return } stim_list.resize(c) logstep=(log10(b)-log10(a))/(c-1) for i = 0, c-1 { stim_list.x[i] = 10^(log10(a)+(logstep * i)) } } /* make array in linear space */ proc linspace() { a = \$1 b = \$2 c = \$3 if(c <= 0 || a > b) { printf("\nbad call to linspace: c = 0 | a > b a: %f b: %f c: %f \n", a, b, c) stim_list.resize(1) stim_list.x[1] = 1 return } stim_list.resize(c) linstep = (b - a) / (c-1) for i = 0, c-1 { stim_list.x[i] = a + (linstep*i) } }