File: traubchan.g

package info (click to toggle)
genesis 2.1-1.1
  • links: PTS
  • area: main
  • in suites: potato
  • size: 14,288 kB
  • ctags: 10,667
  • sloc: ansic: 111,959; makefile: 2,240; yacc: 1,797; lex: 976; csh: 54; sh: 13
file content (167 lines) | stat: -rw-r--r-- 4,856 bytes parent folder | download | duplicates (5)
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
//genesis

/* FILE INFORMATION
** The Traub set of voltage and conc dependent channels
** Implemented by : Upinder S. Bhalla.
** 	R.D.Traub, Neuroscience Vol 7 No 5 pp 1233-1242 (1982)
**
** This file depends on functions and constants defined in defaults.g
*/

// CONSTANTS
/* hippocampal cell resting potl */
float EREST_ACT = -0.070
float ENA = 0.045
float EK = -0.085
float ECA = 0.070
float SOMA_A = 1e-9 /* Square meters */

//========================================================================
//			Tabulated Ca Channel
//========================================================================


function make_Ca_hip_traub
	if (({exists Ca_hip_traub}))
		return
	end


	create vdep_channel Ca_hip_traub
		setfield ^ Ek {ECA} gbar {1.2e3*SOMA_A} Ik 0 Gk 0

	create tabgate Ca_hip_traub/s
	/* there is a singularity at x=0, so I hack around that by using
	** an odd number of sample points */
	setup_table Ca_hip_traub/s alpha 101 {40e3*(0.060 + EREST_ACT)}  \
	    -40e3 -1.0 {-1.0*(0.060 + EREST_ACT)} -0.010
	setup_table Ca_hip_traub/s beta 101 {-5e3*(0.045 + EREST_ACT)}  \
	    5e3 -1.0 {-1.0*(0.045 + EREST_ACT)} 10.0e-3

	create tabgate Ca_hip_traub/r
	call Ca_hip_traub/r TABCREATE alpha 1 -1 1000
	setfield Ca_hip_traub/r alpha->table[0] 5.0
	setfield Ca_hip_traub/r alpha->table[1] 5.0

	setupgate Ca_hip_traub/r beta  {25.0*200.0} -25.0 \
	     -1.0 -200.0 -20.0  -size 1000 -range -1 1000

/*
	create Ca_concen Ca_hip_traub/conc
	set Ca_hip_traub/conc \
		tau		0.01	\			// sec
		B		{5.2e-6/(SOMA_XA* \
	    SOMA_L)} \	// Curr to conc
		Ca_base		0.0
*/

	addmsg Ca_hip_traub/s Ca_hip_traub MULTGATE m 5
	addmsg Ca_hip_traub/r Ca_hip_traub MULTGATE m 1
	addfield  Ca_hip_traub	addmsg1
	addfield  Ca_hip_traub	addmsg2
	addfield  Ca_hip_traub	addmsg3
	setfield  Ca_hip_traub  \
	    addmsg1 "../Ca_mit_conc	r	VOLTAGE	Ca" \
	    addmsg2 ".		../Ca_mit_conc	I_Ca	Ik" \
	    addmsg3 "..	s		VOLTAGE	Vm"

end

//========================================================================
//			Ca conc
//========================================================================

function make_Ca_mit_conc
	if (({exists Ca_mit_conc}))
		return
	end
	create Ca_concen Ca_mit_conc
	// sec
	// Curr to conc
	setfield Ca_mit_conc tau 0.01 B 5.2e-6 Ca_base 0.00001
end

//========================================================================
//			Tabulated K channel - 
//========================================================================


function make_K_hip_traub
	if (({exists K_hip_traub}))
		return
	end

	create vdep_channel K_hip_traub
	setfield ^ Ek {EK} gbar {360.0*SOMA_A} Ik 0 Gk 0

	create tabgate K_hip_traub/n
	setup_table K_hip_traub/n alpha 100 {32e3*(0.015 + EREST_ACT)}  \
	    -32e3 -1.0 {-1.0*(0.015 + EREST_ACT)} -0.005
	setup_table K_hip_traub/n beta 100 500.0 0.0 0.0  \
	    {-1.0*(0.010 + EREST_ACT)} 40.0e-3

	create table K_hip_traub/ya2
	call K_hip_traub/ya2 TABCREATE 100 -0.1 0.1
	setup_table3 K_hip_traub/ya2 table 100 -0.1 0.1 2000 0 1  \
	    {-1.0*(0.085 + EREST_ACT)} -0.010
	create tabgate K_hip_traub/y
	setup_table K_hip_traub/y alpha 100 28 0 0  \
	    {-1.0*(0.015 + EREST_ACT)} 0.015
	setup_table K_hip_traub/y beta 100 400 0 1  \
	    {-1.0*(0.040 + EREST_ACT)} -0.010

	addmsg K_hip_traub/n K_hip_traub MULTGATE m 4
	addmsg K_hip_traub/y K_hip_traub MULTGATE m 1
	addmsg K_hip_traub/ya2 K_hip_traub/y SUM_ALPHA output
	addfield K_hip_traub  addmsg1
	addfield K_hip_traub  addmsg2
	addfield K_hip_traub  addmsg3
	setfield  K_hip_traub addmsg1 "..	n	VOLTAGE	Vm"  \
	    addmsg2 "..	y	VOLTAGE	Vm"  \
	    addmsg3 "..	ya2	INPUT	Vm"
end

//========================================================================
//			Tabulated Ca dependent K - channel.
//========================================================================

function make_Kca_hip_traub
	if (({exists Kca_hip_traub}))
		return
	end

	create vdep_channel Kca_hip_traub

	setfield ^ Ek {EK} gbar {360.0*SOMA_A} Ik 0 Gk 0

	create table Kca_hip_traub/qv
	call Kca_hip_traub/qv TABCREATE 100 -0.1 0.1
	int i
	float x, dx, y
	x = -0.1
	dx = 0.2/100.0
	for (i = 0; i <= 100; i = i + 1)
		y = {exp {(x - EREST_ACT)/0.027}}
		setfield Kca_hip_traub/qv table->table[{i}] {y}
		x = x + dx
	end

	create tabgate Kca_hip_traub/qca

	setupgate Kca_hip_traub/qca alpha  {5.0*200.0}  \
	    -5.0 -1.0 -200.0 -20.0 -size 1000 -range -1 100

	call Kca_hip_traub/qca TABCREATE beta 1 -1 100
	setfield Kca_hip_traub/qca beta->table[0] 2.0
	setfield Kca_hip_traub/qca beta->table[1] 2.0

	addmsg Kca_hip_traub/qv Kca_hip_traub/qca PRD_ALPHA output
	addmsg Kca_hip_traub/qca Kca_hip_traub MULTGATE m 1
	addfield  Kca_hip_traub addmsg1
	addfield  Kca_hip_traub addmsg2
	setfield  Kca_hip_traub  \
	    addmsg1 "../Ca_mit_conc	qca	VOLTAGE		Ca" \
	    addmsg2 "..		qv	INPUT		Vm"
end

//========================================================================