//genesis - gnrh cell genesis2 script
/*********************************************************************
** The shell of this script is based on the Purkinje cell script of
** De Schutter, as distributed with Genesis.
** This version actually computes all the tables and saves them to files
** E. De Schutter, Caltech, 1991-1992
**********************************************************************/
/************************************************************************
** Script to calculate the various parameters used in
** LeBeau, Van Goor, et al's modification of the Hodgkin-Huxley
** formalism for various voltage-activated channels in GT1 Neurons.
**
** These calculations are based on:
** LeBeau, Van Goor, Stojilkovic and Sherman,"Modeling of Membrane
** Excitability in Gonadotropin-Releasing Hormone-Secreting Neurons Regulated
** by Ca2+-Mobilizing and Adenylyl Cyclase-Coupled Receptors",
** J. Neurosci., 20(24):9290-9297 (2000). (Referred to as LBVG(00))
**
** Additional equations come from:
** Van Goor, LeBeau, Krsmanovic, Sherman, Catt, and Stojilkovic,
** "Amplitude-Dependant Spike-Broadening and Enhanced Ca2+ Signaling in
** GnRH-Secreting Neurons", Biophysical Journal 79(3):1310-1323 (2000)
** (Referred to as VGLB(00)).
**
**
** These equations have been de-constructed and re-worked by Carson Roberts
** in the essay "GT1 Channels from LBVG(00)" (2004).(unpublished)
**
** Written by Carson Roberts, 11/2004-05/2005
**************************************************************************/
/* Explanation of Temperature Scaling from De Schutter: */
/**************************************************************************
** The data on which these currents are based were collected at room
** temperature (anything in the range 20 to 25C). All rate factors were
** adapted for body temperature (37C), assuming a Q10 of about 3;
** in practice all rate factors were multiplied by a factor of 5
**************************************************************************/
// CONSTANTS
/* should be defined by calling routine (all correctly scaled):
** ENa, GNa
** ECa, GCa
** EK, GK
** Eh, Gh */
int include_gnrh_chansave
if ( {include_gnrh_chansave} == 0 ) /* Higest-Level Loop in Program */
include_gnrh_chansave = 1
int i
float x, dx, y
/***********************************************************************************
** For this model, the Potassium Delayed Rectifier is taken from LBVG(00). They
** have only "n" gates for Their Kdr, and a constant "h" gate, if used at all.
*************************************************************************************/
function make_Kdr_gnrh
if (({exists Kdr_gnrh}))
return
end
create tabchannel Kdr_gnrh
float npower = 4 // 4
setfield Kdr_gnrh Ek {EK} Gbar {GKdrs} Ik 0 Gk 0\
Xpower {npower} Ypower 0 Zpower 0
/************************************************************************
** The names of the variables used here are copied from the XPP scripts
** "gt1v2.041.ms1b.ode" and "gt1v3.031.0de" from Artie Sherman, one of the
** co-authors on LBVG(00).
*************************************************************************/
float snkdr = -1 // This is s (sign) on p.8 of GT1 Channels...
/*******************************************************************************/
/* In order to adjust "Spike Threshold" to match more nearly the observed */
/* values in the gfp-gnrh neurons, it may be useful to shift the activation of */
/* the Kdr to higher voltages. This will be attempted by changing the */
/* half-activation value, "vnkdr" in LBVG's model. Their value (translated */
/* into Genesis, was vnkdr = 0.025..... */
/*******************************************************************************/
float vkdr_shift =0.0 //0.0149 //0.022 //0.0031
float vkdr_LBVG = 0.025
float vnkdr = {vkdr_LBVG} -{vkdr_shift}
//float vnkdr = 0.025 // This is b (V) on p.8 of GT1 Channels....
float knkdr = 0.015 // This is c (V) on P.8 of GT1 Channels..
float taunkdrss = 0.015 // This is a (sec) on p.7 of GT1 Channels...
float vtnkdr = 0.030 // This is b (V) on p.7...
float ktnkdr = 0.015 // This is c (V) on p.7....
float dtnkdr = 0.001 // This is d (sec) on p.7 .....
float rate_factor = 5 //5
/* The above is a factor to compensate for LBVG(00) using rate factors measured at Room Temp, and */
/* this model representing slices measured at 32 degrees (see discussion in De Schutter-Bower (94)) */
float ninf, taun,taun2, alpha, beta
call Kdr_gnrh TABCREATE X {tab_xdivs} {tab_xmin} {tab_xmax}
x = {tab_xmin}
dx = ({tab_xmax} - {tab_xmin})/{tab_xdivs}
for (i = 0; i <= {tab_xdivs}; i = i + 1)
ninf = 1 / (1 + {exp { {snkdr}*(x+{vnkdr}) / {knkdr} } } )
taun = {taunkdrss} / ({exp { (x+{vtnkdr} ) / {ktnkdr} } } + {exp {-1*(x+{vtnkdr}) / {ktnkdr} }}) + {dtnkdr}
taun2 = {taun}/{rate_factor}
/* Decrease Time Constant (increase rate) for higher temperature */
setfield Kdr_gnrh X_A->table[{i}] {taun2}
setfield Kdr_gnrh X_B->table[{i}] {ninf}
x = x + dx
end
tweaktau Kdr_gnrh X
call Kdr_gnrh TABFILL X {tab_xfills + 1} 0
setfield Kdr_gnrh X_A->calc_mode {NO_INTERP}
setfield Kdr_gnrh X_B->calc_mode {NO_INTERP}
/****************************************************************************
** End of equations for Kdr "n" gate
***************************************************************************/
call Kdr_gnrh TABSAVE Kdr_gnrh.tab
end /* of function "make_Kdr_gnrh": This channel creation will have to be explicitly called in setup*/
/******************************************************************************************************
** Next channel: Fast Sodium. Note that this is VGLB(00)'s "Hodgkin-Huxley-like" fast Na
** Model, and in later work they moved to the Markov Chain model of Kuo and Bean.
*******************************************************************************************************/
function make_NaF_gnrh
if (({exists NaF_gnrh}))
return
end
create tabchannel NaF_gnrh
float mpower = 3 // 3
setfield NaF_gnrh Ek {ENa} Gbar {GNaFs} Ik 0 Gk 0\
Xpower {mpower} Ypower 1 Zpower 0
/******************************************************************************
** The names of the variables used here are copied from the XPP script
** "gt1v2.041.ms1b.ode" from Artie Sherman, one of the co-authors on LBVG(00).
********************************************************************************/
float smna = -1 // This is s (sign) on p.8 of GT1 Channels...
/*******************************************************************************/
/* In order to adjust "Spike Threshold" to match more nearly the observed */
/* values in the gfp-gnrh neurons, it may be useful to shift the activation of */
/* the fast sodium to higher voltages. This will be attempted by changing the */
/* half-activation value, "vmna" in LBVG's model. Their value (translated */
/* into Genesis, was vmna = 0.0421..... */
/*******************************************************************************/
float vna_shift = 0.0146 //0.01976//0.0031
float vmna_LBVG = 0.0421
float vmna = {vmna_LBVG} -{vna_shift}
//float vmna = 0.0421 // This is b (V) on p.8 of GT1 Channels....
float kmna = 0.0043 // This is c (V) on P.8 of GT1 Channels..
float taumnass = 0.0043 // This is a (sec) on p.7 of GT1 Channels...
float vmnat = 0.047 // This is b (V) on p.7...
float kmnat = 0.011 // This is c (V) on p.7....
float dmnat = 0.0001 // This is d (sec) on p.7 .....
float rate_factor = 5
/* The above is a factor to compensate for LBVG(00) using rate factors measured at Room Temp, and */
/* this model representing slices measured at 32 degrees (see discussion in De Schutter-Bower (94)) */
float minf, taum,taum2, alpha, beta
call NaF_gnrh TABCREATE X {tab_xdivs} {tab_xmin} {tab_xmax}
x = {tab_xmin}
dx = ({tab_xmax} - {tab_xmin})/{tab_xdivs}
for (i = 0; i <= {tab_xdivs}; i = i + 1)
minf = 1 / (1 + {exp { {smna}*(x+{vmna}) / {kmna} } } )
taum = {taumnass} / ({exp { (x+{vmnat} ) / {kmnat} } } + 2*{exp {-2*(x+{vmnat}) / {kmnat} }}) + {dmnat}
taum2 = {taum}/{rate_factor}
/* Decrease Time Constant (increase rate) for higher temperature */
setfield NaF_gnrh X_A->table[{i}] {taum2}
setfield NaF_gnrh X_B->table[{i}] {minf}
x = x + dx
end
tweaktau NaF_gnrh X
call NaF_gnrh TABFILL X {tab_xfills + 1} 0
setfield NaF_gnrh X_A->calc_mode {NO_INTERP}
setfield NaF_gnrh X_B->calc_mode {NO_INTERP}
/****************************************************************************
** End of equations for NaF "m" gate
***************************************************************************/
/**********************************************************************************
** Equations for NaF "h" gate: Again, variable names are copied from the XPP script
** "gt1v2.041.ms1b.ode" from Artie Sherman, one of the co-authors on LBVG(00).
***********************************************************************************/
float shna = 1 // This is s (sign) on p.8 of GT1 Channels...
/*******************************************************************************/
/* In order to adjust "Spike Threshold" to match more nearly the observed */
/* values in the gfp-gnrh neurons, it may be useful to shift the inactivation of */
/* the fast sodium to higher voltages. This will be attempted by changing the */
/* half-activation value, "vmha" in LBVG's model. Their value (translated */
/* into Genesis, was vmha = 0.0682..... */
/*******************************************************************************/
float vhna_LBVG = 0.0682
float vhna = {vhna_LBVG} -{vna_shift}
//float vhna = 0.0682 // This is b (V) on p.8 of GT1 Channels....
//float vhna = 0.0682
float khna = 0.0108 // This is c (V) on P.8 of GT1 Channels..
float tauhnass = 0.150 // This is a (sec) on p.7 of GT1 Channels...
float vhnat = 0.080 // This is b (V) on p.7...
float khnat = 0.019 // This is c (V) on p.7....
float dhnat = 0.0 // This is d (sec) on p.7 .....
float rate_factor = 5
/* The above is a factor to compensate for LBVG(00) using rate factors measured at Room Temp, and */
/* this model representing slices measured at 32 degrees (see discussion in De Schutter-Bower (94)) */
float hinf, tauh,tauh2, alpha, beta
call NaF_gnrh TABCREATE Y {tab_xdivs} {tab_xmin} {tab_xmax}
x = {tab_xmin}
dx = ({tab_xmax} - {tab_xmin})/{tab_xdivs}
for (i = 0; i <= {tab_xdivs}; i = i + 1)
hinf = 1 / (1 + {exp { {shna}*(x+{vhna}) / {khna} } } )
tauh = {tauhnass} / ({exp { (x+{vhnat} ) / {khnat} } } + 2*{exp {-2*(x+{vhnat}) / {khnat} }}) + {dhnat}
tauh2 = {tauh}/{rate_factor}
/* Decrease Time Constant (increase rate) for higher temperature */
setfield NaF_gnrh Y_A->table[{i}] {tauh2}
setfield NaF_gnrh Y_B->table[{i}] {hinf}
x = x + dx
end
tweaktau NaF_gnrh Y
call NaF_gnrh TABFILL Y {tab_xfills + 1} 0
setfield NaF_gnrh Y_A->calc_mode {NO_INTERP}
setfield NaF_gnrh Y_B->calc_mode {NO_INTERP}
/****************************************************************************
** End of equations for NaF "h" gate
***************************************************************************/
call NaF_gnrh TABSAVE NaF_gnrh.tab
end /* of function "make_NaF_gnrh": This channel creation will have to be explicitly called in setup*/
/**************************************************************************************************************/
/******************************************************************************************************/
/* Set up Calcium "L" channels, after kinetics in LBVG */
function make_CaL_gnrh
if (({exists CaL_gnrh}))
return
end
create tabchannel CaL_gnrh
float mpower = 2 // 2
setfield CaL_gnrh Ek {ECa} Gbar {GCaLs} Ik 0 Gk 0\
Xpower {mpower} Ypower 0 Zpower 0
/************************************************************************
** The names of the variables used here are copied from the XPP scripts
** "gt1v2.041.ms1b.ode" and "gt1v3.031.0de" from Artie Sherman, one of the
** co-authors on LBVG(00).
*************************************************************************/
float smcal = -1 // This is s (sign) on p.8 of GT1 Channels...
/*******************************************************************************/
/* In order to adjust "Spike Threshold" to match more nearly the observed */
/* values in the gfp-gnrh neurons, it may be useful to shift the activation of */
/* the CaL to higher voltages. This will be attempted by changing the */
/* half-activation value, "vmcal" in LBVG's model. Their value (translated */
/* into Genesis, was vmcal = 0.040..... */
/*******************************************************************************/
float vmcal_shift =0.0
float vmcal_LBVG = 0.040 //This is b (V) on p.8 of GT1 Channels....
float vmcal = {vmcal_LBVG} -{vmcal_shift}
float kmcal = 0.012 // This is c (V) on P.8 of GT1 Channels..
float tmlss = 0.005 // This is a (sec) on p.7 of GT1 Channels...
float vtml = 0.015 // This is b (V) on p.7...
float ktml = 0.025 // This is c (V) on p.7....
float dtml = 0.0 // This is d (sec) on p.7 .....
float rate_factor = 5 //5
/* The above is a factor to compensate for LBVG(00) using rate factors measured at Room Temp, and */
/* this model representing slices measured at 32 degrees (see discussion in De Schutter-Bower (94)) */
float minf, taum,taum2, alpha, beta
call CaL_gnrh TABCREATE X {tab_xdivs} {tab_xmin} {tab_xmax}
x = {tab_xmin}
dx = ({tab_xmax} - {tab_xmin})/{tab_xdivs}
for (i = 0; i <= {tab_xdivs}; i = i + 1)
minf = 1 / (1 + {exp { {smcal}*(x+{vmcal}) / {kmcal} } } )
taum = {tmlss} / ({exp { (x+{vtml} ) / {ktml} } } + {exp {-1*(x+{vtml}) / {ktml} }}) + {dtml}
taum2 = {taum}/{rate_factor}
/* Decrease Time Constant (increase rate) for higher temperature */
setfield CaL_gnrh X_A->table[{i}] {taum2}
setfield CaL_gnrh X_B->table[{i}] {minf}
x = x + dx
end
tweaktau CaL_gnrh X
call CaL_gnrh TABFILL X {tab_xfills + 1} 0
setfield CaL_gnrh X_A->calc_mode {NO_INTERP}
setfield CaL_gnrh X_B->calc_mode {NO_INTERP}
/****************************************************************************
** End of equations for CaL "n" gate
***************************************************************************/
call CaL_gnrh TABSAVE CaL_gnrh.tab
end /* of function "make_CaL_gnrh": This channel creation will have to be explicitly called in setup*/
/***********************************************************************************************************/
/*****************************************************************/
end /* End of Highest-level "If" loop */