-
Notifications
You must be signed in to change notification settings - Fork 1
/
bipolarNMDA.mod
160 lines (147 loc) · 3.54 KB
/
bipolarNMDA.mod
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
:5403813100
:glutamate (AMPA+NMDA) release dependent on presynaptic voltage modeled here
NEURON {
POINT_PROCESS bipNMDA
RANGE Vpre,Vdel,Vdur,Vamp,Vbase,locx,locy,local_v,i,g,release,numves :Vpre1,Vpre2,
RANGE gAMPA,gNMDA,s_inf,t1,A,B,Vinf :1,Vinf2
GLOBAL maxves,newves,gAMPAsingle,gNMDAsingle,Vtau,Voff,Vset,VampK :,Vnoiserate,Vnoiseamp,Vnoise,Vtau2
GLOBAL icaconst ,gama,n,e,tauAMPA,tau1NMDA ,tau2NMDA
NONSPECIFIC_CURRENT iAMPA,iNMDA
:USEION ca WRITE ica
}
UNITS {
(nA) = (nanoamp)
(mV) = (millivolt)
(nS) = (nanomho)
}
PARAMETER {
:presynaptic
maxves=10 :TOTAL NUMBER OF VESICLES
newves=0.01 :REPLENISHMENT RATE - VESICLES
:Vnoise=0 :VOLTAGE VARIABILITY-INPUT NOISE
Vdel=50 (ms) :START OF ACTIVATION
Vdur=100 (ms) :DURATION OF ACTIVATION
Vamp=10 (mV) :PEAK AMPLITUDE -STIMULUS
Vbase=0 (mV) :BACKGROUND ACTIVATION
VampK=2 :SIZE OF THE INITIAL RESPONSE
:Vnoiseamp=.1 :INTRINSIC NOISE
:Vnoiserate=50 :INTRINSIC NOISE
Vtau=30 (/ms) :STIMULUS DEPOLARIZATION RATE
:Vtau2=100 (/ms) :STIMULUS HYPERPOLARIZATION RATE
:postsynaptic
gAMPAsingle=0.2 (nS) :AMPA CONDUCTANCE
gNMDAsingle=0.2 (nS) :NMDA CONDUCTANCE
tau1NMDA=50 (ms) :DEACTIVATION
tau2NMDA=2 (ms) :ACTIVATION
tauAMPA=2 (ms) :DEACTIVATION
n=0.25 (/mM) :NMDA VOLTAGE DEPENDENCE
gama=0.08 (/mV) :NMDA VOLTAGE DEPENDENCE
e = 0 (mV) :REVERSAL POTENTIAL
locx=0 :location x
locy=0 :location y
icaconst =0.1 :CALCIUM FRACTION
Voff=0 :0 - voltage dependent 1- voltage independent
Vset=-60 :set voltage when voltage independent
}
ASSIGNED {
:presynaptic
Vinf (mV)
:Vinf2 (mV)
s_inf
t1
numves
release
:postsynaptic
v (mV)
i (nA)
g (nS)
iNMDA (nA)
iAMPA (nA)
gNMDA (nS)
local_v (mV)
:ica (nA)
}
STATE {
A
B
gAMPA (nS)
:Vpre1 (mV)
:Vpre2 (mV)
Vpre (mV)
}
BREAKPOINT {
SOLVE state METHOD euler
if (t>t1){ :EVERY 1 MS
:Vpre=Vpre1-Vpre2+Vbase :+normrand(0,Vnoise) :PRESYNAPTIC VOLTAGE
:if (Vpre<0){
: Vpre=0
:}
: if (scop_random()<1/Vnoiserate){ :ADDED INTRINSIC NOISE
: Vinf1=Vinf1*(1+Vnoiseamp*(scop_random()-.5))
: }
releasefunc(Vpre)
t1=t1+1
}
:IF(at_time(Vdel)){ :START STIMULUS
: Vinf1=Vamp*VampK :*(1+Vnoiseamp*(scop_random()-.5))
: Vinf2=Vamp*(VampK-1)
:}
:IF(at_time(Vdel+Vdur)){ :END STIMULUS
: Vinf1=Vbase :*(1+Vnoiseamp*(scop_random()-.5))
: Vinf2=Vbase
:}
local_v=v*(1-Voff)+Vset*Voff :VOLTAGE DEPENDENCE
gNMDA=(A-B)/(1+n*exp(-gama*local_v) )
iAMPA = (1e-3)*gAMPA * (v - e)
iNMDA = (1e-3)*gNMDA * (v - e)
i= iAMPA+iNMDA :INDICATOR OF TOTAL CURRENT
g=gNMDA+gAMPA :INDICATOR OF TOTAL CONDUCTANCE
:ica=iNMDA*icaconst
:iNMDA=iNMDA-ica
}
INITIAL {
:presynaptic
s_inf=0
release=0
numves=maxves
t1=0
Vinf=0 :Vbase
Vpre=Vinf
:Vinf2=Vbase
:Vpre1=Vbase
:Vpre2=Vbase
:postsynaptic
gAMPA=0
gNMDA=0
A=0
B=0
}
FUNCTION releasefunc(vpre){
LOCAL rand,addves
s_inf=vpre/100
release=0
FROM rand=0 TO numves-1 { :GOES OVER ALL RRP
if (scop_random()<s_inf){
release=release+1
}
}
if (release>0){ :RELEASE
numves=numves-release
if (numves<0){numves=0}
state_discontinuity( gAMPA, gAMPA+ release*gAMPAsingle)
state_discontinuity( A, A+ release*gNMDAsingle)
state_discontinuity( B, B+ release*gNMDAsingle)
}
addves=0 :REPLINISHMENT
FROM rand=0 TO maxves-numves-1 {
if (scop_random()<newves){addves=addves+1}
}
numves=numves+addves
}
DERIVATIVE state {
A'=-A/tau1NMDA
B'=-B/tau2NMDA
gAMPA'=-gAMPA/tauAMPA
Vpre'=(-Vpre+Vinf)/Vtau
:Vpre2'=(-Vpre2+Vinf2)/Vtau2
}