// Genesis script to substitute constant membrane conductance for GABA chans. // Conductance amount is scaled according to compartment surface area. // Author: J. Edgerton, 08/2004 randseed 78123456 int i str striatumcompartment float d,l,surf,Rmemb,Ememb float nspikes,ginteg,gsyn,gcompt float totsurf,meansurf include ../../common/calc_syn_integ.g //create input element tree outside of the cell path if (!{exists /inputs}) create neutral /inputs end create neutral /inputs/striatum // get sum total surface area of all compartments receiving striatal input. totsurf = 0 openfile {striatumfname} r for (i = 1; i <= {num_striatum_compts}; i = i + 1) striatumcompartment = {readfile {striatumfname}} // get compt params d = {getfield {cellpath}/{striatumcompartment} dia} l = {getfield {cellpath}/{striatumcompartment} len} surf = {PI}*{d}*{l} totsurf = {totsurf} + {surf} end closefile {striatumfname} meansurf = {totsurf}/{num_striatum_compts} //cycle through each dendritic compartment and add leak. openfile {striatumfname} r for (i = 1; i <= {num_striatum_compts}; i = i + 1) striatumcompartment = {readfile {striatumfname}} // get compt params d = {getfield {cellpath}/{striatumcompartment} dia} l = {getfield {cellpath}/{striatumcompartment} len} surf = {PI}*{d}*{l} Rmemb = {getfield {cellpath}/{striatumcompartment} Rm} Ememb = {getfield {cellpath}/{striatumcompartment} Em} // set up timetable create neutral /inputs/striatum/{striatumcompartment} create timetable /inputs/striatum/{striatumcompartment}/timetable if ({striatum_rate} > 0) setfield /inputs/striatum/{striatumcompartment}/timetable \ maxtime {rundur} act_val 1.0 method 2 \ meth_desc1 {1/{{striatum_rate}*{num_striatum_per_comp}}} \ meth_desc2 0 meth_desc3 3 call /inputs/striatum/{striatumcompartment}/timetable TABFILL end // count # synaptic events in timetable // NOTICE: the # events assumes that the duration of the run is // set by the parameter {rundur}. nspikes = {getfield \ /inputs/striatum/{striatumcompartment}/timetable maxpos} // calculate total synaptic conductance integral for run ginteg = {nspikes}*{calc_syn_integ \ {G_GABA} {tauRise_GABA} {tauFall_GABA}} // calculate mean invariant conductance level scaled by surf gsyn = {({surf}/{meansurf})*({ginteg}/{rundur})} // determine new values for compartment Rm and Em gcompt = 1/{Rmemb} // echo "gsyn: " {gsyn} "gcompt: " {gcompt} setfield {cellpath}/{striatumcompartment} Rm {1/({gcompt} + {gsyn})} setfield {cellpath}/{striatumcompartment} Em \ {{Ememb} + ({E_GABA} - {Ememb})*({gsyn}/({gcompt} + {gsyn}))} // diagnostic /* echo {striatumcompartment} "Rm was: " {Rmemb} echo "Rm is now: " {getfield {cellpath}/{striatumcompartment} Rm} echo "Em was: " {Ememb} echo "Em is now: " {getfield {cellpath}/{striatumcompartment} Em} */ end closefile {striatumfname}