-
Notifications
You must be signed in to change notification settings - Fork 2
/
demo_HPGA_non-saturating_noIh.hoc
171 lines (123 loc) · 4.32 KB
/
demo_HPGA_non-saturating_noIh.hoc
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
/*----------------------------------------------------------------------------
Simulation of hyperpolarization-activated graded persistent
activity in prefrontal cortex
Reference: Winograd M, Destexhe A, Sanchez-Vives, MV.
Hyperpolarization-activated graded persistent activity in
the prefrontal cortex. Proc. Natl. Acad. Sci. USA
105: 7298-7303, 2008.
Intrinsic currents: INa, IKd for action potentials, IM for
spike-frequency adaptation, ICaL for calcium currents,
calcium dynamics and the hyperpolarization-activated current
Ih. There is also a calcium regulation of Ih, which was
taken from thalamic neurons (Destexhe et al., J Neurophysiol.,
1996)
"non-saturating" model, no Ih (Fig 4 of the paper)
----------------------------------------------------------------------------*/
//----------------------------------------------------------------------------
// load and define general graphical procedures
//----------------------------------------------------------------------------
load_file("nrngui.hoc")
objectvar g[20] // max 20 graphs
ngraph = 0
proc addgraph() { local ii // define subroutine to add a new graph
// addgraph("variable", minvalue, maxvalue)
ngraph = ngraph+1
ii = ngraph-1
g[ii] = new Graph()
g[ii].size(0,tstop,$2,$3)
g[ii].xaxis()
g[ii].yaxis()
g[ii].addvar($s1,1,0)
g[ii].save_name("graphList[0].")
graphList[0].append(g[ii])
}
nrnmainmenu() // create main menu
nrncontrolmenu() // crate control menu
//----------------------------------------------------------------------------
// general parameters
//----------------------------------------------------------------------------
dt=0.1
tstop = 66000
runStopAt = tstop
steps_per_ms = 5
celsius = 36
v_init = -70
//----------------------------------------------------------------------------
// create compartments and insert currents
//----------------------------------------------------------------------------
create soma
access soma
soma { // neuron settings
nseg = 1
diam = 18.8
L = 18.8
Ra = 123.0
}
soma { // passive properties
insert ppasi
g_ppasi = 0.001
e_ppasi = -70
}
soma { // active properties
insert hh3 // INa and IKd
gnabar_hh3=0.07
gkbar_hh3=0.007
insert im // IKM
gkbar_im = 4e-6
taumax_im = 4000 // adaptation decay time cst of 622 ms
insert iL // ICaL
pca_IL = 2.76e-4
insert cada // calcium dynamics
taur_cada = 20
depth_cada = 1
// insert iar // Ih current
// ghbar_iar=0.00002
// cac_iar = 0.006
// values for the "non-saturating" model
// k2_iar = 1e-5 // slower decay of P1 compared to thalamic model
// k4_iar = 0.001 // -> decay time cst of 875 ms (same as thalamic model)
// values for the "saturating" model (faster upregulation kinetics)
// k2_iar = 1e-4
// k4_iar = 0.008
}
objref APC // insert AP counter + calculate firing rate
APC = new APCounter2(0.5)
soma APC.loc(0.5)
//eh=-20
//----------------------------------------------------------------------------
// insert periodic current pulse generator
//----------------------------------------------------------------------------
objref curr
curr = new Ipulse3()
soma curr.loc(0.5)
curr.del = 10000 // delay before starting first pulse
curr.dur = 4000 // duration of pulse
curr.per = curr.del + curr.dur // total period between pulses
curr.num = 100 // nb of pulses
for i=0,curr.num-1 {
curr.amp[i] = -0.3 // amplitude of the pulses
}
curr.dc = 0.232 // dc current
//----------------------------------------------------------------------------
// add graphs
//----------------------------------------------------------------------------
objref vbox, hbox[3]
if (name_declared("use_boxes")) {
vbox=new VBox()
vbox.intercept(1)
new_row(0)
}
addgraph("soma.v(0.5)",-80,20) // membrane potential
addgraph("curr.i",-0.3,0.3) // current
//addgraph("soma.m_iar(0.5)",0,2) // activation of Ih
//addgraph("soma.o1_iar(0.5)",0,1) // v-dep open state
//addgraph("soma.o2_iar(0.5)",0,1) // ca-bound open state
//addgraph("soma.p1_iar(0.5)",0,0.1) // ca-bound 2nd messenger
if (name_declared("use_boxes")) { new_row(1) }
addgraph("soma.cai(0.5)",0,0.01) // calcium
//addgraph("soma.ica(0.5)",-0.1,0) // calcium current
addgraph("APC.rate",0,50) // instantaneous firing rate
if (name_declared("use_boxes")) {
hbox[1].intercept(0)
hbox[1].map()
}