Transforming XML file: NeuroMLFiles/Examples/ChannelML/CaHVA_Chan.xml using XSL file: NeuroMLFiles/Schemata/v1.8.1/Level2/ChannelML_v1.8.1_GENESIStab.xsl
View original file before transform
|
Converting the file: CaHVA_Chan.xml// This is a GENESIS script file generated from a ChannelML v1.8.1 file// The ChannelML file is mapped onto a tabchannel object // Units of ChannelML file: SI Units, units of GENESIS file generated: Physiological Units /* A channel from Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the Cerebellar Granule Cell Layer */ function make_Gran_CaHVA_98 /* A High Voltage Activated Ca2+ channel Reference: Maex, R and De Schutter, E. Synchronization of Golgi and Granule Cell Firing in a Detailed Network Model of the cerebellar Granule Cell Layer. J Neurophysiol, Nov 1998; 80: 2521 - 2537 Pubmed: http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=9819260&dopt=Abstract */ str chanpath = "/library/Gran_CaHVA_98" if ({exists {chanpath}}) return end create tabchannel {chanpath} setfield {chanpath} \ Ek 80 \ Ik 0 \ Xpower 2 \ Ypower 1 setfield {chanpath} \ Gbar 0.9084215999999999 \ Gk 0 // There is a Q10 factor which will alter the tau of the gates float temp_adj_m = {pow 3 {(celsius - 17.350264793)/10}} float temp_adj_h = {pow 3 {(celsius - 17.350264793)/10}} float tab_divs = 400 float v_min = -100 float v_max = 100 float v, dv, i // Creating table for gate m, using name X for it here float dv = ({v_max} - {v_min})/{tab_divs} call {chanpath} TABCREATE X {tab_divs} {v_min} {v_max} v = {v_min} // There is a voltage offset of 0.010. This will shift the dependency of the rate equations v = v - 10 for (i = 0; i <= ({tab_divs}); i = i + 1) // Looking at rate: alpha float alpha float A, B, Vhalf // ChannelML form of equation: alpha which is of form sigmoid, with params: // A = 1600, B = -0.01388888889, Vhalf = 0.005, in units: SI Units A = 1.6 B = -13.888888889999999 Vhalf = 5 alpha = A / ( {exp {(v - Vhalf) / B}} + 1) // Looking at rate: beta float beta float A, B, Vhalf // ChannelML form of equation: beta which is of form exp_linear, with params: // A = 100, B = -0.005, Vhalf = -0.0089, in units: SI Units A = 0.1 B = -5 Vhalf = -8.9 if ( {abs {(v - Vhalf)/ B}} < 1e-6) beta = A * (1 + (v - Vhalf)/B/2) else beta = A * ((v - Vhalf) / B) /(1 - {exp {-1 * (v - Vhalf)/B}}) end // Using the alpha and beta expressions to populate the tables float tau = 1/(temp_adj_m * (alpha + beta)) setfield {chanpath} X_A->table[{i}] {temp_adj_m * alpha} setfield {chanpath} X_B->table[{i}] {temp_adj_m * (alpha + beta)} v = v + dv end // end of for (i = 0; i <= ({tab_divs}); i = i + 1) setfield {chanpath} X_A->calc_mode 1 X_B->calc_mode 1 // Creating table for gate h, using name Y for it here float dv = ({v_max} - {v_min})/{tab_divs} call {chanpath} TABCREATE Y {tab_divs} {v_min} {v_max} v = {v_min} // There is a voltage offset of 0.010. This will shift the dependency of the rate equations v = v - 10 for (i = 0; i <= ({tab_divs}); i = i + 1) // Looking at rate: alpha float alpha // Found a generic form of rate equation for alpha, using expression: v < -0.060 ? 5.0 : 5 * (exp (-50 * (v - (-0.060)))) // Will translate this for GENESIS compatibility... // Equation (and all ChannelML file values) in SI Units but this script in Physiological Units v = v * 0.001 // temporarily set v to units of equation... if (v < -0.060 ) alpha = 5.0 else alpha = 5 * {exp {-50 * {v - {-0.060}}}} end v = v * 1000 // reset v // Set correct units of alpha alpha = alpha * 0.001 // Looking at rate: beta float beta // Found a generic form of rate equation for beta, using expression: v < -0.060 ? 0 : 5 - (5 * (exp (-50 * (v - (-0.060))))) // Will translate this for GENESIS compatibility... // Equation (and all ChannelML file values) in SI Units but this script in Physiological Units v = v * 0.001 // temporarily set v to units of equation... if (v < -0.060 ) beta = 0 else beta = 5 - {5 * {exp {-50 * {v - {-0.060}}}}} end v = v * 1000 // reset v // Set correct units of beta beta = beta * 0.001 // Using the alpha and beta expressions to populate the tables float tau = 1/(temp_adj_h * (alpha + beta)) setfield {chanpath} Y_A->table[{i}] {temp_adj_h * alpha} setfield {chanpath} Y_B->table[{i}] {temp_adj_h * (alpha + beta)} v = v + dv end // end of for (i = 0; i <= ({tab_divs}); i = i + 1) setfield {chanpath} Y_A->calc_mode 1 Y_B->calc_mode 1 end |
Time to transform file: 0.076 secs