load_file("nrngui.hoc") load_file("init.hoc") //relative sensitivities func nodal_cap() {local sav, y sav = node[0].cm forsec nodes cm*=$1 // print "nodal cm = ", node[0].cm y = velocity() forsec nodes cm = sav return y } func myelin_cap() {local sav, y sav = myelin[0].cm forsec myelins cm*=$1 // print "myelin cm = ", myelin[0].cm y = velocity() forsec myelins cm = sav return y } func axoplasm_cond() {local sav, y sav = node[0].Ra forall Ra /= $1 // print "axoplasm cond = ", 1/node[0].Ra y = velocity() forall Ra = sav return y } func internode_length() {local sav, y sav = myelin[0].L forsec myelins L*=$1 // print "internode length = ", myelin[0].L y = velocity() forsec myelins L = sav return y } func nodal_area() {local sav, y sav = node[0].L forsec nodes L*=$1 // print "nodal length = ", node[0].L y = velocity() forsec nodes L = sav return y } func gbar() {local savgna, savgk, savgl, y savgna = node[0].gnabar_hh savgk = node[0].gkbar_hh savgl = node[0].gl_hh forsec nodes { gnabar_hh *= $1 gkbar_hh *= $1 gl_hh *= $1 } // print "gbar factor = ", $1 y = velocity() forsec nodes { gnabar_hh = savgna gkbar_hh = savgk gl_hh = savgl } return y } func diameter() {local savd, savc, savg, y // number of wraps are proportional to diameter and therefore // myelin capacitance and conductance per unit area is inversely proportional savd = node[0].diam savc = myelin[0].cm savg = myelin[0].g_pas forall diam *= $1 forsec myelins { cm /= $1 g_pas /= $1 } // print "diam = ", node[0].diam y = velocity() forall diam = savd forsec myelins { cm = savc g_pas = savg } return y } objref g load_file(1, "fig2.ses") strdef tstr proc pl() { g.beginline for (x=$2; x <= $3; x += .1) { sprint(tstr, "y=%s(x)/normal_vel", $s1) execute(tstr) g.line(x, y) g.flush } } pl("nodal_cap", .4, 1) pl("myelin_cap", 1, 1.6) pl("axoplasm_cond", .9, 1.7) pl("internode_length", .5, 1) pl("nodal_area", .3, 1) pl("gbar", .4, 1.1) pl("diameter", .9, 1.5) print "normal velocity = ", velocity()