-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathgnrh_chansave.g
363 lines (269 loc) · 14.9 KB
/
gnrh_chansave.g
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
//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 */