copying to personal repo

This commit is contained in:
Alan
2022-06-19 13:45:53 -05:00
commit bf2ffa7315
287 changed files with 54032 additions and 0 deletions

View File

@@ -0,0 +1,109 @@
TITLE CaPCalyx.mod The presynaptic calcium current at the MNTB calyx of Held
COMMENT
NEURON implementation of Calcium current from Borst and Sakmann, 1998.
Equations are basic HH; parameters are taken from Figure 8 legend in that paper.
Original implementation by Paul B. Manis, October 2007
Contact: pmanis@med.unc.edu
Modified 2/2014: Use Derivative block format.
ENDCOMMENT
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
(nA) = (nanoamp)
}
NEURON {
THREADSAFE
SUFFIX CaPCalyx
USEION ca READ eca WRITE ica
RANGE gbar, gcap, ica
GLOBAL minf, taum, alpha, beta
}
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
PARAMETER {
v (mV)
: celsius = 22 (degC) : model is defined on measurements made at 23-24 deg in Germany
celsius (degC)
dt (ms)
: eca = 43.9 (mV)
eca (mV)
gbar = 0.01 (mho/cm2) <0,1e9> : target is 48.9 nS total
alpha (1/ms)
beta (1/ms)
}
STATE {
m
}
ASSIGNED {
ica (mA/cm2)
gcap (mho/cm2)
minf (1)
taum (ms)
}
LOCAL mexp
BREAKPOINT {
SOLVE states METHOD cnexp
gcap = gbar*m*m
ica = gcap*(v - eca)
}
UNITSOFF
INITIAL {
trates(v)
m = minf
}
DERIVATIVE states { : Computes state variables m
rates(v) : at the current v and dt.
m' = (minf - m)/taum
:m = m + mexp*(minf-m)
:VERBATIM
: return 0;
:ENDVERBATIM
}
LOCAL q10
PROCEDURE rates(v) { :Computes rate and other constants at current v.
:Call once from HOC to initialize inf at resting v.
q10 = 3^((celsius - 24)/10) : if you don't like room temp, it can be changed!
minf = (1 / (1 + exp(-(v + 23.2) / 9.1)))
alpha = 1.78*exp(v/23.3)
beta = 0.140*exp(-v/15.0)
taum = 1/(alpha + beta)
}
PROCEDURE trates(v) { :Computes rate and other constants at current v.
:Call once from HOC to initialize inf at resting v.
LOCAL minc
TABLE minf, mexp
DEPEND dt, celsius FROM -150 TO 150 WITH 300
rates(v) : not consistently executed from here if usetable_hh == 1
: so don't expect the tau values to be tracking along with
: the inf values in hoc
minc = -dt * q10
mexp = 1 - exp(minc/taum)
}
UNITSON

134
cnmodel/mechanisms/Gly5GC.mod Executable file
View File

@@ -0,0 +1,134 @@
TITLE detailed model of Glycine receptors
COMMENT
-----------------------------------------------------------------------------
Kinetic model of Glycine-A receptors
====================================
C -- C1 -- C2 -- O1
| |
D1 -- D2 -- D3
-----------------------------------------------------------------------------
This Model is based on:
Gentet LJ, Clements JD Binding site stoichiometry and the effects of
phosphorylation on human alpha1 homomeric glycine receptors J Physiol (Lond)
2002 vol. 544 (Pt 1) pp. 97-106, Figure 7.
Written by Paul Manis, UNC Chapel Hill, 2009
Kinetic values are estimated from VCN glycine receptors.
This model has desensitization states.
-----------------------------------------------------------------------------
This mod file does not include mechanisms for the release and time course
of transmitter; it is to be used in conjunction with a sepearate mechanism
to describe the release of transmitter and that provides the concentration
of transmitter in the synaptic cleft (to be connected to pointer C here).
-----------------------------------------------------------------------------
ENDCOMMENT
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
NEURON {
POINT_PROCESS GLYaGC
POINTER XMTR
RANGE C0, C1, C2, D1, D2, D3, O1, Open
RANGE g, gmax, f1, f2
RANGE Erev
RANGE k1, km1, a1, b1, d1, r1, d2, r2, d3, r3, rd, dd
NONSPECIFIC_CURRENT i
}
UNITS {
(nA) = (nanoamp)
(mV) = (millivolt)
(pS) = (picosiemens)
(umho) = (micromho)
(mM) = (milli/liter)
(uM) = (micro/liter)
}
PARAMETER {
Erev = -70 (mV) : reversal potential
gmax = 500 (pS) : maximal conductance
: Rates
: bushy cell
k1 = 12.81 (/uM /ms) : binding
km1 = 0.0087 (/ms) : unbinding
a1 = 0.0194 (/ms) : opening
b1 = 1.138 (/ms) : closing
r1 = 5.19 (/ms) : desense 1
d1 = 0.000462 (/ms) : return from d1
r2 = 0.731 (/ms) : return from deep state
d2 = 1.641 (/ms) : going to deep state
r3 = 3.817 (/ms) : return from deep state
d3 = 1.806 (/ms) : going to deep state
rd = 1.0 (/ms)
dd = 1.0 (/ms)
}
ASSIGNED {
v (mV) : postsynaptic voltage
i (nA) : current = g*(v - Erev)
g (pS) : conductance
XMTR (mM) : pointer to glycine concentration
f1 (/ms) : binding
f2 (/ms) : binding
Open (1)
}
STATE {
: Channel states (all fractions)
C0 : unbound
C1 : single bound
C2 : double bound
D1 : desense, bound
O1 : open
D2 : Desense
D3 : Desense
}
INITIAL {
XMTR = 0
C0 = 1
C1 = 0
C2 = 0
O1 = 0
D1 = 0
D2 = 0
D3 = 0
}
BREAKPOINT {
SOLVE kstates METHOD sparse
Open = (O1)
g = gmax * Open
i = (1e-6) * g * (v - Erev)
}
KINETIC kstates {
f1 = k1 * (1e3) * XMTR
f2 = k1 * (1e3) * XMTR
~ C0 <-> C1 (f1,km1)
~ C1 <-> C2 (f2,12.5*km1)
~ C2 <-> O1 (a1,b1)
~ C1 <-> D1 (r1, d1)
~ C2 <-> D2 (r2, d2)
~ D1 <-> D2 (rd, dd)
~ D2 <-> D3 (r3, d3)
CONSERVE C0+C1+C2+D1+D2+D3+O1 = 1
}

149
cnmodel/mechanisms/Gly5PL.mod Executable file
View File

@@ -0,0 +1,149 @@
TITLE detailed model of Glycine receptors
COMMENT
-----------------------------------------------------------------------------
Kinetic model of Glycine-A receptors: Pascal Legendre (Mauthner Cell)
====================================
C0--C1--C2--O1
|
C3--O2
-----------------------------------------------------------------------------
This mod file does not include mechanisms for the release and time course
of transmitter; it is to be used in conjunction with a sepearate mechanism
to describe the release of transmitter and that provides the concentration
of transmitter in the synaptic cleft (to be connected to pointer C here).
-----------------------------------------------------------------------------
Modified Paul Manis, UNC Chapel Hill, 2009
Name, pointer name, kinetics are range variables, and kinetic values
are estimated from VCN glycine receptors.
Note: This model does not have a desensitization state.
-----------------------------------------------------------------------------
ENDCOMMENT
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
NEURON {
POINT_PROCESS GLYaPL
POINTER XMTR
RANGE C0, C1, C2, C3, O1, O2, Open
RANGE g, gmax, f1, f2
RANGE Erev
RANGE kon, koff, a1, b1, a2, b2, r, d
RANGE CellType : 0 for bushy, 1 for stellate
NONSPECIFIC_CURRENT i
}
UNITS {
(nA) = (nanoamp)
(mV) = (millivolt)
(pS) = (picosiemens)
(umho) = (micromho)
(mM) = (milli/liter)
(uM) = (micro/liter)
}
PARAMETER {
Erev = -70 (mV) : reversal potential
gmax = 500 (pS) : maximal conductance
CellType = 1 (1) : define cell type parameters
: Rates
: Stellate cell fit (1/1/10; excellent fit)
: kon = 0.0236 (/uM /ms) : binding
: koff = 2.4 (/ms) : unbinding
: a1 = 1.707 (/ms) : opening
: b1 = 8.95 (/ms) : closing
: a2 = 0.325 (/ms) : opening
: b2 = 5.871 (/ms) : closing
: r = 2.019 (/ms) : return from deep state
: d = 28.87 (/ms) : going to deep state
:if psdtype == 'glyfast': fit from 3/5/2010. error = 0.174 maxopen = 0.0385
: See synapses.py
a1 = 1.000476 (/ms) : opening
a2 = 0.137903 (/ms) : opening
b1 = 1.700306 (/ms) : closing
koff = 13.143132 (/ms) : unbinding
kon = 0.038634 (/ms) : binding
r = 0.842504 (/ms) : return from deep state
b2 = 8.051435 (/ms) : closing
d = 12.821820 (/ms) : going to deep state
}
ASSIGNED {
v (mV) : postsynaptic voltage
i (nA) : current = g*(v - Erev)
g (pS) : conductance
XMTR (mM) : pointer to glycine concentration
f1 (/ms) : binding
f2 (/ms) : binding
koff2 (/ms)
Open (1)
}
STATE {
: Channel states (all fractions)
C0 : unbound
C1 : single bound
C2 : double bound
C3 : bound but closed state to O2
O1 : open
O2 : open
}
INITIAL {
XMTR = 0.0
C0 = 1
C1 = 0
C2 = 0
C3 = 0
O1 = 0
O2 = 0
}
BREAKPOINT {
SOLVE kstates METHOD sparse
:VERBATIM
: if (CGly > 0.0) {
: fprintf(stderr, "t = %f Xmtr = %f\n", t, XMTR);
: }
: ENDVERBATIM
Open = (O1 + O2)
g = gmax * Open
i = (1e-6) * g * (v - Erev)
}
KINETIC kstates {
f1 = 2.0 * kon * (1e3) * XMTR
f2 = kon * (1e3) * XMTR
koff2 = 2.0 * koff
~ C0 <-> C1 (f1,koff)
~ C1 <-> C2 (f2,koff2)
~ C2 <-> O1 (a1,b1)
~ C2 <-> C3 (d, r)
~ C3 <-> O2 (a2,b2)
CONSERVE C0+C1+C2+C3+O1+O2 = 1
}

147
cnmodel/mechanisms/Gly5State.mod Executable file
View File

@@ -0,0 +1,147 @@
TITLE detailed model of Glycine receptors
COMMENT
-----------------------------------------------------------------------------
Kinetic model of Glycine-A receptors
====================================
C -- C1 -- C2
| |
O1 O2
-----------------------------------------------------------------------------
This mod file does not include mechanisms for the release and time course
of transmitter; it is to be used in conjunction with a sepearate mechanism
to describe the release of transmitter and that provides the concentration
of transmitter in the synaptic cleft (to be connected to pointer C here).
-----------------------------------------------------------------------------
Based on models
Destexhe, A., Mainen, Z.F. and Sejnowski, T.J. Kinetic models of
synaptic transmission. In: Methods in Neuronal Modeling (2nd edition;
edited by Koch, C. and Segev, I.), MIT press, Cambridge, 1998, pp. 1-25.
(electronic copy available at http://cns.iaf.cnrs-gif.fr)
Written by Alain Destexhe, Laval University, 1995
-----------------------------------------------------------------------------
Modified Paul Manis, UNC Chapel Hill, 2009
Changed name, pointer name, kinetics are range variables, and kinetic values
are estimated from VCN glycine receptors.
This model does not have a desensitization state.
-----------------------------------------------------------------------------
ENDCOMMENT
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
NEURON {
POINT_PROCESS GLYa5
POINTER XMTR
RANGE C0, C1, C2, O1, O2, Open
RANGE g, gmax, f1, f2
RANGE Erev
RANGE kf1, kf2, kb1, kb2, a1, b1, a2, b2
NONSPECIFIC_CURRENT i
}
UNITS {
(nA) = (nanoamp)
(mV) = (millivolt)
(pS) = (picosiemens)
(umho) = (micromho)
(mM) = (milli/liter)
(uM) = (micro/liter)
}
PARAMETER {
Erev = -70 (mV) : reversal potential
gmax = 500 (pS) : maximal conductance
: Rates
: from fits to averaged ipsc data, stellate cells 1/1/10
: kf1 = 0.002930 (/uM /ms) : binding
: kf2 = 0.005936 (/uM /ms) : binding
: kb1 = 2.793 (/ms) : unbinding
: kb2 = 1.445 (/ms) : unbinding
: a1 = 1e-6 (/ms) : opening
: b1 = 129.0 (/ms) : closing
: a2 = 5.10 (/ms) : opening
: b2 = 2.79 (/ms) : closing
: from fits to averaged ipsc data, bushy cells 1/1/10
kf1 = 0.0278 (/uM /ms) : binding
kf2 = 1e-6 (/uM /ms) : binding
kb1 = 0.000054 (/ms) : unbinding
kb2 = 0.000855 (/ms) : unbinding
a1 = 1e-6 (/ms) : opening
b1 = 129.0 (/ms) : closing
a2 = 5.10 (/ms) : opening
b2 = 2.79 (/ms) : closing
}
ASSIGNED {
v (mV) : postsynaptic voltage
i (nA) : current = g*(v - Erev)
g (pS) : conductance
XMTR (mM) : pointer to glycine concentration
f1 (/ms) : binding
f2 (/ms) : binding
Open (1)
}
STATE {
: Channel states (all fractions)
C0 : unbound
C1 : single bound
C2 : double bound
O1 : open
O2 : open
}
INITIAL {
C0 = 1
C1 = 0
C2 = 0
O1 = 0
O2 = 0
XMTR = 0.0
}
BREAKPOINT {
SOLVE kstates METHOD sparse
Open = (O1 + O2)
g = gmax * Open
i = (1e-6) * g * (v - Erev)
}
KINETIC kstates {
f1 = kf1 * (1e3) * XMTR
f2 = kf2 * (1e3) * XMTR
~ C0 <-> C1 (f1,kb1)
~ C1 <-> C2 (f2,kb2)
~ C1 <-> O1 (a1,b1)
~ C2 <-> O2 (a2,b2)
CONSERVE C0+C1+C2+O1+O2 = 1
}

131
cnmodel/mechanisms/Gly6S.mod Executable file
View File

@@ -0,0 +1,131 @@
TITLE Model of glycine receptors
COMMENT
-----------------------------------------------------------------------------
Kinetic model of glycine receptors
===============================
6-state gating model with
2 open states provide dual exponential response.
O1
|
C0 -- C1 -- C2 -- O2
|
D1
-----------------------------------------------------------------------------
This mod file does not include mechanisms for the release and time course
of transmitter; it is to be used in conjunction with a sepearate mechanism
to describe the release of transmitter and that provides the concentration
of transmitter in the synaptic cleft (to be connected to pointer C here).
Default parameters are set for a miniature EPSC.
-----------------------------------------------------------------------------
Paul B. Manis, Ph.D. 28 Dec 2009
-----------------------------------------------------------------------------
ENDCOMMENT
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
NEURON {
POINT_PROCESS Gly6S
POINTER XMTR
RANGE C0, C1, C2, D1, O1, O2, Open
RANGE Erev
RANGE Rb, Ru1, Ru2, Rd, Rr, Ro1, Rc1, Ro2, Rc2
RANGE g, rb, gmax
RANGE CellType : 0 is bushy, 1 is stellate
NONSPECIFIC_CURRENT i
}
UNITS {
(nA) = (nanoamp)
(mV) = (millivolt)
(pS) = (picosiemens)
(umho) = (micromho)
(mM) = (milli/liter)
(uM) = (micro/liter)
}
PARAMETER {
Erev = -70 (mV) : reversal potential
gmax = 500 (pS) : maximal conductance
CellType = 0 (1) : Cell type definition.
: Rates
: Bushy cell IPSCs: (rates can be changed externally)
: Set per Fits 8 March 2010 (see Synapses.py as well)
Rd = 1.177999 (/ms) : desensitization
Rr = 0.000005 (/ms) : resensitization
Rb = 0.009403 (/mM /ms): binding
: diffusion limited
Ru2 = 0.000086 (/ms) : unbinding (2nd site)
Ro1 = 0.187858 (/ms) : opening (fast)
Ro2 = 1.064426 (/ms) : opening (slow)
Ru1 = 0.028696 (/ms) : unbinding (1st site)
Rc1 = 0.103625 (/ms) : closing
Rc2 = 1.730578 (/ms) : closing
}
ASSIGNED {
v (mV) : postsynaptic voltage
i (nA) : current = g*(v - Erev)
g (pS) : conductance
XMTR (mM) : pointer to glutamate concentration
rbind (/ms) : binding
Open (1)
}
STATE {
: Channel states (all fractions)
C0 : unbound
C1 : single gly bound
C2 : double gly bound
D1 : double gly bound, desensitized
O1 : double gly bound, open state 1
O2 : double gly bound, open state 2
}
INITIAL {
XMTR = 0
C0 = 1
C1 = 0
C2 = 0
D1 = 0
O1 = 0
O2 = 0
}
BREAKPOINT {
SOLVE kstates METHOD sparse
:VERBATIM
: if (XMTR > 0.1) {
: fprintf(stderr, "t = %f XMTR = %f\n", t, XMTR);
: }
: ENDVERBATIM
Open = (O1 + O2)
g = gmax * Open
i = (1e-6)*g*(v-Erev)
}
KINETIC kstates {
rbind = Rb * (1e3) * XMTR
~ C0 <-> C1 (rbind,Ru1)
~ C1 <-> C2 (rbind*2.0,Ru2)
~ C2 <-> O1 (Ro1,Rc1)
~ C2 <-> D1 (Rd,Rr)
~ C2 <-> O2 (Ro2,Rc2)
CONSERVE C0+C1+C2+D1+O1+O2 = 1
}

View File

@@ -0,0 +1,64 @@
COMMENT
Iclamp2.mod: Electrode current injection, revised for our own use
I specifically needed more step changes in a single waveform than
were provided by the default code. This routine gives us 5 levels:
holding, 3 steps, and a final (holding?) level.
This version generates a pulse of duration at amplitude I for
onset times in the vector onset[STEP] and durations in dur[STEP]
Each pulse is independent and pulses _could_ overlap.
Since this is an electrode current, positive values of I depolarize the cell
and in the presence of the extracellular mechanism there will be a change
in vext since I is not a transmembrane current but a current injected
directly to the inside of the cell.
(modified and borrowed extensively from other Neuron code,
2001-2002. Paul B. Manis)
ENDCOMMENT
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
DEFINE NSTEP 5 : maximum number of steps supported in this mechanism
NEURON {
POINT_PROCESS IClamp2
RANGE onset, dur, amp, i
ELECTRODE_CURRENT i
}
UNITS {
(nA) = (nanoamp)
}
PARAMETER {
}
ASSIGNED {
i (nA)
index
onset[NSTEP] (ms)
dur[NSTEP] (ms)
amp[NSTEP] (nA)
pu
}
INITIAL {
i = 0 (nA)
index = 0
pu = 0
}
:
: at each onset time, a pulse of duration dur is generated.
:
BREAKPOINT {
i = 0
FROM index = 0 TO NSTEP-1 {
if(t > onset[index]) {
if(t < (dur[index]+onset[index])) {
i = i + amp[index] : allows overlap
} : end of if condition
} :end of second if condition
} : end of "FROM" (for) loop
} : end of breakpoint

142
cnmodel/mechanisms/NMDA.mod Normal file
View File

@@ -0,0 +1,142 @@
TITLE NMDA receptor--one of the two input stimulation of our model
: This mechanism is taken from the Neuron data base "exp2syn.mod"
: The original comment are below between "COMMENT" and "ENDCOMMENT".
:
: Our modifications:
:
: 1.We added a single receptor conductance factor: "g_max=0.000045 (uS)".
: An event of weight 1 generates a peak conductance of 1*g_max.
: The weight is equal to the number of ampa receptors open at peak conductance
:
: 2.The NMDA receptors are simulated using a slow rise time constant
: and a double-expontial decay time constant
: The kinetic rate constants and channel conductance are taken from Franks KM, Bartol TM and Sejnowski TJ
: A Monte Carlo model reveals independent signaling at central glutamatergic synapses
: J Biophys (2002) 83(5):2333-48
: and Spruston N, Jonas P and Sakmann B
: Dendritic glutamate receptor channels in rat hippocampal CA3 and CA1 neurons
: J Physiol (1995) 482(2): 325-352
: correctd for physiological tempterature with Q10 from Hestrin S, Sah P and Nicoll RA
: Mechanisms generating the time course of dual component excitatory synaptic currents
: recorded in hippocampal slices
: Neuron (1990) 5: 247-253
:
: Written by Lei Tian on 04/12/06
COMMENT
Two state kinetic scheme synapse described by rise time tau1,
and decay time constant tau2. The normalized peak condunductance is 1.
Decay time MUST be greater than rise time.
The solution of A->G->bath with rate constants 1/tau1 and 1/tau2 is
A = a*exp(-t/tau1) and
G = a*tau2/(tau2-tau1)*(-exp(-t/tau1) + exp(-t/tau2))
where tau1 < tau2
If tau2-tau1 -> 0 then we have a alphasynapse.
and if tau1 -> 0 then we have just single exponential decay.
The factor is evaluated in the
initial block such that an event of weight 1 generates a
peak conductance of 1.
Because the solution is a sum of exponentials, the
coupled equations can be solved as a pair of independent equations
by the more efficient cnexp method.
ENDCOMMENT
NEURON {
THREADSAFE
POINT_PROCESS nmda
RANGE tau1, tau2, tau3, e, i, g_max, g, A, B, C ,k
NONSPECIFIC_CURRENT i
GLOBAL total,i2,g2
: EXTERNAL Area_canmda
}
UNITS {
(nA) = (nanoamp)
(mA) = (milliamp)
(mV) = (millivolt)
(uS) = (microsiemens)
}
PARAMETER {
tau1 = 3.18 (ms) <1e-9,1e9> :rise time constant
tau2 = 57.14 (ms) <1e-9,1e9> :decay time constant
tau3 = 2000 (ms) <1e-9,1e9> :decay time constant
g_max= 0.000045 (uS) : single channel conductance
e = 0 (mV)
mg = 1 (mM)
Area (cm2)
k = 1e-06 (mA/nA)
Area_canmda = 1
}
ASSIGNED {
v (mV)
i (nA)
factor
total (uS)
g (uS)
g2 (uS) : plot 'g' and 'i' in "nmda.mod".
i2 (mA/cm2) : global variables read in "canmda.mod" as 'inmda' and 'gnmda' to give us
}
STATE {
A (uS)
B (uS)
C (uS)
}
INITIAL {
LOCAL t_peak
total = 0
if (tau1/tau2 > .9999) {
tau1 = .9999*tau2
}
A = 0
B = 0
C = 0
factor=0.8279 :from matlab to make the peak of the conductance curve shape to be 1*weight (then multiply with g_max)
factor = 1/factor
Area = Area_canmda
}
BREAKPOINT {
SOLVE state METHOD cnexp
g = g_max*(B*0.8+C*0.2-A)
i = g*(v - e)*1/(1+(exp(0.08(/mV) * -v)*(mg / 0.69)))
g2=g :global variable can be read in 'canmda.mod'
i2=i*k/Area :to get a current in 'mA/cm2' and send it to 'canmda.mod'
}
DERIVATIVE state {
A' = -A/tau1
B' = -B/tau2
C' = -C/tau3
}
NET_RECEIVE(weight (uS)) {
state_discontinuity(A, weight*factor)
state_discontinuity(B, weight*factor)
state_discontinuity(C, weight*factor)
total = total+weight
}

View File

@@ -0,0 +1,212 @@
TITLE kinetic NMDA receptor model
COMMENT
-----------------------------------------------------------------------------
Kinetic model of NMDA receptors
===============================
10-state gating model:
Kampa et al. (2004) J Physiol
U -- Cl -- O
\ | \ \
\ | \ \
UMg -- ClMg - OMg
| |
D1 |
| \ |
D2 \ |
\ D1Mg
\ |
D2Mg
-----------------------------------------------------------------------------
Based on voltage-clamp recordings of NMDA receptor-mediated currents in
nucleated patches of rat neocortical layer 5 pyramidal neurons (Kampa 2004),
this model was fit with AxoGraph directly to experimental recordings in
order to obtain the optimal values for the parameters.
-----------------------------------------------------------------------------
This mod file does not include mechanisms for the release and time course
of transmitter; it should to be used in conjunction with a separate mechanism
to describe the release of transmitter and timecourse of the concentration
of transmitter in the synaptic cleft (to be connected to pointer XMTR here).
-----------------------------------------------------------------------------
See details of NEURON kinetic models in:
Destexhe, A., Mainen, Z.F. and Sejnowski, T.J. Kinetic models of
synaptic transmission. In: Methods in Neuronal Modeling (2nd edition;
edited by Koch, C. and Segev, I.), MIT press, Cambridge, 1996.
Written by Bjoern Kampa in 2004
Lightly modified, Paul Manis 2010.
Note that data were taken at 23 deg C
Q10 was taken from native receptors:
Korinek M, Sedlacek M, Cais O, Dittert I, Vyklicky L Jr. Temperature
dependence of N-methyl-D-aspartate receptor channels and N-methyl-D-aspartate
receptor excitatory postsynaptic currents. Neuroscience. 2010 Feb
3;165(3):736-48. Epub 2009 Oct 31. PubMed PMID: 19883737.
-----------------------------------------------------------------------------
ENDCOMMENT
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
NEURON {
THREADSAFE
POINT_PROCESS NMDA_Kampa
POINTER XMTR
RANGE U, Cl, D1, D2, Open, MaxOpen, UMg, ClMg, D1Mg, D2Mg, OMg
RANGE g, gmax, vshift, Erev, rb, rmb, rmu, rbMg,rmc1b,rmc1u,rmc2b,rmc2u
GLOBAL mg, Rb, Ru, Rd1, Rr1, Rd2, Rr2, Ro, Rc, Rmb, Rmu
GLOBAL RbMg, RuMg, Rd1Mg, Rr1Mg, Rd2Mg, Rr2Mg, RoMg, RcMg
GLOBAL Rmd1b,Rmd1u,Rmd2b,Rmd2u,rmd1b,rmd1u,rmd2b,rmd2u
GLOBAL Rmc1b,Rmc1u,Rmc2b,Rmc2u
GLOBAL vmin, vmax, valence, memb_fraction
NONSPECIFIC_CURRENT i
}
UNITS {
(nA) = (nanoamp)
(mV) = (millivolt)
(pS) = (picosiemens)
(umho) = (micromho)
(mM) = (milli/liter)
(uM) = (micro/liter)
}
PARAMETER {
Erev = 5 (mV) : reversal potential
gmax = 500 (pS) : maximal conductance
mg = 1 (mM) : external magnesium concentration
vmin = -120 (mV)
vmax = 100 (mV)
valence = -2 : parameters of voltage-dependent Mg block
memb_fraction = 0.8
vshift = 0.0 (mV)
Q10 = 2.0 : temperature sensitivity (see above)
: Maximum open probability with Mode=0 (no rectification).
: This is determined empirically by holding XMTR at a large
: value and v=40mV for 100 timesteps and measuring the
: maximum value of Open.
MaxOpen = 0.01988893957 (1)
: Rates
Rb = 10e-3 (/uM /ms) : binding
Ru = 5.6e-3 (/ms) : unbinding
Ro = 10e-3 (/ms) : opening
Rc = 273e-3 (/ms) : closing
: Rd1 = 2.2e-3 (/ms) : fast desensitisation
Rd1 = 0.1 (/ms) : fast desensitisation
Rr1 = 1.6e-3 (/ms) : fast resensitisation
: Rd2 = 0.43e-3 (/ms) : slow desensitisation
Rd2 = 1e-4 (/ms) : slow desensitisation
Rr2 = 0.5e-3 (/ms) : slow resensitisation
Rmb = 0.05e-3 (/uM /ms) : Mg binding Open
Rmu = 12800e-3 (/ms) : Mg unbinding Open
Rmc1b = 0.00005e-3 (/uM /ms) : Mg binding Closed
Rmc1u = 2.438312e-3 (/ms) : Mg unbinding Closed
Rmc2b = 0.00005e-3 (/uM /ms) : Mg binding Closed2
Rmc2u = 5.041915e-3 (/ms) : Mg unbinding Closed2
Rmd1b = 0.00005e-3 (/uM /ms) : Mg binding Desens1
Rmd1u = 2.98874e-3 (/ms) : Mg unbinding Desens1
Rmd2b = 0.00005e-3 (/uM /ms) : Mg binding Desens2
Rmd2u = 2.953408e-3 (/ms) : Mg unbinding Desens2
RbMg = 10e-3 (/uM /ms) : binding with Mg
RuMg = 17.1e-3 (/ms) : unbinding with Mg
RoMg = 10e-3 (/ms) : opening with Mg
RcMg = 548e-3 (/ms) : closing with Mg
Rd1Mg = 2.1e-3 (/ms) : fast desensitisation with Mg
Rr1Mg = 0.87e-3 (/ms) : fast resensitisation with Mg
Rd2Mg = 0.26e-3 (/ms) : slow desensitisation with Mg
Rr2Mg = 0.42e-3 (/ms) : slow resensitisation with Mg
}
ASSIGNED {
v (mV) : postsynaptic voltage
i (nA) : current = g*(v - Erev)
g (pS) : conductance
XMTR (mM) : pointer to glutamate concentration
rb (/ms) : binding, [glu] dependent
rmb (/ms) : blocking V and [Mg] dependent
rmu (/ms) : unblocking V and [Mg] dependent
rbMg (/ms) : binding, [glu] dependent
rmc1b (/ms) : blocking V and [Mg] dependent
rmc1u (/ms) : unblocking V and [Mg] dependent
rmc2b (/ms) : blocking V and [Mg] dependent
rmc2u (/ms) : unblocking V and [Mg] dependent
rmd1b (/ms) : blocking V and [Mg] dependent
rmd1u (/ms) : unblocking V and [Mg] dependent
rmd2b (/ms) : blocking V and [Mg] dependent
rmd2u (/ms) : unblocking V and [Mg] dependent
qfac : Q10
celsius (degC)
}
STATE {
: Channel states (all fractions)
U : unbound
Cl : closed
D1 : desensitised 1
D2 : desensitised 2
Open : open
UMg : unbound with Mg
ClMg : closed with Mg
D1Mg : desensitised 1 with Mg
D2Mg : desensitised 2 with Mg
OMg : open with Mg
}
INITIAL {
U = 1
qfac = Q10^((celsius-23)/10 (degC))}
BREAKPOINT {
SOLVE kstates METHOD sparse
g = gmax * Open / MaxOpen
i = (1e-6) * g * (v - Erev)
}
KINETIC kstates {
rb = Rb * (1e3) * XMTR
rbMg = RbMg * (1e3) * XMTR
rmb = Rmb * mg * (1e3) * exp((v-40+vshift) * valence * memb_fraction /25 (mV))
rmu = Rmu * exp((-1)*(v-40+vshift) * valence * (1-memb_fraction) /25 (mV))
rmc1b = Rmc1b * mg * (1e3) * exp((v-40+vshift) * valence * memb_fraction /25 (mV))
rmc1u = Rmc1u * exp((-1)*(v-40+vshift) * valence * (1-memb_fraction) /25 (mV))
rmc2b = Rmc2b * mg * (1e3) * exp((v-40+vshift) * valence * memb_fraction /25 (mV))
rmc2u = Rmc2u * exp((-1)*(v-40+vshift) * valence * (1-memb_fraction) /25 (mV))
rmd1b = Rmd1b * mg * (1e3) * exp((v-40+vshift) * valence * memb_fraction /25 (mV))
rmd1u = Rmd1u * exp((-1)*(v-40+vshift) * valence * (1-memb_fraction) /25 (mV))
rmd2b = Rmd2b * mg * (1e3) * exp((v-40+vshift) * valence * memb_fraction /25 (mV))
rmd2u = Rmd2u * exp((-1)*(v-40+vshift) * valence * (1-memb_fraction) /25 (mV))
~ U <-> Cl (rb*qfac,Ru*qfac)
~ Cl <-> Open (Ro*qfac,Rc*qfac)
~ Cl <-> D1 (Rd1*qfac,Rr1*qfac)
~ D1 <-> D2 (Rd2*qfac,Rr2*qfac)
~ Open <-> OMg (rmb*qfac,rmu*qfac)
~ UMg <-> ClMg (rbMg*qfac,RuMg*qfac)
~ ClMg <-> OMg (RoMg*qfac,RcMg*qfac)
~ ClMg <-> D1Mg (Rd1Mg*qfac,Rr1Mg*qfac)
~ D1Mg <-> D2Mg (Rd2Mg*qfac,Rr2Mg*qfac)
~ U <-> UMg (rmc1b*qfac,rmc1u*qfac)
~ Cl <-> ClMg (rmc2b*qfac,rmc2u*qfac)
~ D1 <-> D1Mg (rmd1b*qfac,rmd1u*qfac)
~ D2 <-> D2Mg (rmd2b*qfac,rmd2u*qfac)
CONSERVE U+Cl+D1+D2+Open+UMg+ClMg+D1Mg+D2Mg+OMg = 1
}

125
cnmodel/mechanisms/adex.mod Normal file
View File

@@ -0,0 +1,125 @@
: AdEx GIF model
: This implementation is for the equations in:
: Naud R, Marcille N, Clopath C, Gerstner W. Firing patterns in the adaptive
: exponential integrate-and-fire model. Biol Cybern. 2008 Nov;99(4-5):335-47. doi:
: 10.1007/s00422-008-0264-7. Epub 2008 Nov 15. PubMed PMID: 19011922; PubMed
: Central PMCID: PMC2798047.
: Which in turn is based on:
: Brette R, Gerstner W. Adaptive exponential integrate-and-fire model as an
: effective description of neuronal activity. J Neurophysiol. 2005
: Nov;94(5):3637-42. Epub 2005 Jul 13. PubMed PMID: 16014787.
:
: Paul B. Manis
: 9 Nov 2017, Washington DC
:
NEURON {
: ARTIFICIAL_CELL AdEx
SUFFIX AdEx
RANGE gl, el, delt, vt, vr, w, b, cm, is, a, tauw
RANGE refract, Vm
NONSPECIFIC_CURRENT i
: m plays the role of voltage
}
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
PARAMETER {
cm = 200 (pF)
el = -70 (mV) : leak (RMP)
gl = 10 (nS) : resting input R
delt = 2 (mV) : spike threshold sharpness
vt = -50 (mV)
vr = -58 (mV): reset value after a spike
a = 2 (nS)
b = 0 (pA)
is = 0 (pA)
tauw = 30 (ms)
refract = 1 (ms)
}
ASSIGNED {
i (mA/cm2)
t0(ms) : time of last spike
refractory : flag indicating when in a refractory period
}
STATE {
w
Vm
}
INITIAL {
Vm = el
t0 = t
w = 0
refractory = 0 : 0-integrates input, 1-refractory
}
BREAKPOINT {
SOLVE states METHOD cnexp
if (refractory == 0 && Vm <= 0.) {
states()
}
if (refractory == 1) {
if ((t-t0) >= refract){
refractory = 0
Vm = vr
states()
}
else {
Vm = 0.
}
}
if (refractory == 0 && Vm > 0.) {
refractory = 1
t0 = t
Vm = 0.
w = w + b
}
}
DERIVATIVE states { : update adaptation variable w
LOCAL eterm, et
w' = (a*(Vm - el) - w)/tauw
eterm = (Vm-vt)/delt
if (eterm > 700 ) { : prevent overflow of the exponential term
: (it would be better to estimate the value... but for this
: implementation, not necessary as this will be the term
: that drives the model to spike - after that V is reset
: so the time evolution no longer matters)
et = 700.
}
else {
et = exp(eterm)
}
Vm' = ( -gl*(Vm-el) + gl*delt*et + is - w)/cm
}
COMMENT
NET_RECEIVE (w) {
if (refractory == 0) { : inputs integrated only when excitable
i = -gl*(v-el) + gl*delt*exp((Vm-vt)/delt) - w
m = i/cm
t0 = t
states()
if (m > 0) {
refractory = 1
m = 0
net_send(refractory, refractory)
net_event(t)
}
} else if (flag == 1) { : ready to integrate again
t0 = t
refractory = 0
m = vr
}
}
ENDCOMMENT

View File

@@ -0,0 +1,224 @@
TITLE Model of AMPA receptors
COMMENT
-----------------------------------------------------------------------------
Kinetic model of AMPA receptors
===============================
6-state gating model:
(scheme 1 from Raman and Trussell, Neuron 9:173-186, 1992)
2 open states provide dual exponential response.
O1
|
C -- C1 -- C2 -- O2
|
D
-----------------------------------------------------------------------------
This mod file does not include mechanisms for the release and time course
of transmitter; it is to be used in conjunction with a separate mechanism
to describe the release of transmitter and that provides the concentration
of transmitter in the synaptic cleft (to be connected to pointer C here).
Default parameters are set for a miniature EPSC.
-----------------------------------------------------------------------------
Code based on Destexhe's ampa5.mod
B. Graham, Dept. of Computing Science & Maths, University of Stirling
(Contact: b.graham@cs.stir.ac.uk)
(previously IANC, Division of Informatics, University of Edinburgh)
CNS 2000 Version (19/11/02)
-----------------------------------------------------------------------------
Further modified:
Paul Manis (Otolaryngology/HNS and Cell and Molecular Physiology,
UNC Chapel Hill. contact: pmanis@med.unc.edu)
3/15/2005 Modifications:
1. Added Q10/qfac to allow temperature scaling. All rates in the state model
are changed by the same factor. A Q10 of 1.5 gives a decay tau (single
exponential fit using Praxis algorithm in NEURON; using ampa_kinetics.hoc)
of about 850 usec at 22 deg C and 570 usec at 33 deg C. These are consistent
with the Raman and Trussell 1992 measurements in avians. The 850 usec is a
bit fast for an EPSC, and could probably be tuned by adjustment of some of
the parameters below.
2. Brought several variables out to global (rather than range) so that we
can change them - Q10 and gmax in particular. note that gmax is in pS. Only
local conductance etc. is in specified as RANGE.
3. Max open probability is less than unity, so a gmax of 2500 yields 100 pA
at -60 mV. Therefore scaling by mini size must take this into account.
3/28/2005 Paul B. Manis
Added rectification to AMPA R. Rectification is controlled by
polyamine-style block of receptor. See Donevan and Rogawski, 1995; Washburn
et al., 1997. The equations used here are from Washburn et al. The values
given in the equation at the break point were determined from EPSCs in 5
21-d old DBA mice. Blocker = 45 (uM), Kd = 31.32, zd = 1.029. Note that this
should also reduce the maximal conductance. Mode: if 1, use rectifying; if
0, use non-rectifying. Default is 1
This point process uses XMTR as the transmitter concentration to operate on
the receptor kinetics. XMTR should be provided by another process that
controls release (e.g., COH calyx of Held, etc). An advantage of this is
that whatever release process is present, glutamate accumulates in the
cleft, and can drive desensitization etc.
-----------------------------------------------------------------------------
ENDCOMMENT
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
NEURON {
THREADSAFE
POINT_PROCESS AMPATRUSSELL
POINTER XMTR
RANGE C0, C1, C2, D, O1, O2
RANGE Rb, Ru1, Ru2, Rd, Rr, Ro1, Rc1, Ro2, Rc2, Open, MaxOpen
GLOBAL vmin, vmax
GLOBAL Q10, Mode
GLOBAL zd, Kd0
RANGE g, rb, gmax, PA, Erev
NONSPECIFIC_CURRENT i
}
UNITS {
(nA) = (nanoamp)
(mV) = (millivolt)
(pS) = (picosiemens)
(umho) = (micromho)
(mM) = (milli/liter)
(uM) = (micro/liter)
}
PARAMETER {
Erev = 7 (mV) : reversal potential
gmax = 10 (pS) : maximal conductance
vmin = -120 (mV)
vmax = 100 (mV)
Q10 = 1.5 : temperature sensitivity
Mode = 0 : flag to control rectification calculation
: polyamine block parameters (Wang & Manis unpublished data)
zd = 1.032
PA = 45
Kd0 = 31.e-6
: Rates
Rb = 13 (/mM /ms): binding
: diffusion limited (DO NOT ADJUST)
Ru1 = 0.3 (/ms) : unbinding (1st site)
Ru2 = 200 (/ms) : unbinding (2nd site)
Rd = 30.0 (/ms) : desensitization (WAS30.0)
Rr = 0.02 (/ms) : resensitization
Ro1 = 100 (/ms) : opening (fast)
Rc1 = 2 (/ms) : closing
Ro2 = 2 (/ms) : opening (slow)
Rc2 = 0.25 (/ms) : closing
Open = 0 (1) : total of all open states
: Maximum open probability with Mode=0 (no rectification).
: This is determined empirically by holding XMTR at a large
: value for 100 timesteps and measuring the maximum value
: of Open.
MaxOpen = 0.72418772400 (1)
aflag = 1 : Flag for control of printout of initial values.....
}
ASSIGNED {
v (mV) : postsynaptic voltage
i (nA) : current = g*(v - Erev)
g (pS) : conductance
g0 (pS) : conductance for voltage-dependent block by polyamines
gvdep (pS) : voltage-dependence of conductance
XMTR (mM) : pointer to glutamate concentration
rb (/ms) : binding
qfac : q10 factor for rate scaling
celsius (degC)
}
STATE {
: Channel states (all fractions)
C0 : unbound
C1 : single glu bound
C2 : double glu bound
D : single glu bound, desensitized
O1 : open state 1
O2 : open state 2
}
INITIAL {
usetable = 0
C0=1
C1=0
C2=0
D=0
O1=0
O2=0
Open = 0
qfac = Q10^((celsius-22)/10)
: VERBATIM
: fprintf(stdout, "AMPA.MOD gmax: %f Q10 = %f celsius = %f\n", gmax, Q10, celsius);
: ENDVERBATIM
gvdepcalc(v)
}
BREAKPOINT {
SOLVE kstates METHOD sparse
: VERBATIM
: fprintf(stderr, "kstates @ t=%7.2f Rb: %f XMTR: %f: gmax: %f, o1: %f o2: %f\n", t, Rb, XMTR, gmax, O1, O2);
: ENDVERBATIM
gvdepcalc(v)
Open = O1 + O2
g = gmax * Open / MaxOpen
if ( Mode == 1) {
g0 = 1.0 + 0.6*exp((v-50)/40) : eq. 5 of Washburn et al., 1997, slightly modified
gvdep = g0*(1/(1+PA/(Kd0*exp(-zd*v/25.3))))
i = (1e-6) * g * gvdep * (v - Erev)
}
else {
i = (1e-6)*g*(v-Erev)
}
}
KINETIC kstates {
rb = Rb * XMTR
~ C0 <-> C1 (rb*qfac,Ru1*qfac)
~ C1 <-> C2 (rb*qfac,Ru2*qfac)
~ C2 <-> D (Rd*qfac,Rr*qfac)
~ C2 <-> O1 (Ro1*qfac,Rc1*qfac)
~ C2 <-> O2 (Ro2*qfac,Rc2*qfac)
CONSERVE C0+C1+C2+D+O1+O2 = 1
}
LOCAL g0
PROCEDURE gvdepcalc(v) {
TABLE gvdep DEPEND PA, Kd0, zd FROM -100 TO 100 WITH 200
: VERBATIM
: fprintf(stderr, "gvdepcalc starts ");
: ENDVERBATIM
g0 = 1.0 + 0.6*exp((v-50)/40) : eq. 5 of Washburn et al., 1997, slightly modified
gvdep = g0*(1/(1+PA/(Kd0*exp(-zd*v/25.3))))
: VERBATIM
: fprintf(stderr, "& ends\n");
: ENDVERBATIM
}

129
cnmodel/mechanisms/atm.mod Normal file
View File

@@ -0,0 +1,129 @@
: ATM GIF model
: This implementation the adaptive theshold model (ATM) is for the equations in:
: Fontaine, B., Benichourx, V., Joris, P.X., and Brette, R. Prediciting
: spike timing in hhigy synchronous auditory neurons at different sound
: levels. J. Neurophysiol. 110: 1672-1688, 2013.
: Which in turn is based on:
: Brette R, Gerstner W. Adaptive exponential integrate-and-fire model as an
: effective description of neuronal activity. J Neurophysiol. 2005
: Nov;94(5):3637-42. Epub 2005 Jul 13. PubMed PMID: 16014787.
:
: Paul B. Manis
: 2 December 2017, Chapel Hill, NC
:
: Incomplete version
NEURON {
: ARTIFICIAL_CELL ATM
SUFFIX ATM
RANGE gl, el, delt, vt, vr, alpha, beta, cm, is, a, tauw
RANGE refract, Vm
NONSPECIFIC_CURRENT i
: m plays the role of voltage
}
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
PARAMETER {
cm = 200 (pF)
el = -70 (mV) : leak (RMP)
gl = 10 (nS) : resting input R
delt = 2 (mV) : spike threshold sharpness
vr = -58 (mV): reset value after a spike
a = 2 (1)
b = 2 (1)
beta = 0 (1)
alpha = 0
is = 0 (pA)
taut = 30 (ms) : threshold tau
refract = 1 (ms)
}
ASSIGNED {
i (mA/cm2)
t0 (ms) : time of last spike
refractory : flag indicating when in a refractory period
}
STATE {
w
Vm
vt
}
INITIAL {
Vm = el
t0 = t
a = 0
b = 0
refractory = 0 : 0-integrates input, 1-refractory
}
BREAKPOINT {
SOLVE states METHOD cnexp
if (refractory == 0 && Vm <= 0.) {
states()
}
if (refractory == 1) {
if ((t-t0) >= refract){
refractory = 0
Vm = vr
states()
}
else {
Vm = 0.
}
}
if (refractory == 0 && Vm > 0.) {
refractory = 1
t0 = t
Vm = 0.
w = w + b
}
}
DERIVATIVE states { : update adaptation variable w
LOCAL eterm, et
vt' = (a*i - vt)/taut
COMMENT
eterm = (Vm-vt)/delt
if (eterm > 700 ) { : prevent overflow of the exponential term
: (it would be better to estimate the value... but for this
: implementation, not necessary as this will be the term
: that drives the model to spike - after that V is reset
: so the time evolution no longer matters)
et = 700.
}
else {
et = exp(eterm)
}
ENDCOMMENT
Vm' = gl*( -(Vm-el) + i)/cm
}
COMMENT
NET_RECEIVE (w) {
if (refractory == 0) { : inputs integrated only when excitable
i = -gl*(v-el) + gl*delt*exp((Vm-vt)/delt) - w
m = i/cm
t0 = t
states()
if (m > 0) {
refractory = 1
m = 0
net_send(refractory, refractory)
net_event(t)
}
} else if (flag == 1) { : ready to integrate again
t0 = t
refractory = 0
m = vr
}
}
ENDCOMMENT

View File

@@ -0,0 +1,98 @@
: BK-type Purkinje calcium-activated potassium current
: Created 8/19/02 - nwg
NEURON {
THREADSAFE
SUFFIX bkpkj
USEION k READ ek WRITE ik
USEION ca READ cai
RANGE gbar, ik, gbkpkj
GLOBAL minf, mtau, hinf, htau, zinf, ztau
GLOBAL m_vh, m_k, mtau_y0, mtau_vh1, mtau_vh2, mtau_k1, mtau_k2
GLOBAL z_coef, ztau
GLOBAL h_y0, h_vh, h_k, htau_y0, htau_vh1, htau_vh2, htau_k1, htau_k2
}
UNITS {
(mV) = (millivolt)
(mA) = (milliamp)
(mM) = (milli/liter)
}
PARAMETER {
v (mV)
gbar = 0.007 (mho/cm2)
m1 (ms)
m_vh = -28.9 (mV)
m_k = 6.2 (mV)
mtau_y0 = 0.505 (ms) : 0.000505 (s)
mtau_vh1 = -33.3 (mV)
mtau_k1 = -10 (mV)
mtau_vh2 = 86.4 (mV)
mtau_k2 = 10.1 (mV)
z_coef = 0.001 (mM)
ztau = 1 (ms)
h_y0 = 0.085
h_vh = -32 (mV)
h_k = 5.8 (mV)
htau_y0 = 1.9 (ms) : 0.0019 (s)
htau_vh1 = -54.2 (mV)
htau_k1 = -12.9 (mV)
htau_vh2 = 48.5 (mV)
htau_k2 = 5.2 (mV)
ek (mV)
cai (mM)
}
ASSIGNED {
gbkpkj (mho/cm2)
minf
mtau (ms)
hinf
htau (ms)
zinf
ik (mA/cm2)
}
STATE {
m FROM 0 TO 1
z FROM 0 TO 1
h FROM 0 TO 1
}
BREAKPOINT {
SOLVE states METHOD cnexp
gbkpkj = gbar * m * m * m * z * z * h
ik = gbkpkj * (v - ek)
}
DERIVATIVE states {
rates(v)
m' = (minf - m) / mtau
h' = (hinf - h) / htau
z' = (zinf - z) / ztau
}
PROCEDURE rates(Vm (mV)) {
LOCAL v
v = Vm + 5
minf = 1 / (1 + exp(-(v - (m_vh)) / m_k))
m1 = mtau_y0 + (1. (ms)/(exp((v+ mtau_vh1)/mtau_k1)))
mtau = m1 + (1. (ms)) * exp((v+mtau_vh2)/mtau_k2)
zinf = 1/(1 + z_coef / cai)
hinf = h_y0 + (1-h_y0) / (1+exp((v - h_vh)/h_k))
htau = (htau_y0 + (1 (ms))/(exp((v + htau_vh1)/htau_k1)+exp((v+htau_vh2)/htau_k2)))
}
INITIAL {
rates(v)
m = minf
z = zinf
h = hinf
}

View File

@@ -0,0 +1,157 @@
TITLE Calcium ion accumulation and diffusion with pump
: The internal coordinate system is set up in PROCEDURE coord_cadifus()
: and must be executed before computing the concentrations.
: The scale factors set up in this procedure do not have to be recomputed
: when diam or DFree are changed.
: The amount of calcium in an annulus is ca[i]*diam^2*vol[i] with
: ca[0] being the second order correct concentration at the exact edge
: and ca[NANN-1] being the concentration at the exact center
? interface
NEURON {
THREADSAFE
SUFFIX cadifpmp
USEION ca READ cao, ica WRITE cai, ica
RANGE ica_pmp, last_ica_pmp, k1, k2, k3, k4, DFree
GLOBAL vol, pump0
}
DEFINE NANN 10
UNITS {
(mV) = (millivolt)
(molar) = (1/liter)
(mM) = (millimolar)
(um) = (micron)
(mA) = (milliamp)
(mol) = (1)
FARADAY = (faraday) (coulomb)
PI = (pi) (1)
R = (k-mole) (joule/degC)
}
PARAMETER {
DFree = 0.6 (um2/ms) <0,1e9>
beta = 50 <0, 1e9>
k1 = 5e8 (/mM-s) <0, 1e10>:optional mm formulation
k2 = .25e6 (/s) <0, 1e10>
k3 = .5e3 (/s) <0, 1e10>
k4 = 5e0 (/mM-s) <0, 1e10>
pump0 = 3e-14 (mol/cm2) <0, 1e9> : set to 0 in hoc if this pump not wanted
}
ASSIGNED {
celsius (degC)
diam (um)
v (millivolt)
cao (mM)
cai (mM)
ica (mA/cm2)
vol[NANN] (1) : gets extra cm2 when multiplied by diam^2
ica_pmp (mA/cm2)
area1 (um2)
c1 (1+8 um5/ms)
c2 (1-10 um2/ms)
c3 (1-10 um2/ms)
c4 (1+8 um5/ms)
ica_pmp_last (mA/cm2)
}
CONSTANT {
volo = 1 (liter)
}
STATE {
ca[NANN] (mM) <1e-6> : ca[0] is equivalent to cai
pump (mol/cm2) <1e-15>
pumpca (mol/cm2) <1e-15>
}
INITIAL {LOCAL total
parms()
FROM i=0 TO NANN-1 {
ca[i] = cai
}
pumpca = cai*pump*c1/c2
total = pumpca + pump
if (total > 1e-9) {
pump = pump*(pump/total)
pumpca = pumpca*(pump/total)
}
ica_pmp = 0
ica_pmp_last = 0
}
BREAKPOINT {
SOLVE state METHOD sparse
ica_pmp_last = ica_pmp
ica = ica_pmp
: printf("Breakpoint t=%g v=%g cai=%g ica=%g\n", t, v, cai, ica)
}
LOCAL frat[NANN] : gets extra cm when multiplied by diam
PROCEDURE coord() {
LOCAL r, dr2
: cylindrical coordinate system with constant annuli thickness to
: center of cell. Note however that the first annulus is half thickness
: so that the concentration is second order correct spatially at
: the membrane or exact edge of the cell.
: note ca[0] is at edge of cell
: ca[NANN-1] is at center of cell
r = 1/2 :starts at edge (half diam)
dr2 = r/(NANN-1)/2 :half thickness of annulus
vol[0] = 0
frat[0] = 2*r
FROM i=0 TO NANN-2 {
vol[i] = vol[i] + PI*(r-dr2/2)*2*dr2 :interior half
r = r - dr2
frat[i+1] = 2*PI*r/(2*dr2) :exterior edge of annulus
: divided by distance between centers
r = r - dr2
vol[i+1] = PI*(r+dr2/2)*2*dr2 :outer half of annulus
}
}
KINETIC state {
: printf("Solve begin t=%g v=%g cai=%g ica_pmp=%g\n", t, v, cai, ica_pmp)
COMPARTMENT i, (1+beta)*diam*diam*vol[i]*1(um) {ca}
COMPARTMENT (1e10)*area1 {pump pumpca}
COMPARTMENT volo*(1e15) {cao}
? kinetics
~ pumpca <-> pump + cao (c3, c4)
ica_pmp = (1e-4)*2*FARADAY*(f_flux - b_flux)/area1
: all currents except pump
~ ca[0] << (-(ica-ica_pmp_last)*PI*diam*1(um)*(1e4)*frat[0]/(2*FARADAY))
:diffusion
FROM i=0 TO NANN-2 {
~ ca[i] <-> ca[i+1] (DFree*frat[i+1]*1(um), DFree*frat[i+1]*1(um))
}
:pump
~ ca[0] + pump <-> pumpca (c1, c2)
cai = ca[0] : this assignment statement is used specially by cvode
: printf("Solve end cai=%g ica=%g ica_pmp=%g ica_pmp_last=%g\n",
: cai, ica, ica_pmp,ica_pmp_last)
}
PROCEDURE parms() {
coord()
area1 = 2*PI*(diam/2) * 1(um)
c1 = (1e7)*area1 * k1
c2 = (1e7)*area1 * k2
c3 = (1e7)*area1 * k3
c4 = (1e7)*area1 * k4
}
FUNCTION ss() (mM) {
SOLVE state STEADYSTATE sparse
ss = cai
}
COMMENT
At this time, conductances (and channel states and currents are
calculated at the midpoint of a dt interval. Membrane potential and
concentrations are calculated at the edges of a dt interval. With
secondorder=2 everything turns out to be second order correct.
ENDCOMMENT

View File

@@ -0,0 +1,50 @@
: Ca diffusion in a Purkinje cell
: Created 8/15/02 - nwg
NEURON {
SUFFIX cadiff
USEION ca READ ica, cai WRITE cai
RANGE ca
GLOBAL depth, beta
}
UNITS {
(mV) = (millivolt)
(mA) = (milliamp)
(mM) = (milli/liter)
(um) = (micron)
}
CONSTANT {
F = 9.6485e4 (coul)
}
PARAMETER {
cai (mM)
dt (ms)
depth = 0.1 (um)
beta = 1 (/ms)
}
ASSIGNED {
ica (mA/cm2)
}
STATE {
ca (mM)
}
INITIAL {
ca = 0.0001
}
BREAKPOINT {
ca = ca + (10000.0) * dt * ( ( -1/(2*F)*ica / (depth)) - (0.0001) * beta * ca )
if ( ca < 1e-4 ) {: minimum 100 nM Ca
ca = 1e-4
}
cai = ca
}

View File

@@ -0,0 +1,100 @@
TITLE decay of submembrane calcium concentration
:
: Internal calcium concentration due to calcium currents and pump.
: Differential equations.
:
: This file contains two mechanisms:
:
: 1. Simple model of ATPase pump with 3 kinetic constants (Destexhe 1992)
:
: Cai + P <-> CaP -> Cao + P (k1,k2,k3)
:
: A Michaelis-Menten approximation is assumed, which reduces the complexity
: of the system to 2 parameters:
: kt = <tot enzyme concentration> * k3 -> TIME CONSTANT OF THE PUMP
: kd = k2/k1 (dissociation constant) -> EQUILIBRIUM CALCIUM VALUE
: The values of these parameters are chosen assuming a high affinity of
: the pump to calcium and a low transport capacity (cfr. Blaustein,
: TINS, 11: 438, 1988, and references therein).
:
: For further information about this this mechanism, see Destexhe, A.
: Babloyantz, A. and Sejnowski, TJ. Ionic mechanisms for intrinsic slow
: oscillations in thalamic relay neurons. Biophys. J. 65: 1538-1552, 1993.
:
:
: 2. Simple first-order decay or buffering:
:
: Cai + B <-> ...
:
: which can be written as:
:
: dCai/dt = (cainf - Cai) / taur
:
: where cainf is the equilibrium intracellular calcium value (usually
: in the range of 200-300 nM) and taur is the time constant of calcium
: removal. The dynamics of submembranal calcium is usually thought to
: be relatively fast, in the 1-10 millisecond range (see Blaustein,
: TINS, 11: 438, 1988).
:
: All variables are range variables
:
: Written by Alain Destexhe, Salk Institute, Nov 12, 1992
:
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
NEURON {
SUFFIX cadyn
USEION ca READ ica, cai WRITE cai
RANGE depth,kt,kd,cainf,taur
}
UNITS {
(molar) = (1/liter) : moles do not appear in units
(mM) = (millimolar)
(um) = (micron)
(mA) = (milliamp)
(msM) = (ms mM)
}
CONSTANT {
FARADAY = 96489 (coul) : moles do not appear in units
}
PARAMETER {
depth = .1 (um) : depth of shell
taur = 1e10 (ms) : remove first-order decay
cainf = 1.4e-1 (mM)
kt = 1e-4 (mM/ms)
kd = 1e-4 (mM)
}
STATE {
cai (mM)
}
INITIAL {
cai = kd
}
ASSIGNED {
ica (mA/cm2)
drive_channel (mM/ms)
drive_pump (mM/ms)
}
BREAKPOINT {
SOLVE state METHOD cnexp
}
DERIVATIVE state {
drive_channel = - (10000) * ica / (2 * FARADAY * depth)
if (drive_channel <= 0.) { drive_channel = 0. } : cannot pump inward
drive_pump = -kt * cai / (cai + kd ) : Michaelis-Menten
cai' = drive_channel + drive_pump + (cainf-cai)/taur
}

View File

@@ -0,0 +1,86 @@
: HH P-type Calcium current
: Created 8/13/02 - nwg
NEURON {
THREADSAFE
SUFFIX cap
USEION ca READ cai, cao WRITE ica
RANGE pcabar, ica
RANGE minf, mtau
RANGE monovalConc, monovalPerm
}
UNITS {
(mV) = (millivolt)
(mA) = (milliamp)
(mM) = (milli/liter)
F = 9.6485e4 (coul)
R = 8.3145 (joule/degC)
}
PARAMETER {
v (mV)
celsius (degC)
pcabar = 0.00005 (cm/s)
monovalConc = 140 (mM)
monovalPerm = 0
cai (milli/liter)
cao (milli/liter)
}
ASSIGNED {
ica (mA/cm2)
minf
mtau (ms)
T (degC)
E (volts)
}
STATE {
m
}
INITIAL {
rates(v)
m = minf
}
BREAKPOINT {
SOLVE states METHOD cnexp
ica = (1e3) * pcabar * m * ghk(v, cai, cao, 2)
}
DERIVATIVE states {
rates(v)
m' = (minf - m)/mtau
}
FUNCTION ghk( v(mV), ci(mM), co(mM), z) (coul/cm3) { LOCAL Ci
T = celsius + 273.19 : Kelvin
E = (1e-3) * v
Ci = ci + (monovalPerm) * (monovalConc) : Monovalent permeability
if (fabs(1-exp(-z*(F*E)/(R*T))) < 1e-6) { : denominator is small -> Taylor series
ghk = (1e-6) * z * F * (Ci-co*exp(-z*(F*E)/(R*T)))*(1-(z*(F*E)/(R*T)))
} else {
ghk = (1e-6) * z^2*(E*F^2)/(R*T)*(Ci-co*exp(-z*(F*E)/(R*T)))/(1-exp(-z*(F*E)/(R*T)))
}
}
PROCEDURE rates (v (mV)) {
UNITSOFF
minf = 1/(1+exp(-(v - (-19)) / 5.5))
mtau = (mtau_func(v)) * 1e3
UNITSON
}
FUNCTION mtau_func( v (mV) ) (ms) {
UNITSOFF
if (v > -50) {
mtau_func = .000191 + .00376*exp(-((v-(-41.9))/27.8)^2)
} else {
mtau_func = .00026367 + .1278 * exp(.10327*v)
}
UNITSON
}

View File

@@ -0,0 +1,71 @@
NEURON {
SUFFIX capmp
USEION ca READ cao, ica, cai WRITE cai, ica
RANGE tau, width, cabulk, ica, pump0
}
UNITS {
(um) = (micron)
(molar) = (1/liter)
(mM) = (millimolar)
(uM) = (micromolar)
(mA) = (milliamp)
(mol) = (1)
FARADAY = (faraday) (coulomb)
}
PARAMETER {
width = 0.1 (um)
tau = 1 (ms)
k1 = 5e8 (/mM-s)
k2 = 0.25e6 (/s)
k3 = 0.5e3 (/s)
k4 = 5e0 (/mM-s)
cabulk = 0.1 (uM)
pump0 = 3e-14 (mol/cm2)
}
ASSIGNED {
cao (mM) : 2
cai (mM) : 100e-6
ica (mA/cm2)
ica_pmp (mA/cm2)
ica_pmp_last (mA/cm2)
}
STATE {
cam (uM) <1e-6>
pump (mol/cm2) <1e-16>
capump (mol/cm2) <1e-16>
}
INITIAL {
ica = 0
ica_pmp = 0
ica_pmp_last = 0
SOLVE pmp STEADYSTATE sparse
}
BREAKPOINT {
SOLVE pmp METHOD sparse
ica_pmp_last = ica_pmp
ica = ica_pmp
}
KINETIC pmp {
~ cabulk <-> cam (width/tau, width/tau)
~ cam + pump <-> capump ((1e7)*k1, (1e10)*k2)
~ capump <-> cao + pump ((1e10)*k3, (1e10)*k4)
ica_pmp = (1e-7)*2*FARADAY*(f_flux - b_flux)
: ica_pmp_last vs ica_pmp needed because of STEADYSTATE calculation
~ cam << (-(ica - ica_pmp_last)/(2*FARADAY)*(1e7))
CONSERVE pump + capump = (1e13)*pump0
COMPARTMENT width {cam} : volume has dimensions of um
COMPARTMENT (1e13) {pump capump} : area is dimensionless
COMPARTMENT 1(um) {cabulk}
COMPARTMENT (1e3)*1(um) {cao}
cai = (0.001)*cam
}

View File

@@ -0,0 +1,32 @@
NEURON {
SUFFIX capump
USEION ca READ cai WRITE ica
RANGE vmax, kmp, ica
}
UNITS {
(uM) = (micro/liter)
(mM) = (milli/liter)
(mA) = (milliamp)
}
PARAMETER {
vmax = .0667 (mA/cm2) <0, 1e6>: at 6.3 deg, Q10 = 3
kmp = .2 (uM) <0, 1e6>
}
ASSIGNED {
celsius (degC)
ica (mA/cm2)
cai (mM)
}
LOCAL Q, s_celsius
BREAKPOINT {
if (s_celsius*1(degC) != celsius) {
s_celsius = celsius
Q = 3^((celsius - 6.3)/10 (degC))
}
ica = vmax*Q*cai/(cai + (.001)*kmp) / 5.18
}

View File

@@ -0,0 +1,88 @@
COMMENT
cleftXmtr
This is simple state model that generates "cleft" transmitter, through
the following scheme:
A netreceive block receives the driving event. This forces XV (the vesicle
state) to be set to XMax to mimic the release of a vesicle.
Then:
XV --> XC --> XU
where XV is the vesicle transmitter, XC is the cleft transmitter and
XU is transmitter that has been taken up. The forward rates are finite, and the
reverse rates are 0 (XU is an absorbing state)
The forward rate kv1 mimics simple first-order diffusion across the cleft
The forward rate ku1 mimics simple first-order uptake from the cleft
The concentration XC is available to the program as Xmtr.
XMax is the max cleft concentration of transmitter.
Because vesicle release events at a single presynaptic terminal can be nearly
simultaneous, it is important that this mechanism does not have a refractory
period. We also assume that the uptake mechanism is not saturable.
Paul B. Manis, Ph.D.
UNC Chapel Hill
3 Jan 2010
ENDCOMMENT
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
DEFINE NSTEP 5
NEURON {
POINT_PROCESS cleftXmtr
POINTER pre
RANGE KV, KU, XMax
RANGE CXmtr, preThresh
}
UNITS {
(nA) = (nanoamp)
}
PARAMETER { : Parameters are chosen from best fit to stellate cell data in VCN
KV = 531 (/ms) <0,1e9> : release rate from vesicle
KU = 4.17 (/ms) <0,1e3> : uptake rate
XMax = 0.731 (mM)
preThresh = 0
}
ASSIGNED {
pre
CXmtr (mM)
preLast (1)
tLast
}
STATE {
XV : Vesicle transmitter (just released)
XC : Cleft transmitter (e.g., at receptor)
XU : Uptake state (dead state... )
}
INITIAL {
XV = 0
XC = 0 (mM)
XU = 0
CXmtr = 0.0
preLast = 0.0
tLast = 0.0
}
BREAKPOINT {
SOLVE kstates METHOD sparse
CXmtr = XC*XMax
}
KINETIC kstates {
~ XV <-> XC (KV, 0.0)
~ XC <-> XU (KU, 0.0)
: note that this mechanism has no CONSERVATION : XU can accumulate as much
: as needed.
}
NET_RECEIVE(conc (mM)) { : detect and cause a release event
XV = XV + 1
}

65
cnmodel/mechanisms/gly.mod Executable file
View File

@@ -0,0 +1,65 @@
TITLE Gly synapse
COMMENT
MODIFIED to be a faster GLY synapse, taken from GABA synapse
Paul B. Manis - 7 Feb 2000
simple alpha-synapse that generates a single PSP
*********************************************
reference: McCormick, Wang & Huguenard (1993)
Cerebral Cortex 3(5), 387-398
found in: cat reticular nucleus of thalamus
*********************************************
Assembled for MyFirstNEURON by Arthur Houweling
ENDCOMMENT
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
NEURON {
POINT_PROCESS GlySynapse
USEION cl READ ecl VALENCE 1
: negative valence not accepted by nrnivmodl
RANGE onset, gmaxIPSP, e, g, i, w
NONSPECIFIC_CURRENT i
}
UNITS {
(nA) = (nanoamp)
(mV) = (millivolt)
(nS) = (nanomho)
}
PARAMETER {
onset= 25 (ms)
gmaxIPSP= 0 (nS)
w= 1 : weight factor for gmaxIPSP
ecl (mV)
v (mV)
celsius (degC)
}
ASSIGNED {
i (nA)
g (nS)
tadj
}
UNITSOFF
INITIAL {
tadj = 3^((celsius-23.5)/10)
}
BREAKPOINT { LOCAL tt
tt= (t-onset)*tadj
if ((t>onset)&&(tt<740)) {
: the exp() function does not accept arguments smaller than -745
g = w*gmaxIPSP * exp(-tt/15) * (1-exp(-tt/0.5))/0.84
}
else {g = 0}
: -ecl because negative valences can not be specified
i = g * (v-(-ecl))
}
UNITSON

196
cnmodel/mechanisms/gly2.mod Executable file
View File

@@ -0,0 +1,196 @@
COMMENT
-----------------------------------------------------------------------------
Simple synaptic mechanism derived for first order kinetics of
binding of transmitter to postsynaptic receptors.
A. Destexhe & Z. Mainen, The Salk Institute, March 12, 1993.
Last modif. Sept 8, 1993.
Reference:
Destexhe, A., Mainen, Z. and Sejnowski, T.J. An efficient method for
computing synaptic conductances based on a kinetic model of receptor binding.
Neural Computation, 6: 14-18, 1994.
-----------------------------------------------------------------------------
During the arrival of the presynaptic spike (detected by threshold
crossing), it is assumed that there is a brief pulse (duration=Cdur)
of neurotransmitter C in the synaptic cleft (the maximal concentration
of C is Cmax). Then, C is assumed to bind to a receptor Rc according
to the following first-order kinetic scheme:
Rc + C ---(Alpha)--> Ro (1)
<--(Beta)---
where Rc and Ro are respectively the closed and open form of the
postsynaptic receptor, Alpha and Beta are the forward and backward
rate constants. If R represents the fraction of open gates Ro,
then one can write the following kinetic equation:
dR/dt = Alpha * C * (1-R) - Beta * R (2)
and the postsynaptic current is given by:
Isyn = gmax * R * (V-Erev) (3)
where V is the postsynaptic potential, gmax is the maximal conductance
of the synapse and Erev is the reversal potential.
If C is assumed to occur as a pulse in the synaptic cleft, such as
C _____ . . . . . . Cmax
| |
_____| |______ . . . 0
t0 t1
then one can solve the kinetic equation exactly, instead of solving
one differential equation for the state variable and for each synapse,
which would be greatly time consuming...
Equation (2) can be solved as follows:
1. during the pulse (from t=t0 to t=t1), C = Cmax, which gives:
R(t-t0) = Rinf + [ R(t0) - Rinf ] * exp (- (t-t0) / Rtau ) (4)
where
Rinf = Alpha * Cmax / (Alpha * Cmax + Beta)
and
Rtau = 1 / (Alpha * Cmax + Beta)
2. after the pulse (t>t1), C = 0, and one can write:
R(t-t1) = R(t1) * exp (- Beta * (t-t1) ) (5)
There is a pointer called "pre" which must be set to the variable which
is supposed to trigger synaptic release. This variable is usually the
presynaptic voltage but it can be the presynaptic calcium concentration,
or other. Prethresh is the value of the threshold at which the release is
initiated.
Once pre has crossed the threshold value given by Prethresh, a pulse
of C is generated for a duration of Cdur, and the synaptic conductances
are calculated accordingly to eqs (4-5). Another event is not allowed to
occur for Deadtime milliseconds following after pre rises above threshold.
The user specifies the presynaptic location in hoc via the statement
connect pre_GABA[i] , v.section(x)
where x is the arc length (0 - 1) along the presynaptic section (the currently
specified section), and i is the synapse number (Which is located at the
postsynaptic location in the usual way via
postsynaptic_section {loc_GABA(i, x)}
Notice that loc_GABA() must be executed first since that function also
allocates space for the synapse.
-----------------------------------------------------------------------------
GLY SYNAPSE (GLY receptors)
currently parameters are same as GABA-A until I get the Harty data in here
P. Manis 2/10/2000
-----------------------------------------------------------------------------
ENDCOMMENT
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
NEURON {
POINT_PROCESS GLY2
POINTER pre
RANGE C, R, R0, R1, g, gmax, Erev, lastrelease, Prethresh
NONSPECIFIC_CURRENT i
GLOBAL Cmax, Cdur, Alpha, Beta, Deadtime, Rinf, Rtau
}
UNITS {
(nA) = (nanoamp)
(mV) = (millivolt)
(umho) = (micromho)
(mM) = (milli/liter)
}
PARAMETER {
Cmax = 1 (mM) : max transmitter concentration
Cdur = 1 (ms) : transmitter duration (rising phase)
Alpha = 0.53 (/ms mM) : forward (binding) rate
Beta = 0.18 (/ms) : backward (unbinding) rate
Erev = -80 (mV) : reversal potential
Prethresh = 0 : voltage level nec for release
Deadtime = 1 (ms) : mimimum time between release events
gmax (umho) : maximum conductance
}
ASSIGNED {
v (mV) : postsynaptic voltage
i (nA) : current = g*(v - Erev)
g (umho) : conductance
C (mM) : transmitter concentration
R : fraction of open channels
R0 : open channels at start of release
R1 : open channels at end of release
Rinf : steady state channels open
Rtau (ms) : time constant of channel binding
pre : pointer to presynaptic variable
lastrelease (ms) : time of last spike
}
INITIAL {
R = 0
C = 0
R0 = 0
R1 = 0
Rinf = Cmax*Alpha / (Cmax*Alpha + Beta)
Rtau = 1 / ((Alpha * Cmax) + Beta)
lastrelease = -999
}
BREAKPOINT {
SOLVE release
g = gmax * R
i = g*(v - Erev)
}
PROCEDURE release() { LOCAL q
:will crash if user hasn't set pre with the connect statement
q = ((t - lastrelease) - Cdur) : time since last release ended
: ready for another release?
if (q > Deadtime) {
if (pre > Prethresh) { : spike occured?
C = Cmax : start new release
R0 = R
lastrelease = t
}
} else if (q < 0) { : still releasing?
: do nothing
} else if (C == Cmax) { : in dead time after release
R1 = R
C = 0.
}
if (C > 0) { : transmitter being released?
R = Rinf + (R0 - Rinf) * exptable (- (t - lastrelease) / Rtau)
} else { : no release occuring
R = R1 * exptable (- Beta * (t - (lastrelease + Cdur)))
}
VERBATIM
return 0;
ENDVERBATIM
}
FUNCTION exptable(x) {
TABLE FROM -10 TO 10 WITH 2000
if ((x > -10) && (x < 10)) {
exptable = exp(x)
} else {
exptable = 0.
}
}

101
cnmodel/mechanisms/hcno.mod Normal file
View File

@@ -0,0 +1,101 @@
TITLE h current for Octopus cells of Cochlear Nucleus
: From Bal and Oertel (2000)
: M.Migliore Oct. 2001
: Modified, P. Manis July 2014.
NEURON {
THREADSAFE
SUFFIX hcno
NONSPECIFIC_CURRENT i
RANGE gbar, eh, gh
GLOBAL hinf, tau1, tau2
}
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
(pS) = (picosiemens)
(um) = (micron)
R = (k-mole)(joule/degC)
F = (faraday)(kilocoulombs)
}
PARAMETER {
gbar = 0.0005 (mho/cm2)
vhalf1 = -50 (mV) : v 1/2 for forward
vhalf2 = -84 (mV) : v 1/2 for backward
gm1 = 0.3 :(mV) : slope for forward
gm2 = 0.6 : (mV) : slope for backward
zeta1 = 3 : (/ms)
zeta2 = 3 : (/ms)
a01 = 0.008 (/ms)
a02 = 0.0029 (/ms)
frac = 0.0
c0 = 273.16 (degC)
thinf = -66 (mV) : inact inf slope
qinf = 7 (mV) : inact inf slope
q10tau = 4.5 : from Magee (1998)
v (mV)
q10g = 2.0 : Rothman...
}
ASSIGNED {
celsius (degC)
i (mA/cm2)
gh (mho/cm2)
eh (mV) : must be explicitly def. in hoc
hinf
tau1 (ms)
tau2 (ms)
qg () : computed q10 for gnabar based on q10g
q10 ()
ssih
}
STATE { h1 h2 }
BREAKPOINT {
SOLVE states METHOD derivimplicit
gh = qg*gbar*(h1*frac + h2*(1.0-frac))
i = gh * (v - eh)
}
INITIAL {
qg = q10g^((celsius-33.0)/10.0 (degC)) :note original measurements made at 33 C
q10 = q10tau^((celsius - 22.0)/10.0 (degC)) : if you don't like room temp, it can be changed!
rates(v)
h1=hinf
h2=hinf
ssih = 0.
}
DERIVATIVE states {
rates(v)
h1' = (hinf - h1)/tau1
h2' = (hinf - h2)/tau2
}
PROCEDURE rates(v (mV)) {
tau1 = bet1(v)/(q10*a01*(1.0+alp1(v)))
tau2 = bet2(v)/(q10*a02*(1.0+alp2(v)))
hinf = 1.0/(1.0+exp((v-thinf)/qinf))
}
FUNCTION alp1(v(mV)) {
alp1 = exp(1e-3*zeta1*(v-vhalf1)*F/(R*(c0+celsius)))
}
FUNCTION bet1(v(mV)) {
bet1 = exp(1.e-3*zeta1*gm1*(v-vhalf1)*F/(R*(c0+celsius)))
}
FUNCTION alp2(v(mV)) {
alp2 = exp(1.e-3*zeta2*(v-vhalf2)*F/(R*(c0+celsius)))
}
FUNCTION bet2(v(mV)) {
bet2 = exp(1.e-3*zeta2*gm2*(v-vhalf2)*F/(R*(c0+celsius)))
}

View File

@@ -0,0 +1,103 @@
TITLE h current for Octopus cells of Cochlear Nucleus
: From Bal and Oertel (2000)
: Modified, P. Manis July 2014, 2017
: Parameters from McGinley et al. paper
NEURON {
THREADSAFE
SUFFIX hcnobo
NONSPECIFIC_CURRENT i
RANGE gbar, eh, gh, q10tau
GLOBAL hinf, tau1, tau2
}
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
(pS) = (picosiemens)
(um) = (micron)
R = (k-mole)(joule/degC)
F = (faraday)(kilocoulombs)
}
PARAMETER {
gbar = 0.0005 (mho/cm2)
vhalf1 = -70 (mV) : -50 (mV) : v 1/2 for forward
vhalf2 = -84 (mV) : v 1/2 for backward
gm1 = 0.3 :(mV) : slope for forward
gm2 = 0.6 : (mV) : slope for backward
zeta1 = 3 : (/ms)
: zeta2 = 3 : (/ms)
a01 = 4.8e-3 (/ms) : was 0.008
a02 = 2.9e-3 (/ms) : was 0.0029 (/ms)
frac = 0.8
c0 = 273.16 (degC)
thinf = -72.4 (mV) : inact inf slope
qinf = 5.3 (mV) : inact inf slope
q10tau = 4.5 : from Magee (1998)
v (mV)
}
ASSIGNED {
celsius (degC)
i (mA/cm2)
gh (mho/cm2)
eh (mV) : must be explicitly def. in hoc
hinf
tau1 (ms)
tau2 (ms)
q10 ()
ssih
ct
}
STATE { h1 h2 }
BREAKPOINT {
SOLVE states METHOD cnexp
: SOLVE states METHOD derivimplicit
gh = gbar*(h1*frac + h2*(1.0-frac))
i = gh * (v - eh)
}
INITIAL {
ct = 1e-3*zeta1*F/(R*(c0+celsius))
q10 = q10tau^((celsius - 33.0)/10.0 (degC)) : Measurements at 33
rates(v)
h1=hinf
h2=hinf
ssih = 0.
}
DERIVATIVE states {
rates(v)
h1' = (hinf - h1)/tau1
h2' = (hinf - h2)/tau2
}
PROCEDURE rates(v (mV)) {
tau1 = bet1(v)/(q10*a01*(1.0+alp1(v)))
tau2 = bet2(v)/(q10*a02*(1.0+alp2(v)))
hinf = 1.0/(1.0+exp((v-thinf)/qinf))
}
FUNCTION alp1(v(mV)) {
alp1 = exp((v-vhalf1)*ct)
}
FUNCTION bet1(v(mV)) {
bet1 = exp(gm1*(v-vhalf1)*ct)
}
FUNCTION alp2(v(mV)) {
alp2 = exp((v-vhalf2)*ct)
}
FUNCTION bet2(v(mV)) {
bet2 = exp(gm2*(v-vhalf2)*ct)
}

48
cnmodel/mechanisms/iStim.mod Executable file
View File

@@ -0,0 +1,48 @@
COMMENT
iStim
This is a point current injection (like an electrode).
Positive values of the amplitude depolarize the cell
and in the presence of the extracellular mechanism there will be a change
in vext since i is not a transmembrane current but a current injected
directly to the inside of the cell.
This is meant to be used with Vector Play...
ENDCOMMENT
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
DEFINE NSTEP 5
NEURON {
THREADSAFE
POINT_PROCESS iStim
RANGE dur, delay, iMax
ELECTRODE_CURRENT i
}
UNITS {
(nA) = (nanoamp)
}
PARAMETER {
dur (ms) <0,1e9>
delay (ms) <0,1e9>
iMax (nA)
}
ASSIGNED {
i (nA)
}
INITIAL {
i = 0
}
BREAKPOINT {
COMMENT
if(t < delay || t > (delay+dur)) {
i = 0
}
if(t >= delay && t <= (delay+dur)) {
i = iMax
}
ENDCOMMENT
}

View File

@@ -0,0 +1,56 @@
: Ih current
: Created 8/6/02 - nwg
NEURON {
THREADSAFE
SUFFIX hpkj
NONSPECIFIC_CURRENT i
RANGE gbar, gh, eh
GLOBAL ninf, ntau
}
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
(S) = (siemens)
}
PARAMETER {
v (mV)
gbar = .0001 (S/cm2)
eh = -30 (mV)
}
ASSIGNED {
gh (mho/cm2)
i (mA/cm2)
ninf
ntau (ms)
}
STATE {
n
}
INITIAL {
rates(v)
n = ninf
}
BREAKPOINT {
SOLVE states METHOD cnexp
gh = gbar * n
i = gh*(v - eh)
}
DERIVATIVE states {
rates(v)
n' = (ninf - n)/ntau
}
PROCEDURE rates(v (mV)) {
ninf = 1/(1+exp((v+90.1(mV))/9.9(mV)))
ntau = (1000) * (0.19 (s) + 0.72 (s)*exp(-((v-(-81.5(mV)))/11.9(mV))^2))
}

View File

@@ -0,0 +1,134 @@
TITLE ihpyr.mod DCN pyramidal cell model H-current
COMMENT
This model is part a Dorsal Cochlear Nucleus Pyramidal point cell
based on kinetic data from Kanold and Manis (1999) and Kanold's dissertation (1999)
-- 15 Jan 1999 P. Manis
Added export of start states for some variables to do perturbation tests
These start values replace the "inf" values used in the initialization procedure
Note that if the start variable is set to a value less than 0,
then the default initialization will be done. Typically I use a value of -1 for this flagging
Note also that it is possible to set the initial values > 1 but this is meaningless in terms of
the present equations.
-- 5 Feb 1999 P. Manis
Added Patrick's version of ih as ihpyr
Model is from Destexhe and Babloyantz 1993; Destexhe et al. 1993
2/10/02. P. Manis.
7/23/2014 P. Manis - separated from pyr.mod.
ENDCOMMENT
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
}
NEURON {
THREADSAFE
SUFFIX ihpyr
USEION na READ ena WRITE ina
USEION k READ ek WRITE ik
NONSPECIFIC_CURRENT i
: USEION h READ eh WRITE ih VALENCE 1
RANGE eh
:
RANGE gh, kh_m_inf, kh_n_inf, aih, gbar, ghvshift
RANGE kh_m_tau, kh_n_tau
}
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
PARAMETER {
v (mV)
celsius (degC)
dt (ms)
ek (mV) : = -81.5 (mV)
ena (mV) : = 50.0 (mV)
gbar = 0.00025 (mho/cm2) <0,1e9>
ghvshift = 0 (mV)
eh (mV) : = -43.0(mV)
}
STATE {
khm khn
}
ASSIGNED {
gh (mho/cm2)
ina (mA/cm2)
ik (mA/cm2)
ih (mA/cm2)
i (mA/cm2)
kh_m_inf kh_n_inf
kh_m_tau kh_n_tau
aih
}
BREAKPOINT {
SOLVE states METHOD cnexp
aih = khm*khn
gh = gbar*aih
ih = gh*(v - eh)
i = ih
}
UNITSOFF
INITIAL {
rates(v)
khm = kh_m_inf
khn = kh_n_inf
}
DERIVATIVE states {
rates(v)
khm' = (kh_m_inf - khm) / kh_m_tau
khn' = (kh_n_inf - khn) / kh_n_tau
}
LOCAL q10
PROCEDURE rates(v(mV)) { :Computes rate and other constants at current v.
:Call once from HOC to initialize inf at resting v.
q10 = 3^((celsius - 22)/10 (degC))
:"kh" adaptation of Destexhe hyp-activated cation current by Patrick Kanold
kh_m_inf = kh_m(v)
kh_n_inf = kh_n(v)
kh_m_tau = kh_mt(v)
kh_n_tau = kh_nt(v)
}
: Make these as functions so we can view them from hoc, although this
: may slow things down a bit
FUNCTION kh_m(x (mV)) {
kh_m = 1/(1+exp((x+68.9+ghvshift)/6.5))
}
FUNCTION kh_n(x (mV)) {
kh_n = 1/(1+exp((x+68.9+ghvshift)/6.5)) : same as kh_m, but for completeness, compute this
}
FUNCTION kh_mt(v (mV)) {
kh_mt = exp((v+183.6+ghvshift)/15.24)
}
FUNCTION kh_nt(v (mV)) {
kh_nt = exp((v+158.6+ghvshift)/11.2)/(1+exp((v+75+ghvshift)/5.5))
}

View File

@@ -0,0 +1,142 @@
TITLE ihpyr_adj.mod DCN pyramidal cell model H-current
COMMENT
This model is part a Dorsal Cochlear Nucleus Pyramidal point cell
based on kinetic data from Kanold and Manis (1999) and Kanold's dissertation (1999)
-- 15 Jan 1999 P. Manis
Added export of start states for some variables to do perturbation tests
These start values replace the "inf" values used in the initialization procedure
Note that if the start variable is set to a value less than 0,
then the default initialization will be done. Typically I use a value of -1 for this flagging
Note also that it is possible to set the initial values > 1 but this is meaningless in terms of
the present equations.
-- 5 Feb 1999 P. Manis
Added Patrick's version of ih as ihpyr
Model is from Destexhe and Babloyantz 1993; Destexhe et al. 1993
2/10/02. P. Manis.
7/23/2014 P. Manis - separated from pyr.mod.
7/23/2018 P. Manis - created "ihpyr_adj"
ihpyr_adj has an adjustable q10 for fitting against experimental data
ENDCOMMENT
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
}
NEURON {
THREADSAFE
SUFFIX ihpyr_adj
USEION na READ ena WRITE ina
USEION k READ ek WRITE ik
NONSPECIFIC_CURRENT i
: USEION h READ eh WRITE ih VALENCE 1
RANGE eh
:
RANGE gh, kh_m_inf, kh_n_inf, aih, gbar, ghvshift
RANGE kh_m_tau, kh_n_tau
GLOBAL q10, q10f
}
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
PARAMETER {
v (mV)
celsius (degC)
dt (ms)
ek (mV) : = -81.5 (mV)
ena (mV) : = 50.0 (mV)
gbar = 0.00025 (mho/cm2) <0,1e9>
ghvshift = 0 (mV)
eh (mV) : = -43.0(mV)
q10 = 3.0 (1)
}
STATE {
khm khn
}
ASSIGNED {
gh (mho/cm2)
ina (mA/cm2)
ik (mA/cm2)
ih (mA/cm2)
i (mA/cm2)
kh_m_inf kh_n_inf
kh_m_tau kh_n_tau
aih
q10f (1)
}
BREAKPOINT {
SOLVE states METHOD cnexp
aih = khm*khn
gh = gbar*aih
ih = gh*(v - eh)
i = ih
}
UNITSOFF
INITIAL {
rates(v)
khm = kh_m_inf
khn = kh_n_inf
}
DERIVATIVE states {
rates(v)
khm' = (kh_m_inf - khm) / kh_m_tau
khn' = (kh_n_inf - khn) / kh_n_tau
}
: LOCAL q10f
PROCEDURE rates(v(mV)) { :Computes rate and other constants at current v.
:Call once from HOC to initialize inf at resting v.
q10f = q10^((celsius - 22)/10 (degC))
:"kh" adaptation of Destexhe hyp-activated cation current by Patrick Kanold
: adding q10 does not shift activation curves
kh_m_inf = kh_m(v)
kh_n_inf = kh_n(v)
: adding the q10 just changes the rate for the taus (1/(a+b))
kh_m_tau = kh_mt(v)/q10f
kh_n_tau = kh_nt(v)/q10f
}
: Make these as functions so we can view them from hoc, although this
: may slow things down a bit
FUNCTION kh_m(x (mV)) {
kh_m = 1/(1+exp((x+68.9+ghvshift)/6.5))
}
FUNCTION kh_n(x (mV)) {
kh_n = 1/(1+exp((x+68.9+ghvshift)/6.5)) : same as kh_m, but for completeness, compute this
}
FUNCTION kh_mt(v (mV)) {
kh_mt = exp((v+183.6+ghvshift)/15.24)
}
FUNCTION kh_nt(v (mV)) {
kh_nt = exp((v+158.6+ghvshift)/11.2)/(1+exp((v+75+ghvshift)/5.5))
}

View File

@@ -0,0 +1,155 @@
TITLE ihsgc-apical.mod - Spiral Ganglion Cell Ih current for Apical Region
COMMENT
Ih for Spiral ganglion cells.
Kinetcs are based on average fits to mouse SGCs,
This model is for just the apical cell group.
Data used to establish the kinetic parameters were collected by
Qing Liu and Robin Davis (Rutgers).
Data were taken at room temperature.
Kinetic parameters were extracted by curve fitting for fast and
slow components from activation and deactivation (using
the program Ihfit4b.py).
Implementation by Paul B. Manis, January-April, 2012.
Revised December 2013, January 2014.
# of parameters in the fit were decreased (tau uses one v and scale factor).
Parameters are shown in the tables in Liu et al., JARO 2014.
March 13, 2014: Corrected version with boltzmax for slow component
July 2014: made threadsafe, changed solver
pmanis@med.unc.edu
Note: vshift parameter is nominally 0. This parameter can
shift the entire activation and rate curves, keeping them
in register for each component of the conductance.
ENDCOMMENT
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
(nA) = (nanoamp)
}
NEURON {
THREADSAFE
SUFFIX ihsgcApical
NONSPECIFIC_CURRENT i
RANGE gbar, gh, ih, eh, vshift
RANGE vh, k, vhs, ks
RANGE rinf, rtau, sinf, stau
}
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
PARAMETER {
v (mV)
celsius = 22 (degC)
dt (ms)
gbar = 0.00318 (mho/cm2) <0,1e9>
eh = -41 (mV)
: Parameters from kinetic analysis
: Format for NEURON MOD file:
: (Run on date = 2014-01-01 12:55:35.786524 )
: lmfit, Constrained model t(v) = DC + 1/(a * exp((v+vh)/k1) + a*exp(-(v+vh)/k2))
: A. Fast component (Fast trace):
: Boltzmann:
vh = -101.831 (mV)
k = 12.431 (mV)
vshift = 0.0 (mV)
afast = 0.4225 : fraction that is fast.
: Tau
taufac = 1.0 (1)
taumin = 0 (ms)
tausc1 = 0.00445778 (/ms) : (ms)
vtau1 = 87.0705 (mV)
kfac1 = 53.0338 (mV)
kfac2 = 21.5365 (mV)
: B. Slow component (Cyan trace):
: (Run on date = 2014-01-01 12:55:35.786883 )
: Boltzmann:
svh1 = -86.762 (mV)
sk1 = 4.430 (mV) : double boltzmann
svh2 = -115.227 (mV)
sk2 = 9.675 (mV)
svshift = 0.0 (mV)
sba2 = 0.400557 : relative amplitude slow component 2 compared to slow 1 (slow2/(slow2+slow1))
aslow = 0.5775 : total slow
boltzmax = 0.5019571 : normalization factor
: (computed numerically in Sage to make double boltz max = 1.0)
: stau
staufac = 1.0 (1)
staumin = 0 (ms)
stausc1 = 0.00093656 (/ms) : (ms)
svtau1 = 89.6097 (mV)
skfac1 = 25.392 (mV)
skfac2 = 26.4195 (mV)
}
STATE {
r
s
}
ASSIGNED {
gh (mho/cm2)
i (mA/cm2)
ih (mA/cm2)
rinf
rtau (ms)
sinf
stau (ms)
q10 ()
}
BREAKPOINT {
SOLVE states METHOD cnexp
gh = gbar*(afast*(r^2)+aslow*s) : Balance between fast and slow determined by afast and aslow
ih = gh*(v - eh)
i = ih
}
INITIAL {
q10 = 3.0^((celsius - 22.0)/10.0 (degC)) : adjust for temperature...
rates(v)
r = rinf
s = sinf
}
DERIVATIVE states {
rates(v)
r' = (rinf - r)/rtau
s' = (sinf - s)/stau
}
LOCAL rt, st
PROCEDURE rates(v (mV)) { : Computes rate and activation at voltage = v.
: fast component - standard HH-like kinetics.
rinf = 1.0 / (1+exp((v - vh + vshift) / k))^0.5
rt = tausc1*exp((v + vtau1 + vshift) / kfac1) + tausc1*exp(-(v + vtau1 + vshift) / kfac2)
rtau = (taumin + taufac/rt)
: slow component
: double boltzman activation function (decreasing conductance), unequal sharing.
sinf = 1. / (1 + exp((v - svh1 + vshift) / sk1))
st = 1. / (1 + exp((v - svh2 + vshift) / sk2))
sinf = (1-sba2)*sinf - sba2*st
sinf = sinf/boltzmax : make sinf [0..1]
stau = staufac / (stausc1*exp((v + svtau1 + vshift) / skfac1) + stausc1*exp(-(v + svtau1 + vshift) / skfac2))
stau = (stau + staumin)
}

View File

@@ -0,0 +1,154 @@
TITLE ihsgc-basalmiddle.mod - Spiral Ganglion Cell Ih current for basal and middle Regions
COMMENT
Ih for Spiral ganglion cells.
Kinetcs are based on average fits to mouse SGCs,
This model is for the basal and middle cell groups (averaged).
Data used to establish the kinetic parameters were collected by
Qing Liu and Robin Davis (Rutgers).
Data were taken at room temperature.
Kinetic parameters were extracted by curve fitting for fast and
slow components from activation and deactivation (using
the program Ihfit4b.py).
Implementation by Paul B. Manis, January-April, 2012.
Revised December 2013, January 2014.
# of parameters in the fit were decreased (tau uses one v and scale factor).
Parameters are shown in the tables in Liu et al., JARO 2014.
March 13, 2014: Corrected version with boltzmax for slow component
July 2014: made threadsafe, changed solver
pmanis@med.unc.edu
Note: vshift parameter is nominally 0. This parameter can
shift the entire activation and rate curves, keeping them
in register for each component of the conductance.
ENDCOMMENT
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
(nA) = (nanoamp)
}
NEURON {
THREADSAFE
SUFFIX ihsgcBasalMiddle
NONSPECIFIC_CURRENT i
RANGE gbar, gh, ih, eh, vshift
RANGE vh, k, vhs, ks
RANGE rinf, rtau, sinf, stau
}
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
PARAMETER {
v (mV)
celsius = 22 (degC)
dt (ms)
gbar = 0.00318 (mho/cm2) <0,1e9>
eh = -41 (mV)
: Parameters from kinetic analysis
: Formatted for NEURON MOD file
: (Run on date = 2014-01-01 12:52:22.776598 )
: lmfit, Constrained model t(v) = DC + 1/(a * exp((v+vh)/k1) + a*exp(-(v+vh)/k2))
: A. Fast component (Fast trace):
: Boltzmann:
vh = -105.298 (mV)
k = 12.359 (mV)
vshift = 0.0 (mV)
afast = 0.4471 : fraction that is fast.
: Tau
taufac = 1.0 (1)
taumin = 0 (ms)
tausc1 = 0.00417518 (/ms)
vtau1 = 87.0836 (mV)
kfac1 = 28.1667 (mV)
kfac2 = 21.4809 (mV)
: B. Slow component:
: (Run on date = 2014-01-01 12:52:22.777259 )
: Boltzmann:
svh1 = -91.860 (mV)
sk1 = 4.883 (mV) : double boltzmann
svh2 = -110.209 (mV)
sk2 = 3.927 (mV)
svshift = 0.0 (mV)
sba2 = 0.337216 : relative amplitude slow component 2 compared to slow 1 (slow2/(slow2+slow1))
aslow = 0.5529 : total slow
boltzmax = 0.5551729 : normalization factor
: (computed numerically in Sage to make double boltz max = 1.0)
: stau
staufac = 1.0 (1)
staumin = 0 (ms)
stausc1 = 0.00104354 (/ms)
svtau1 = 105.816 (mV)
skfac1 = 40.0291 (mV)
skfac2 = 20.2273 (mV)
}
STATE {
r
s
}
ASSIGNED {
gh (mho/cm2)
i (mA/cm2)
ih (mA/cm2)
rinf
rtau (ms)
sinf
stau (ms)
q10 ()
}
BREAKPOINT {
SOLVE states METHOD cnexp
gh = gbar*(afast*(r^2)+aslow*s) : Balance between fast and slow determined by afast and aslow
ih = gh*(v - eh)
i = ih
}
INITIAL {
q10 = 3.0^((celsius - 22.0)/10.0 (degC)) : adjust for temperature...
rates(v)
r = rinf
s = sinf
}
DERIVATIVE states { : Updates state variables r and s
rates(v) : at the current voltage
r' = (rinf - r )/rtau
s' = (sinf - s)/stau
}
LOCAL rt, st
PROCEDURE rates(v (mV)) { : Computes rate and activation at voltage = v.
: fast component - standard HH-like kinetics.
rinf = 1.0 / (1+exp((v - vh + vshift) / k))^0.5
rt = tausc1*exp((v + vtau1 + vshift) / kfac1) + tausc1*exp(-(v + vtau1 + vshift) / kfac2)
rtau = (taumin + taufac/rt)
: slow component
: double boltzman activation function (decreasing conductance), unequal sharing.
sinf = 1. / (1 + exp((v - svh1 + vshift) / sk1))
st = 1. / (1 + exp((v - svh2 + vshift) / sk2))
sinf = (1-sba2)*sinf - sba2*st
sinf = sinf/boltzmax : make sinf [0..1]
stau = staufac / (stausc1*exp((v + svtau1 + vshift) / skfac1) + stausc1*exp(-(v + svtau1 + vshift) / skfac2))
stau = (stau + staumin)
}

View File

@@ -0,0 +1,79 @@
TITLE jsr.mod VCN conductances
COMMENT
Ih for VCN neurons - average from several studies in auditory neurons
Implementation by Paul B. Manis, April (JHU) and Sept, (UNC)1999.
revised 2/28/04 pbm
pmanis@med.unc.edu
Modifed implementation; includes all temperature scaling, passes modlunit
7/10/2014 pbm
ENDCOMMENT
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
(nA) = (nanoamp)
}
NEURON {
THREADSAFE
SUFFIX ihvcn
NONSPECIFIC_CURRENT i
RANGE gbar, gh, i, eh
GLOBAL rinf, rtau
}
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
PARAMETER {
v (mV)
dt (ms)
gbar = 0.00318 (mho/cm2) <0,1e9>
q10tau = 3.0
}
STATE {
r
}
ASSIGNED {
celsius (degC)
gh (mho/cm2)
eh (mV)
i (mA/cm2)
rinf
rtau (ms)
q10 ()
}
BREAKPOINT {
SOLVE states METHOD cnexp
gh = gbar*r
i = gh*(v - eh)
}
INITIAL {
q10 = q10tau^((celsius - 22)/10 (degC)) : if you don't like room temp, it can be changed!
rates(v)
r = rinf
}
DERIVATIVE states { :Computes state variables m, h, and n
rates(v) : at the current v and dt.
r' = (rinf - r)/rtau
}
PROCEDURE rates(v (mV)) { :Computes rate and other constants at current v.
:Call once from HOC to initialize inf at resting v.
rinf = 1 / (1+exp((v + 76) / 7 (mV)))
rtau = (100000 (ms)/ (237*exp((v+60) / 12 (mV)) + 17*exp(-(v+60) / 14 (mV)))) + 25
rtau = rtau/q10
}

188
cnmodel/mechanisms/inav11.mod Executable file
View File

@@ -0,0 +1,188 @@
:
: ichanWT2005.mod
:
: Alan Goldin Lab, University of California, Irvine
: Jay Lickfett - Last Modified: 6 July 2005
:
: This file is the Nav1.1 wild-type channel model described in:
:
: Barela et al. An Epilepsy Mutation in the Sodium Channel SCN1A That Decreases
: Channel Excitability. J. Neurosci. 26(10): p. 2714-2723
:
:
: The model is derived from the one described in:
:
: Spampanato et al. (2004a) Increased Neuronal Firing in Computer Simulations
: of Sodium Channel Mutations that Cause Generalized Epilepsy with Febrile Seizures Plus.
: Journal of Neurophysiology 91:2040-2050
:
: and
:
: Spampanato et al. (2004b) A Novel Epilepsy Mutation
: in the Sodium Channel SCN1A Identifies a Cytoplasmic Domain for
: Beta Subunit Interaction. J. Neurosci. 24(44):10022-10034
:
: delayed rectifier removed (p.b.manis 2/22/2009)
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
(uF) = (microfarad)
(molar) = (1/liter)
(nA) = (nanoamp)
(mM) = (millimolar)
(um) = (micron)
(S) = (siemens)
FARADAY = 96520 (coul)
R = 8.3134 (joule/degC)
}
NEURON {
THREADSAFE
SUFFIX nav11
USEION na READ ena WRITE ina VALENCE 1
RANGE gna
RANGE gbar
RANGE minf, mtau, hinf, htau, sinf, stau, inat, m, h, s
RANGE vsna : voltage shift parameter
}
INDEPENDENT {t FROM 0 TO 100 WITH 100 (ms)}
PARAMETER {
vsna = 4.3 (mV)
celsius (degC)
dt (ms)
ena (mV)
:enat = 50 (mV)
gbar = 0.1 (mho/cm2)
q10 = 3.0 (1)
}
ASSIGNED {
v (mV)
gna (mho/cm2)
ina (mA/cm2)
minf hinf sinf
mtau (ms) htau (ms) stau (ms)
mexp hexp sexp
: vsna (mV)
}
STATE {
m h s
}
BREAKPOINT {
SOLVE states METHOD cnexp
gna = gbar*m*m*m*h*s
ina = gna*(v - ena)
}
UNITSOFF
INITIAL {
trates(v)
m = minf
h = hinf
s = sinf
}
DERIVATIVE states { : Computes state variables m, h, s and n
: at the current v and dt.
rates(v)
m' = (minf - m)/mtau
h' = (hinf - h)/htau
s' = (sinf - s)/stau
}
LOCAL qt
PROCEDURE rates(v (mV)) { :Computes rate and other constants at current v.
:Call once from HOC to initialize inf at resting v.
LOCAL alpha, beta, sum
qt = q10^((celsius - 22)/10) : original recordings in Barela et al made at "room temperature"
: "m" sodium activation system
minf = f_minf(v)
mtau = f_mtau(v)/qt
: "h" sodium fast inactivation system
hinf = f_hinf(v)
htau = f_htau(v)/qt
: "s" sodium slow inactivation system
sinf = f_sinf(v)
stau = f_stau(v)/qt
}
PROCEDURE trates(v (mV)) { :Build table with rate and other constants at current v.
:Call once from HOC to initialize inf at resting v.
LOCAL tinc
TABLE minf, mexp, hinf, hexp, sinf, sexp, mtau, htau, stau
DEPEND dt, celsius FROM -100 TO 100 WITH 200
rates(v) : not consistently executed from here if usetable_hh == 1
: so don't expect the tau values to be tracking along with
: the inf values in hoc
tinc = -dt : * q10 q10 is handled in rates, above
mexp = 1 - exp(tinc/mtau)
hexp = 1 - exp(tinc/htau)
sexp = 1 - exp(tinc/stau)
}
FUNCTION f_minf(v (mV)) {
f_minf = 1/(1+exp(-(v+27.4+vsna)*4.7*0.03937))
}
FUNCTION f_mtau(v (mV)) {
f_mtau = 0.15
}
FUNCTION f_hinf(v (mV)) {
f_hinf = 1/(1+exp((v+41.9+vsna)/6.7))
}
FUNCTION f_htau(v (mV)) {
f_htau = 23.12*exp(-0.5*((v+77.58+vsna)/43.92)^2)
}
FUNCTION f_sinf(v (mV)) {
f_sinf = 1/(1+exp((v+46.0+vsna)/6.6))
}
FUNCTION f_stau(v (mV)) {
f_stau = 1000*140.4*exp(-0.5*((v+71.3+vsna)/30.9)^2)
}
UNITSON

View File

@@ -0,0 +1,136 @@
TITLE jsrnaf.mod VCN Na conductance, fast model
COMMENT
gnaf is the modified form used in his
1993 M.S. thesis (as in Rothman et al., J. Neurophysiol. 70:2562, 1993),
with rapid recovery from inactivation for potentials below rest.
Implementation by Paul B. Manis, April and Sept, 1999.
ENDCOMMENT
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
(nA) = (nanoamp)
}
? interface
NEURON {
THREADSAFE
SUFFIX jsrna
USEION na READ ena WRITE ina
RANGE gbar
RANGE gna, vsna
RANGE minf, hinf, mtau, htau
}
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
PARAMETER {
v (mV)
dt (ms)
ena = 55 (mV)
gbar = 0.25 (mho/cm2) <0,1e9>
vsna = 0 (mV)
q10 = 3.0 (1)
}
STATE {
m h
}
ASSIGNED {
gna (mho/cm2)
ina (mA/cm2)
minf hinf
mtau (ms) htau (ms)
celsius (degC)
}
LOCAL mexp, hexp
? currents
BREAKPOINT {
SOLVE states METHOD cnexp
gna = gbar*(m^3)*h
ina = gna*(v - ena)
}
UNITSOFF
INITIAL {
trates(v)
m = minf
h = hinf
}
DERIVATIVE states { :Computes state variables m, h, and n
trates(v) : at the current v and dt.
m' = (minf - m)/mtau
h' = (hinf - h)/htau
}
LOCAL qt
PROCEDURE rates(v (mV)) { :Computes rate and other constants at current v.
:Call once from HOC to initialize inf at resting v.
LOCAL alpha, beta, sum
qt = q10^((celsius - 22)/10 (degC)) : R&M'03 used 3
: Note qt temperature here cancels in minf (a/(a+b))
:"m" sodium activation system - JSR
alpha = -0.36*qt*vtrap((v+49),-3)
beta = 0.4*qt*vtrap((v+58),20)
sum = alpha + beta
mtau = 1/sum
minf = alpha/sum
:"h" sodium inactivation system - JSR
alpha = 2.4*qt/(1+exp((v+68-vsna)/3 (mV))) + 0.8*qt/(1+exp(v+61.3-vsna))
beta = 3.6*qt/(1+exp(-(v+21-vsna)/10 (mV)))
sum = alpha + beta
htau = 1/sum
hinf = alpha/sum
: jsr modified sodium channel - defined in terms of alpha and beta this time
: am = (0.36*q10*(v+49))/(1-exp(-((v+49)/3)))
: am = -(0.36*q10*vtrap(-(v+49),3))
: bm = -(0.40*q10*(v+58))/(1-exp((v+58)/20))
: bm = (0.40*q10*vtrap((v+58),20))
: ah = ((2.4*q10)/(1+exp((v+68)/3))) + (0.8*qten/(1+exp(v+61.3)))
: bh = (3.6*q10)/(1+exp(-(v+21)/10))
: minf = am/(am+bm)
: hinf = ah/(ah+bh)
: mtau = 1/(am+bm)
: htau = 1/(ah+bh)
}
PROCEDURE trates(v (mV)) { :Computes rate and other constants at current v.
:Call once from HOC to initialize inf at resting v.
LOCAL tinc
rates(v) : not consistently executed from here if usetable_hh == 1
: so don't expect the tau values to be tracking along with
: the inf values in hoc
tinc = -dt : * q10 # handled in rates now
mexp = 1 - exp(tinc/mtau)
hexp = 1 - exp(tinc/htau)
}
FUNCTION vtrap(x,y) { :Traps for 0 in denominator of rate eqns.
if (fabs(x/y) < 1e-6) {
vtrap = y*(1 - x/y/2)
}else{
vtrap = x/(exp(x/y) - 1)
}
}

104
cnmodel/mechanisms/ka.mod Normal file
View File

@@ -0,0 +1,104 @@
TITLE klt.mod The low threshold conductance of cochlear nucleus neurons
COMMENT
NEURON implementation of Jason Rothman's measurements of VCN conductances.
This file implements the transient potassium current found in ventral cochlear
nucleus "Type I" cells, which are largely "stellate" or "multipolar" cells (Manis and
Marx, 1991; Rothman and Manis, 2003a,b; Manis et al, 1996). The current is likely
mediated by Kv4.2 potassium channel subunits, but this has not been directly
demonstrated. The specific implementation is described in Rothman and Manis, J.
Neurophysiol. 2003, in the appendix. Measurements were made from isolated
neurons from adult guinea pig, under reasonably stringent voltage clamp conditions.
The measured current is sensitive to 4-aminopyridine.
Original implementation by Paul B. Manis, April (JHU) and Sept, (UNC)1999.
File split implementaiton, April 1, 2004.
Contact: pmanis@med.unc.edu
ENDCOMMENT
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
(nA) = (nanoamp)
}
NEURON {
THREADSAFE
SUFFIX ka
USEION k READ ek WRITE ik
RANGE gbar, gka, ik
GLOBAL ainf, binf, cinf, atau, btau, ctau
}
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
PARAMETER {
v (mV)
dt (ms)
gbar = 0.00477 (mho/cm2) <0,1e9>
q10tau = 3.0
q10g = 2.0
}
STATE {
a b c
}
ASSIGNED {
celsius (degC) : model is defined on measurements made at room temp in Baltimore
ik (mA/cm2)
ek (mV)
gka (mho/cm2)
ainf binf cinf
atau (ms) btau (ms) ctau (ms)
qg () : computed q10 for gnabar based on q10g
q10 ()
}
LOCAL aexp, bexp, cexp
BREAKPOINT {
SOLVE states METHOD cnexp
gka = gbar*(a^4)*b*c
ik = gka*(v - ek)
}
INITIAL {
qg = q10g^((celsius-22)/10 (degC))
q10 = q10tau^((celsius - 22)/10 (degC)) : if you don't like room temp, it can be changed!
rates(v)
a = ainf
b = binf
c = cinf
}
DERIVATIVE states { :Computes state variables m, h, and n
rates(v) : at the current v and dt.
a' = (ainf - a)/atau
b' = (binf - b)/btau
c' = (cinf - c)/ctau
}
PROCEDURE rates(v (mV)) { :Computes rate and other constants at current v.
:Call once from HOC to initialize inf at resting v.
ainf = (1 / (1 + exp(-1*(v + 31) / 6 (mV))))^0.25
binf = 1 / (1 + exp((v + 66) / 7 (mV)))^0.5
cinf = 1 / (1 + exp((v + 66) / 7 (mV)))^0.5
atau = (100 (ms)/ (7*exp((v+60) / 14 (mV)) + 29*exp(-(v+60) / 24 (mV)))) + 0.1
atau = atau/q10
btau = (1000 (ms) / (14*exp((v+60) / 27 (mV)) + 29*exp(-(v+60) / 24 (mV)))) + 1
btau = btau/q10
ctau = (90 (ms)/ (1 + exp((-66-v) / 17 (mV)))) + 10
ctau = ctau/q10
}

View File

@@ -0,0 +1,72 @@
TITLE KCNQ potassium channel for GPe neuron
COMMENT
modeled by Gunay et al., 2008
implemented in NEURON by Kitano, 2011
Threadsafe and unit checking, P.B. Manis, 2014
ENDCOMMENT
UNITS {
(mV) = (millivolt)
(mA) = (milliamp)
}
NEURON {
THREADSAFE
SUFFIX kcnq
USEION k READ ek WRITE ik
RANGE gbar, gk, iKCNQ
}
PARAMETER {
v (mV)
dt (ms)
gbar = 0.001 (mho/cm2)
iKCNQ = 0.0 (mA/cm2)
ek (mV)
theta_m = -61.0 (mV)
k_m = 19.5 (mV)
tau_m0 = 6.7 (ms)
tau_m1 = 100.0 (ms)
phi_m = -61.0 (mV)
sigma_m0 = 35.0 (mV)
sigma_m1 = -25.0 (mV)
}
STATE {
m
}
ASSIGNED {
ik (mA/cm2)
gk (mho/cm2)
minf
taum (ms)
}
BREAKPOINT {
SOLVE states METHOD cnexp
gk = gbar*m*m*m*m
ik = gk * (v-ek)
iKCNQ = ik
}
INITIAL {
settables(v)
m = minf
}
DERIVATIVE states {
settables(v)
m' = (minf - m)/taum
}
PROCEDURE settables(v (mV)) {
TABLE minf, taum FROM -100 TO 100 WITH 400
minf = 1.0 / (1.0 + exp((theta_m - v)/k_m))
taum = tau_m0 + (tau_m1 - tau_m0)/(exp((phi_m - v)/sigma_m0) + exp((phi_m - v)/sigma_m1))
}

View File

@@ -0,0 +1,92 @@
TITLE kdpyr.mod DCN pyramidal cell model, delayed rectifier
COMMENT
This is part of a model implements a Dorsal Cochlear Nucleus Pyramidal point cell
based on kinetic data from Kanold and Manis (1999) and Kanold's dissertation (1999)
-- 15 Jan 1999 P. Manis
Added export of start states for some variables to do perturbation tests
These start values replace the "inf" values used in the initialization procedure
Note that if the start variable is set to a value less than 0,
then the default initialization will be done. Typically I use a value of -1 for this flagging
Note also that it is possible to set the initial values > 1 but this is meaningless in terms of
the present equations.
-- 5 Feb 1999 P. Manis
ENDCOMMENT
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
}
NEURON {
THREADSAFE
SUFFIX kdpyr
USEION k READ ek WRITE ik
RANGE gbar, gk : delayed rectifier
RANGE ntau: time constants delayed rectifier
RANGE kd_avh
}
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
PARAMETER {
v (mV)
celsius (degC)
dt (ms)
ek (mV) : = -81.5 (mV)
gbar = 0.006667 (mho/cm2) <0,1e9>
ntau = 0.5 (ms) <0.1,100>
kd_avh = -40 (mV)
}
STATE {
n
}
ASSIGNED {
gk (mho/cm2)
ik (mA/cm2)
ninf
}
LOCAL nexp
BREAKPOINT {
SOLVE states METHOD cnexp
gk = gbar*n*n
ik = gk*(v - ek)
}
INITIAL {
rates(v)
n = ninf
}
DERIVATIVE states {
rates(v)
n' = (ninf - n) / ntau
}
LOCAL q10
PROCEDURE rates(v(mV)) { :Computes rate and other constants at current v.
:Call once from HOC to initialize inf at resting v.
LOCAL alpha, beta, sum
TABLE ninf, ntau DEPEND celsius FROM -200 TO 100 WITH 400
q10 = 3^((celsius - 22)/10 (degC))
: "n" potassium activation system
ninf = kd_m(v)
}
: Make these as functions so we can view them from hoc, although this
: may slow things down a bit
FUNCTION kd_m(x (mV)) { : potassium activation
kd_m = 1/(1+exp(-(x-kd_avh)/(3 (mV)))) : flat time constants
}

111
cnmodel/mechanisms/kht.mod Normal file
View File

@@ -0,0 +1,111 @@
TITLE kht.mod The high threshold conductance of cochlear nucleus neurons
COMMENT
NEURON implementation of Jason Rothman's measurements of VCN conductances.
This file implements the high threshold potassium current found in several brainstem
nuclei of the auditory system, including the spherical and globular bushy cells
(Manis and Marx, 1991; Rothman and Manis, 2003a,b) and multipolar (stellate)
cells of the ventral cochlear nucleus, principal cells of the medial
nucleus of the trapzoid body (Brew and Forsythe, 1995, Wang and Kaczmarek,
1997) and neurons of the medial superior olive. The current is likely mediated by
Kv3.1 potassium channel subunits. The specific
implementation is described in Rothman and Manis, J. Neurophysiol. 2003, in the
appendix. Measurements were made from isolated neurons from adult guinea pig,
under reasonably stringent voltage clamp conditions. The measured current is
sensitive to 4-aminopyridine and TEA, but is spared by mamba snake toxi
dendrotoxin I.
Similar conductrances are found in the homologous neurons of the avian auditory
system (Reyes and Rubel; Zhang and Trussell; Rathouz and Trussell), and the
conductance described here, in the absence of more detailed kinetic measurements
, is probably suitable for use in modeling that system.
Original implementation by Paul B. Manis, April (JHU) and Sept, (UNC)1999.
File split implementation, February 28, 2004.
Contact: pmanis@med.unc.edu
ENDCOMMENT
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
(nA) = (nanoamp)
}
NEURON {
THREADSAFE
SUFFIX kht
USEION k READ ek WRITE ik
RANGE gbar, gkht, ik, q10g
GLOBAL ninf, pinf, ntau, ptau
}
:INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
ASSIGNED {
celsius (degC) : model is defined on measurements made at room temp in Baltimore: 22 degC
ik (mA/cm2)
ek (mV)
gkht (mho/cm2)
pinf ninf
ptau (ms)
ntau (ms)
qg () : computed q10 for gnabar based on q10g
q10 ()
}
PARAMETER {
v (mV)
dt (ms)
gbar = 0.01592 (mho/cm2) <0,1e9>
nf = 0.85 <0,1> :proportion of n vs p kinetics
q10tau = 3.0
q10g = 2.0
}
STATE {
n p
}
LOCAL nexp, pexp
BREAKPOINT {
SOLVE states METHOD cnexp
gkht = qg*gbar*(nf*(n^2) + (1-nf)*p)
ik = gkht*(v - ek)
}
INITIAL {
qg = q10g^((celsius-22)/10 (degC))
q10 = q10tau^((celsius - 22)/10 (degC))
rates(v)
p = pinf
n = ninf
}
DERIVATIVE states { :Computes state variables m, h, and n
rates(v) : at the current v and dt.
n' = (ninf - n)/ntau
p' = (pinf - p)/ptau
}
PROCEDURE rates(v (mV)) { :Computes rate and other constants at current v.
:Call once from HOC to initialize inf at resting v.
ninf = (1 + exp(-(v + 15) / 5 (mV)))^-0.5
pinf = 1 / (1 + exp(-(v + 23) / 6 (mV)))
ntau = (100 (ms)/ (11*exp((v+60) / 24 (mV)) + 21*exp(-(v+60) / 23 (mV)))) + 0.7
ntau = ntau/q10
ptau = (100 (ms)/ (4*exp((v+60) / 32 (mV)) + 5*exp(-(v+60) / 22 (mV)))) + 5
ptau = ptau/q10
}

128
cnmodel/mechanisms/kif.mod Normal file
View File

@@ -0,0 +1,128 @@
TITLE kif.mod DCN pyramidal cell model fast transient current
COMMENT
This model implements a fast transient potassium current from
Dorsal Cochlear Nucleus Pyramidal cells
based on kinetic data from Kanold and Manis (1999) and Kanold's dissertation (1999)
-- 15 Jan 1999 P. Manis
2/10/02. P. Manis.
Pulled from pyr.mod 7/24/2014
ENDCOMMENT
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
}
NEURON {
SUFFIX kif
USEION k READ ek WRITE ik
RANGE gkif, kif_a_inf, kif_i_inf : fast inactivating potassium current
RANGE akif, gbar
RANGE kif_a_tau, kif_i_tau
RANGE kif_a_start, kif_i_start
RANGE kif_ivh, kif_avh, kif_hivh
}
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
PARAMETER {
v (mV)
celsius (degC)
dt (ms)
ek (mV) : = -81.5 (mV)
ena (mV) : = 50.0 (mV)
gbar = 0.0125 (mho/cm2) <0,1e9>
kif_ivh = -89.6 (mV)
kif_avh = -57.0 (mV)
kif_hivh = -87.0 (mV)
kif_a_start = -1 (1)
kif_i_start = -1 (1)
}
STATE {
kifa kifi
}
ASSIGNED {
gkif (mho/cm2)
ik (mA/cm2)
kif_a_inf (1)
kif_i_inf (1)
kif_a_tau (ms)
kif_i_tau (ms)
akif ()
q10 ()
}
BREAKPOINT {
SOLVE states METHOD cnexp
akif = kifa*kifa*kifa*kifa*kifi
gkif = gbar*akif
ik = gkif*(v - ek)
}
INITIAL {
q10 = 3^((celsius - 22)/10 (degC))
rates(v)
if(kif_a_start < 0) { : if xx_(i/a)_start is > 0, then perturbation is done at onset of computations.
kifa = kif_a_inf
} else {
kifa = kif_a_start
}
if(kif_i_start < 0) {
kifi = kif_i_inf
} else {
kifi = kif_i_start
}
}
DERIVATIVE states {
rates(v)
kifa' = (kif_a_inf - kifa) / kif_a_tau
kifi' = (kif_i_inf - kifi) / kif_i_tau
}
PROCEDURE rates(v(mV)) { :Computes rate and other constants at current v.
:Call once from HOC to initialize inf at resting v.
: LOCAL alpha, beta, sum
: TABLE kif_a_inf, kif_a_tau, kif_i_inf, kif_i_tau DEPEND celsius, kif_avh, kif_ivh FROM -200 TO 100 WITH 400
: "kif" fast inactivation potassium channel - activation and inactivation
kif_a_inf = kif_m(v)
kif_i_inf = kif_h(v)
kif_a_tau = kif_mt(v)
kif_i_tau = kif_ht(v)
}
: Make these as functions so we can view them from hoc, although this
: may slow things down a bit
FUNCTION kif_m(v ) { : ikif activation
kif_m = 1.0/(1+exp(-(v-kif_avh)/25.8 (mV)))
}
FUNCTION kif_h(v (mV)) { : ikif inactivation
kif_h = 1.0/(1+exp((v-kif_ivh)/6.7 (mV)))
}
FUNCTION kif_mt(v (mV)) (ms) { : ikif activation tau
LOCAL x
x = 0.15 * exp((v-kif_avh)/10 (mV)) + 0.3 *exp(-(v-kif_avh)/10 (mV))
x = 0.5 + (1.0 /x)
kif_mt = (x * 1.0 (ms))/q10
}
FUNCTION kif_ht(v (mV)) (ms) { : ikif inactivation tau
LOCAL x
x = 0.015 * exp((v-kif_hivh)/20 (mV))+0.03*exp(-(v-kif_hivh)/20 (mV))
x = 10 + (1./x)
kif_ht = (x * 1.0 (ms)) /q10
}

108
cnmodel/mechanisms/kir.mod Executable file
View File

@@ -0,0 +1,108 @@
TITLE KIR channel
COMMENT
Reference: Steephen JE, Manchanda R (2009) Differences in biophysical
properties of nucleus accumbens medium spiny neurons emerging from
inactivation of inward rectifying potassium currents. J Comput Neurosci [PubMed]
Found on ModelDB, 1/21/2013 PBManis
ENDCOMMENT
NEURON {
SUFFIX KIR
USEION k READ ek WRITE ik
RANGE g, ik, gbar
GLOBAL minf, mtau
}
UNITS {
(mA) = (milliamp)
(uA) = (microamp)
(mV) = (millivolt)
(mS) = (millimho)
}
PARAMETER {
celsius (degC)
ek (mV)
gbar = 1.4e-4 (mho/cm2) <0,1e9>
m_vh = -82 (mV) : half activation
m_ve = 13 (mV) : slope
}
ASSIGNED {
v (mV)
g (mho/cm2)
ik (mA/cm2)
minf (1)
mtau (ms)
qt (1)
}
STATE {
m
}
BREAKPOINT {
SOLVE states METHOD cnexp
g = gbar*m
ik = g*(v - ek)
}
INITIAL {
qt = 3^((celsius-35)/10)
rates(v)
m = minf
}
DERIVATIVE states {
rates(v)
m' = (minf-m)/mtau
}
FUNCTION_TABLE tabmtau(v(mV)) (ms)
: rates() computes rate and other constants at present v
: call once from hoc to initialize inf at resting v
PROCEDURE rates(v(mV)) {
: mtau = tabmtau(v)
mtau = tabmtau(v)/qt
minf = 1/(1 + exp((v - m_vh)/m_ve))
}
COMMENT
/* TABLES
The tables here are built as vecs in hoc, and then loaded into the mod file arrays before use...
*
* Steephen, J. E., & Manchanda, R. (2009). Differences in biophysical properties of nucleus accumbens medium spiny neurons emerging from inactivation of inward rectifying potassium currents. J Comput Neurosci,
* doi:10.1007/s10827-009-0161-7
*/
//KIR
objref vecmtau_KIR, vecv_KIR
vecmtau_KIR = new Vector()
vecv_KIR = new Vector()
vecv_KIR.indgen(-120, 0, 10)
vecmtau_KIR.append(7.465, 7.465, 7.465, 8, 9.435, 10.755, 12.12, 13.795, 15.385, 14.285, 11.765, 8.89, 8) // At 35 deg C
table_tabmtau_KIR(&vecmtau_KIR.x[0], vecv_KIR.size, &vecv_KIR.x[0])
//inKIR
objref vecv_inKIR, vechinf_inKIR, vechtau_inKIR, vecv_tau_inKIR
vecv_tau_inKIR = new Vector()
vechtau_inKIR= new Vector()
vecv_tau_inKIR.append(-120,-90, -50)
vechtau_inKIR.append(7.767, 15, 25.333) // At 35 deg C
table_tabhtau_inKIR(&vechtau_inKIR.x[0],vecv_tau_inKIR.size, &vecv_tau_inKIR.x[0])
vecv_inKIR = new Vector()
vechinf_inKIR = new Vector()
vecv_inKIR.append(-120,-90, -50)
vechinf_inKIR.append(0, 0.13, 1)
table_tabhinf_inKIR(&vechinf_inKIR.x[0], vecv_inKIR.size, &vecv_inKIR.x[0])
table_tabmtau_inKIR(&vecmtau_KIR.x[0], vecv_KIR.size, &vecv_KIR.x[0])
ENDCOMMENT

123
cnmodel/mechanisms/kis.mod Normal file
View File

@@ -0,0 +1,123 @@
TITLE kis.mod DCN pyramidal cell model Slow transient K current
COMMENT
This model implements the slow transient potassium current from
Dorsal Cochlear Nucleus Pyramidal cells
based on kinetic data from Kanold and Manis (1999) and Kanold's dissertation (1999)
-- 15 Jan 1999 P. Manis
2/10/02, 7/24/2014. P. Manis.
ENDCOMMENT
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
}
NEURON {
THREADSAFE
SUFFIX kis
USEION k READ ek WRITE ik
RANGE gkis, kis_a_inf, kis_i_inf : fast inactivating potassium current
RANGE akis, gbar
RANGE kis_a_tau, kis_i_tau
RANGE kis_a_start, kis_i_start
}
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
PARAMETER {
v (mV)
celsius (degC)
dt (ms)
ek (mV) : = -81.5 (mV)
ena (mV) : = 50.0 (mV)
gbar = 0.0033333 (mho/cm2) <0,1e9>
kis_ivh = -40.9 (mV)
kis_avh = -38.4 (mV)
kis_a_start = -1
kis_i_start = -1
}
STATE {
kisa kisi
}
ASSIGNED {
gkis (mho/cm2)
ik (mA/cm2)
kis_a_inf kis_i_inf
kis_a_tau (ms)
kis_i_tau (ms)
akis
q10 ()
}
BREAKPOINT {
SOLVE states METHOD cnexp
akis = kisa*kisa*kisa*kisa*kisi
gkis = gbar*akis
ik = gkis*(v - ek)
}
INITIAL {
q10 = 3^((celsius - 22)/10 (degC))
rates(v)
if(kis_a_start < 0) { : if xx_(i/a)_start is > 0, then perturbation is done at onset of computations.
kisa = kis_a_inf
} else {
kisa = kis_a_start
}
if(kis_i_start < 0) {
kisi = kis_i_inf
} else {
kisi = kis_i_start
}
}
DERIVATIVE states {
rates(v)
kisa' = (kis_a_inf - kisa) / kis_a_tau
kisi' = (kis_i_inf - kisi) / kis_i_tau
}
PROCEDURE rates(v (mV)) { :Computes rate and other constants at current v.
:Call once from HOC to initialize inf at resting v.
: "kis" fast inactivation potassium channel - activation and inactivation
kis_a_inf = kis_m(v)
kis_i_inf = kis_h(v)
kis_a_tau = kis_mt(v)
kis_i_tau = kis_ht(v)
}
: Make these as functions so we can view them from hoc, although this
: may slow things down a bit
FUNCTION kis_m(v (mV)) { : ikis activation
kis_m = 1/(1+exp(-(v-kis_avh)/23.7 (mV)))
}
FUNCTION kis_h(v (mV)) { : ikis inactivation
kis_h = 1/(1+exp((v-kis_ivh)/9 (mV)))
}
FUNCTION kis_mt(v (mV)) (ms) { : ikis activation tau
LOCAL x
x = 0.15*exp((v-kis_avh)/10 (mV)) + 0.3*exp(-(v-kis_avh)/10 (mV))
x = 0.5 + (1.0 /x)
kis_mt = (x * 1.0 (ms))/q10
}
FUNCTION kis_ht(v (mV)) (ms) { : ikis inactivation tau
kis_ht = 200 (ms)
}

109
cnmodel/mechanisms/klt.mod Normal file
View File

@@ -0,0 +1,109 @@
TITLE klt.mod The low threshold conductance of cochlear nucleus neurons
COMMENT
NEURON implementation of Jason Rothman's measurements of VCN conductances.
This file implements the low threshold potassium current found in several brainstem
nuclei of the auditory system, including the spherical and globular bushy cells
(Manis and Marx, 1991; Rothman and Manis, 2003a,b) and octopus cells (Bal and
Oertel, 2000) of the ventral cochlear nucleus, principal cells of the medial
nucleus of the trapzoid body (Brew and Forsythe, 1995, Wang and Kaczmarek,
1997) and neurons of the medial superior olive. The current is likely mediated by
heteromultimers of Kv1.1 and Kv1.2 potassium channel subunits. The specific
implementation is described in Rothman and Manis, J. Neurophysiol. 2003, in the
appendix. Measurements were made from isolated neurons from adult guinea pig,
under reasonably stringent voltage clamp conditions. The measured current is
sensitive to the mamba snake toxin dendrotoxin-I.
Similar conductrances are found in the homologous neurons of the avian auditory
system (Reyes and Rubel; Zhang and Trussell; Rathouz and Trussell), and the
conductance described here, in the absence of more detailed kinetic measurements
, is probably suitable for use in modeling that system.
Original implementation by Paul B. Manis, April (JHU) and Sept, (UNC)1999.
File split implementation, February 28, 2004.
Contact: pmanis@med.unc.edu
ENDCOMMENT
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
(nA) = (nanoamp)
}
NEURON {
THREADSAFE
SUFFIX klt
USEION k READ ek WRITE ik
RANGE gbar, gklt, ik, q10g
GLOBAL winf, zinf, wtau, ztau
}
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
PARAMETER {
v (mV)
dt (ms)
gbar = 0.01592 (mho/cm2) <0,1e9>
zss = 0.5 <0,1> : steady state inactivation of glt
q10tau = 3.0
q10g = 2.0
}
STATE {
w z
}
ASSIGNED {
celsius (degC) : model is defined on measurements made at room temp in Baltimore
ik (mA/cm2)
ek (mV)
gklt (mho/cm2)
winf zinf
wtau (ms) ztau (ms)
qg () : computed q10 for gnabar based on q10g
q10 ()
}
LOCAL wexp, zexp
BREAKPOINT {
SOLVE states METHOD cnexp
gklt = qg*gbar*(w^4)*z
ik = gklt*(v - ek)
}
INITIAL {
qg = q10g^((celsius-22)/10 (degC))
q10 = q10tau^((celsius - 22)/10 (degC)) : if you don't like room temp, it can be changed!
rates(v)
w = winf
z = zinf
}
DERIVATIVE states { :Computes state variables m, h, and n
rates(v) : at the current v and dt.
w' = (winf - w)/wtau
z' = (zinf - z)/ztau
}
PROCEDURE rates(v (mV)) { :Computes rate and other constants at current v.
:Call once from HOC to initialize inf at resting v.
winf = (1 / (1 + exp(-(v + 48) / 6 (mV))))^0.25
zinf = zss + ((1-zss) / (1 + exp((v + 71) / 10 (mV))))
wtau = (100 (ms)/ (6*exp((v+60) / 6 (mV)) + 16*exp(-(v+60) / 45 (mV)))) + 1.5
wtau = wtau/q10
ztau = (1000 (ms)/ (exp((v+60) / 20 (mV)) + exp(-(v+60) / 8 (mV)))) + 50
ztau = ztau/q10
}

View File

@@ -0,0 +1,94 @@
: HH TEA-sensitive Purkinje potassium current
: Created 8/5/02 - nwg
NEURON {
THREADSAFE
SUFFIX kpkj
USEION k READ ek WRITE ik
RANGE gbar, ik, gk
GLOBAL minf, hinf, mtau, htau
}
UNITS {
(mV) = (millivolt)
(mA) = (milliamp)
}
PARAMETER {
v (mV)
gbar = .004 (mho/cm2)
mivh = -24 (mV)
mik = 15.4 (mV)
mty0 = .00012851 (s)
mtvh1 = 100.7 (mV)
mtk1 = 12.9 (mV)
mtvh2 = -56.0 (mV)
mtk2 = -23.1 (mV)
hiy0 = .31
hiA = .78
hivh = -5.802 (mV)
hik = 11.2 (mV)
ek (mV)
}
ASSIGNED {
gk (mho/cm2)
ik (mA/cm2)
minf
mtau (ms)
hinf
htau (ms)
}
STATE {
m
h
}
INITIAL {
rates(v)
m = minf
h = hinf
}
BREAKPOINT {
SOLVE states METHOD cnexp
gk = gbar * m^3 * h
ik = gk * (v - ek)
}
DERIVATIVE states {
rates(v)
m' = (minf - m) / mtau
h' = (hinf - h) / htau
}
PROCEDURE rates( Vm (mV)) {
LOCAL v
v = Vm + 11 (mV) : Account for Junction Potential
minf = 1/(1+exp(-(v-mivh)/mik))
mtau = mtau_func(v)
hinf = hiy0 + hiA/(1+exp((v-hivh)/hik))
htau = 1000 * htau_func(v)
}
FUNCTION mtau_func (v (mV)) (ms) {
if (v < -35 (mV)) {
mtau_func = (1000)*(3.4225e-5+.00498*exp(-v/-28.29 (mV)))*3 (s)
} else {
mtau_func = (1000)*(mty0 + 1(s)/(exp((v+mtvh1)/mtk1)+exp((v+mtvh2)/mtk2)))
}
}
FUNCTION htau_func(Vm (mV)) (ms) {
if ( Vm > 0) {
htau_func = (1000)*(0.0012 (s) + 0.0023(s)*exp(-0.141 *Vm / 1 (mV)))
} else {
htau_func = (1000)*(1.2202e-05(s) + .012(s) * exp(-((Vm-(-56.3 (mV)))/49.6 (mV))^2))
}
}

View File

@@ -0,0 +1,67 @@
: HH Low TEA-sensitive Purkinje potassium current
: Created 8/7/02 - nwg
NEURON {
THREADSAFE
SUFFIX kpkj2
USEION k READ ek WRITE ik
RANGE gbar, ik, gk
GLOBAL ninf, ntau
}
UNITS {
(mV) = (millivolt)
(mA) = (milliamp)
}
PARAMETER {
v (mV)
gbar = .002 (mho/cm2)
nivh = -24 (mV)
nik = 20.4 (mV)
ek (mV)
}
ASSIGNED {
gk (mho/cm2)
ik (mA/cm2)
ninf (1)
ntau (ms)
}
STATE {
n
}
INITIAL {
rates(v)
n = ninf
}
BREAKPOINT {
SOLVE states METHOD cnexp
gk = gbar * n^4
ik = gk * (v - ek)
}
DERIVATIVE states {
rates(v)
n' = (ninf - n) / ntau
}
PROCEDURE rates(Vm (mV)) {
LOCAL v
v = Vm + 11 : Account for Junction Potential
ninf = 1/(1+exp(-(v-nivh)/nik))
ntau = 1000 * ntau_func(v)
}
FUNCTION ntau_func(v (mV)) (ms) {
if (v < -20) {
ntau_func = 0.000688 (ms) + 1 (ms)/(exp((v+64.2 (mV))/6.5 (mV))+exp((v-141.5 (mV))/-34.8 (mV)))
} else {
ntau_func = 0.00016 (ms) + 0.0008 (ms) *exp(-0.0267 * v /(1 (mV)))
}
}

View File

@@ -0,0 +1,63 @@
: HH Slow TEA-insensitive Purkinje potassium current
: Created 8/7/02 - nwg
NEURON {
THREADSAFE
SUFFIX kpkjslow
USEION k READ ek WRITE ik
RANGE gbar, ik, gk
GLOBAL ninf, ntau
}
UNITS {
(mV) = (millivolt)
(mA) = (milliamp)
}
PARAMETER {
v (mV)
gbar = 0.004 (mho/cm2)
nivh = -16.5 (mV)
nik = 18.4 (mV)
ek (mV)
}
ASSIGNED {
gk (mho/cm2)
ik (mA/cm2)
ninf
ntau (ms)
}
STATE {
n
}
INITIAL {
rates(v)
n = ninf
}
BREAKPOINT {
SOLVE states METHOD cnexp
gk = gbar * n^4
ik = gk * (v - ek)
}
DERIVATIVE states {
rates(v)
n' = (ninf - n) / ntau
}
PROCEDURE rates(Vm (mV)) {
LOCAL v
v = Vm + 11 : Account for Junction Potential
ninf = 1/(1+exp(-(v-nivh)/nik))
ntau = 1000 * ntau_func(v)
}
FUNCTION ntau_func(v (mV)) (ms){
ntau_func = 0.000796 (ms) + 1 (ms)/(exp((v+73.2 (mV))/11.7 (mV))+exp((v-306.7 (mV))/-74.2(mV)))
}

View File

@@ -0,0 +1,111 @@
TITLE Slow Ca-dependent potassium current
:
: Ca++ dependent K+ current IC responsible for slow AHP
: Differential equations
:
: Model based on a first order kinetic scheme
:
: <closed> + n cai <-> <open> (alpha,beta)
:
: Following this model, the activation fct will be half-activated at
: a concentration of Cai = (beta/alpha)^(1/n) = cac (parameter)
:
: The mod file is here written for the case n=2 (2 binding sites)
: ---------------------------------------------
:
: This current models the "slow" IK[Ca] (IAHP):
: - potassium current
: - activated by intracellular calcium
: - NOT voltage dependent
:
: A minimal value for the time constant has been added
:
: Ref: Destexhe et al., J. Neurophysiology 72: 803-818, 1994.
:
: Modifications by Arthur Houweling for use in MyFirstNEURON
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
NEURON {
THREADSAFE
SUFFIX kpksk
USEION k READ ek WRITE ik
USEION ca READ cai
RANGE m_inf, tau_m, gbar, gk
GLOBAL beta, cac
RANGE ik
}
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
(molar) = (1/liter)
(mM) = (millimolar)
}
PARAMETER {
v (mV)
celsius (degC)
dt (ms)
ek (mV)
cai (mM)
gbar = .01 (mho/cm2)
beta = 0.002 (1/ms) : backward rate constant
cac = 0.010 (mM) : middle point of activation fct
taumin = 0.1 (ms) : minimal value of the time cst
}
STATE {
m
}
ASSIGNED {
ik (mA/cm2)
gk (mho/cm2)
m_inf
tau_m (ms)
tadj ()
}
BREAKPOINT {
SOLVE states :METHOD euler
gk = gbar * m*m
ik = gk * (v - ek)
}
:DERIVATIVE states {
: evaluate_fct(v,cai)
:
: m'= (m_inf-m) / tau_m
:}
PROCEDURE states() {
evaluate_fct(v,cai)
m= m + (1-exp(-dt/tau_m))*(m_inf-m)
}
INITIAL {
:
: activation kinetics are assumed to be at 22 deg. C
: Q10 is assumed to be 3
:
tadj = 3 ^ ((celsius-22.0)/10 (degC))
evaluate_fct(v,cai)
m = m_inf
}
PROCEDURE evaluate_fct(v(mV),cai(mM)) { LOCAL car
car = (cai/cac)^2
m_inf = car / ( 1 + car )
tau_m = 1 / beta / (1 + car) / tadj
if(tau_m < taumin) { tau_m = taumin } : min value of time cst
}

View File

@@ -0,0 +1,32 @@
TITLE passive (leak) membrane channel
UNITS {
(mV) = (millivolt)
(mA) = (milliamp)
}
NEURON {
THREADSAFE
SUFFIX leak
NONSPECIFIC_CURRENT i
RANGE gbar, erev, i
}
PARAMETER {
v (mV)
gbar = 0.001 (mho/cm2)
erev = -65 (mV)
}
ASSIGNED {
i (mA/cm2)
}
INITIAL {
}
BREAKPOINT {
i = gbar*(v - erev)
}

View File

@@ -0,0 +1,379 @@
TITLE Multisite synapse
COMMENT
-----------------------------------------------------------------------------
Multi-site synapse with independent release sites. Each site operates independently
and releases a vesicle upon presynaptic depolarization with a probability
determined by the history of activity, using the Dittman and Regehr (1998, 2000)
model.
Revised from coh2.mod, coh3.mod, and coh4.mod.
The Dittman and Regeher (1998, 2000) release model with
facilitation closely fits Auditory Nerve data from mouse over
a wide range of frequencies.
The model DOES NOT include the postsynaptic receptors or desensitization, since
these should be treated separately (couple XMTR to an AMPA receptor model,
such as the Trussell-Raman model)
Range variables:
nZones: is the number of active zones simulated in this calyx model. Each zone
can be connected to a separate PSD.
F (0.4): The base release probability
k0 (1/1.75): /s, baseline recovery rate from depletion (slow rate)
kmax (1/0.025): /s, maximal recovery rate from depletion (fast rate)
td (0.05) : time constant for fast calcium-dependent recovery, sec
kd (0.7) : affinity of fast recovery process for calcium sensor
kf (0.5) : affinity of facilitation process
tf (0.01) : rate of facilitation process (slow) seconds
dD (0.02): calcium that drives recovery (ca influx per AP)
dF (0.02): calcium that drives facilitation
Added latency and variable delay (latstd, latency standard deviation in msec)
around the mean spike time. 4/5/2011 pbm.
Version 4 uses a log-normal distribution to determine release latencies.
The calculation is built-in instead of being passed through an array.
The lognormal distribution describes the individual vesicle release time
course at this synapse as measured by Isaacson and Walmsley, 1996. Note that
they used a gamma distribution in some plots, but the lognormal distribution
seems to fit their published data at least as well.
The parameters of the distribution, as well as the release latency,
are controlled by an exponential function whose parameters are initialized at
run time.
10/19/2011 Paul B. Manis, UNC Chapel Hill
ENDCOMMENT
DEFINE MAX_ZONES 1000 : maximum number of zones in this model
DEFINE EVENT_N 10000 : number of entries in the Event Distribution (e.g., as sampled)
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
NEURON {
THREADSAFE
POINT_PROCESS MultiSiteSynapse
RANGE F, k0, kmax, taud, kd, tauf, kf
RANGE nZones, multisite, rseed, latency, latstd, debug
RANGE dD, dF, XMTR, glu, CaDi, CaFi
RANGE Fn, Dn
RANGE TTotal
RANGE nRequests, nReleases
RANGE Identifier : just a number so we can report which instance is active
RANGE tau_g, amp_g
: Distributions for stochastic release and testing (Sept, Oct, 2011):
RANGE EventLatencies, EventTime : returns the first EVENT_N latencies and absolute times at which they were used
RANGE ev_index : count in the EventLatencies (in case we are "short")
: parameters for latency shift during repetitive stimulation (Oct 19, 2011)
RANGE Dep_Flag : Depression flag (0 to remove depression; 1 to allow DKR control of facilitation and depression)
RANGE Lat_Flag, Lat_t0, Lat_A0, Lat_tau : Lat_Flag = 0 means fixed latency (set by "latency" above)
: otherwise, latency = latency for t < Lat_t0
: latency = latency + Lat_A0*(1-exp(-(t-Lat_t0)/Lat_tau))
: parameters for lognorm distribution shift during repetitive stimulation (Oct 19, 2011)
RANGE LN_Flag, LN_t0, LN_A0, LN_tau : LN_Flag = 0 means fixed sigma as well
: otherwise, sigma = latstd for t < LN_t0
: sigma = latstd + LN_A0*(1-exp(-(t-LN_t0)/LN_tau))
: externally assigned pointers to RNG functions
POINTER uniform_rng : for deciding the number of active synapses when multisite==0
}
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
(mM) = (milli/liter)
(uM) = (micro/liter)
}
PARAMETER {
dt (ms)
amp_g = 1.0 (mM) : amplitude of transmitter pulse
tau_g = 0.5 (ms) : duration of transmitter pulse
dD = 0.02 (1) : calcium influx driving recovery per AP
dF = 0.02 (1) : calcium influx driving facilitation per AP
F = 0.5 (1) : basal facilitation
k0 = 0.0005714(/ms) : slow recovery from depletion (1.0/1.75)
kmax = 0.040 (/ms) : fast recovery from depletion (1/0.025)
taud = 50.0 (ms) : time constant for fast calcium dependent recovery
kd = 0.7 (1) : affinity of fast recovery process for calcium sensor
tauf = 10.0 (ms) : rate of slow facilitation process
kf = 0.5 (1) : affinity of slow facilitation process
: taus = 1 (ms) : defined by DKR but not used here
: ks = 0.5 (1)
: glu = 1 (mM)
rseed (1) : random number generator seed (for SCOP module)
latency = 0.0 (ms)
latstd = 0.0 (ms)
: Time course of latency shift in release during repetitive stimulation
Lat_Flag = 0 (1) : 0 means fixed latency, 1 means lognormal distribution
Lat_t0 = 0.0 (ms) : minimum time since simulation start before changes in latency are calculated
Lat_A0 = 0.0 (ms) : size of latency shift from t0 to infinity
Lat_tau = 100.0 (ms) : rate of change of latency shift (from fit of a+b(1-exp(-t/tau)))
: Statistical control of log-normal release shape over time during repetitive stimulation
LN_Flag = 0 (1) : 0 means fixed values for all time
LN_t0 = 0.0 (ms) : : minimum time since simulation start before changes in distribution are calculated
LN_A0 = 0.0 (ms) : size of change in sigma from t0 to infinity
LN_tau = 100.0 (ms) : rate of change of sigma over time (from fit of a+b*(1-exp(-t/tau)))
: control flags - if debug is 1, show all, if 2, just "some"
debug = 0
Identifier = 0
Dep_Flag = 1 (1) : 1 means use depression calculations; 0 means always set release probability to F
}
ASSIGNED {
: Externally set assignments
nZones (1) : number of zones in the model
multisite (1) : whether zones are modeled individually (1) or as a single, variable-amplitude zone (0)
nRequests (1)
nReleases (1)
EventLatencies[EVENT_N] (0)
EventTime[EVENT_N] (0)
tRelease[MAX_ZONES] (ms) : time of last release
: Internal calculated variables
Fn (1)
Dn (1)
CaDn (1)
CaFn (1)
CaDi (1)
CaFi (1)
eta (1)
tSpike (ms) : time of last spike
tstep(ms)
TTotal(0)
tspike (ms)
latzone (ms)
vesicleLatency (ms)
sigma (ms)
gindex (0)
ev_index (0)
scrand (0)
uniform_rng
}
: Function prototypes needed to assign RNG function pointers
VERBATIM
double nrn_random_pick(void* r);
void* nrn_random_arg(int argpos);
ENDVERBATIM
: Return a pick from uniform distribution.
: (distribution parameters are set externally)
FUNCTION rand_uniform() {
VERBATIM
_lrand_uniform = nrn_random_pick(_p_uniform_rng);
ENDVERBATIM
}
: Function to allow RNG to be externally set
PROCEDURE setUniformRNG() {
VERBATIM
{
void** pv = (void**)(&_p_uniform_rng);
*pv = nrn_random_arg(1);
}
ENDVERBATIM
}
STATE {
XMTR[MAX_ZONES] (mM) : per-zone neurotransmitter concentration
N_ACTIVE[MAX_ZONES] (1) : number of zones actively releasing
}
INITIAL {
: VERBATIM
: fprintf(stdout, "MultiSiteSynapse: Calyx #%d Initialized with Random Seed: %d\n", (int)Identifier, (int)rseed);
: ENDVERBATIM
TTotal = 0
nRequests = 0
nReleases = 0
set_seed(rseed)
tSpike = -1e9
latzone = 0.0
sigma = 0.0
vesicleLatency = 0.0
gindex = 0
ev_index = 0
scrand = 0.0
CaDi = 1.0
CaFi = 0.0
CaDn = 1.0
CaFn = 0.0
Fn = F
Dn = 1.0
FROM i = 0 TO (nZones-1) {
XMTR[i] = 0
N_ACTIVE[i] = 1
tRelease[i] = tSpike
}
update_dkr(t-tSpike)
}
BREAKPOINT {
SOLVE release
}
LOCAL tz, n_relzones, amp
PROCEDURE release() {
: Once released, the transmitter packet has a defined smooth time course in the "cleft"
: represented by the product of rising and falling exponentials.
: update glutamate in cleft
if (multisite == 1) {
: Update glutamate waveform for each active release zone
n_relzones = nZones
}
else {
: Update aggregate glutamate waveform for only the first release zone
n_relzones = 1
}
FROM i = 0 TO (nZones-1) { : for each zone in the synapse
if (t >= tRelease[i] && t < tRelease[i] + 5.0 * tau_g) {
tz = t - tRelease[i] : time since onset of release
: calculate glutamate waveform (Xie & Manis 2013 Supplementary Eq. 1)
XMTR[i] = amp_g * (1.0-exp(-tz/(tau_g/3.0))) * exp(-(tz-(tau_g/3.0))/tau_g)
}
else {
XMTR[i] = 0
}
}
}
PROCEDURE update_dkr(tstep (ms)) {
: update the facilitation and depletion variables
: from the Dittman-Regehr model.
: Updates are done with each new presynaptic AP event.
if(tstep > 0.0) {
CaDi = CaDi + dD
CaFi = CaFi + dF
CaDn = CaDi * exp (-tstep/taud)
CaFn = CaFi * exp (-tstep/tauf)
eta = (kd/CaDi + 1.0)/(kd/CaDi + exp(-tstep/taud))
eta = eta^(-(kmax-k0)*taud)
Dn = 1.0-(1.0-(1.0-Fn)*Dn)*exp(-k0*tstep)*eta
Fn = F + (1.0-F)/(1.0+kf/CaFn)
CaDi = CaDn
CaFi = CaFn
}
if (Dep_Flag == 0) { : no depression
Dn = 1.0 : set to 1
Fn = F : set to initial value to set release probability constant
}
: VERBATIM
: if (debug >= 2 ){
: fprintf(stdout, "update start t = %f ts=%f: F=%7.2f CaDi = %g CaFi = %g\n", \
: t, tstep, F, CaDi, CaFi);
: fprintf(stdout, " vars: taud=%g: tauf=%g kd = %g kmax= %g\n", taud, tauf, kd, kmax);
: fprintf(stdout, " CaDi = %g CaFi = %g\n", CaDi, CaFi);
: fprintf(stdout, " CaDn = %g CaFn = %g\n", CaDn, CaFn);
: fprintf(stdout, " eta: %g\n", eta);
: fprintf(stdout, " Fn=%7.2f Dn: %7.2f CaDi = %g CaFi = %g,\n", \
: Fn, Dn, CaDi, CaFi);
: }
: ENDVERBATIM
}
NET_RECEIVE(weight) {
: A spike has been received; process synaptic release
: First, update DKR state to determine new release probability
update_dkr(t - tSpike)
tSpike = t : save the time of spike
TTotal = 0 : reset total transmitter from this calyx for each release
nRequests = nRequests + 1 : count the number of inputs that we received
: Next, process vesicle release using new release probability
if (multisite == 1) {
release_multisite()
}
else {
release_singlesite()
}
}
PROCEDURE release_multisite() {
: Vesicle release procedure for multi-site terminal.
: Loops over multiple zones using release probability Fn*Dn to decide whether
: each site will release, and selecting an appropriate release latency.
: The synapse can release one vesicle per AP per zone, with a probability 0<p<1.
: The probability, p, is defined by the time evolution of a Dittman-Regher model
: of release, whose parameters are set during initialization.
: The vesicle can be released over a variable time interval defined by a lognormal
: distribution, plus a fixed latency.
FROM i = 0 TO (nZones-1) { : for each zone in the synapse
if(tRelease[i] < t) {
scrand = scop_random()
: look to make release if we have not already (single vesicle per zone per spike)
: check for release and release probability - assume infinite supply of vesicles
if (scrand < Fn*Dn) {
nReleases = nReleases + 1 : count number of releases since inception
TTotal = TTotal + 1 : count total releases this trial.
: Compute the median latency for this vesicle.
if (Lat_Flag == 0 || t < Lat_t0) {
vesicleLatency = latency : use a fixed value
}
else {
vesicleLatency = latency + Lat_A0*(1-exp(-(t-Lat_t0)/Lat_tau)) : latency rises during train
}
: Now compute distribution around that latency
: if LN_Flag is 1, we adjust the sigma values over time, otherwise we just use a fixed value.
: The following math applies:
: lognormal dist = exp(X), where X = gaussian(mu, sigma).
: The median of the lognormal dist. is e^mu; Note that if mu is 0, then the median is 1.0
: The mode of the lognormal dist is e^(u-sigma^2).
: Note that normrand is a SCoP function, see http://cns.iaf.cnrs-gif.fr/files/scopman.html
if (LN_Flag == 0 || t < LN_t0) { : use fixed sigma in lognormal distribution for all time.
if (latstd > 0.0) {
latzone = normrand(0.0, latstd) : set a latency for the zone with one draw from the distribution
latzone = exp(latzone) - 1.0 + vesicleLatency : the latency should not be too short....
}
else {
latzone = vesicleLatency : fixed value
}
}
else {
sigma = latstd + LN_A0*(1-exp(-(t-LN_t0)/LN_tau)) : time-dependent std shift
latzone = normrand(0.0, sigma)
latzone = exp(latzone)-1.0 + vesicleLatency
}
if (latzone < 0.0) { : this is to be safe... must have causality.
latzone = 0.0
}
if (ev_index < EVENT_N) { : save event distribution list for verification
EventLatencies[ev_index] = latzone
EventTime[ev_index] = t
ev_index = ev_index + 1
}
: release time for this event
tRelease[i] = t + latzone
}
}
}
}
PROCEDURE release_singlesite() {
LOCAL pr
tRelease[0] = t
pr = Fn * Dn
FROM i = 0 TO (nZones-1) {
if (rand_uniform() < pr) {
TTotal = TTotal + 1 : count total releases this trial.
}
}
: Tell PSD to multiply its final current by the number of active zones
N_ACTIVE[0] = TTotal
printf("Release: %f\n", TTotal)
}

100
cnmodel/mechanisms/na.mod Normal file
View File

@@ -0,0 +1,100 @@
TITLE na.mod A sodium channel for cochlear nucleus neurons
COMMENT
NEURON implementation of Jason Rothman's measurements of VCN conductances.
This file implements the average brain sodium current used in the Rothman model.
In the absence of direct measurements in the VCN, this is a fair assumption.
The model differs from the one used in Rothman et al, (1993) in that the steep
voltage dependence of recovery from inactivation in that model is missing. This
may affect the refractory period. To use the other model, use najsr.mod instead.
Original implementation by Paul B. Manis, April (JHU) and Sept, (UNC)1999.
File split implementaiton, April 1, 2004.
Contact: pmanis@med.unc.edu
Modifed implementation; includes all temperature scaling, passes modlunit
7/10/2014 pbm
ENDCOMMENT
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
(nA) = (nanoamp)
}
NEURON {
THREADSAFE
SUFFIX na
USEION na READ ena WRITE ina
RANGE gbar, gna, ina
GLOBAL hinf, minf, htau, mtau
}
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
PARAMETER {
v (mV)
dt (ms)
ena (mV)
gbar = 0.07958 (mho/cm2) <0,1e9>
q10tau = 3.0
q10g = 2.0
}
STATE {
m h
}
ASSIGNED {
celsius (degC) : model is defined on measurements made at room temp in Baltimore
ina (mA/cm2)
gna (mho/cm2)
minf hinf
mtau (ms) htau (ms)
qg () : computed q10 for gnabar based on q10g
q10 ()
}
LOCAL mexp, hexp
BREAKPOINT {
SOLVE states METHOD cnexp
gna = qg*gbar*(m^3)*h
ina = gna*(v - ena)
}
INITIAL {
qg = q10g^((celsius-22)/10 (degC))
q10 = q10tau^((celsius - 22)/10 (degC)) : if you don't like room temp, it can be changed!
rates(v)
m = minf
h = hinf
}
DERIVATIVE states { :Computes state variables m, h, and n
rates(v) : at the current v and dt.
m' = (minf - m)/mtau
h' = (hinf - h)/htau
}
PROCEDURE rates(v (mV)) { :Computes rate and other constants at current v.
:Call once from HOC to initialize inf at resting v.
: average sodium channel
minf = 1 / (1+exp(-(v + 38) / 7 (mV)))
hinf = 1 / (1+exp((v + 65) / 6 (mV)))
mtau = (10 (ms)/ (5*exp((v+60) / 18 (mV)) + 36*exp(-(v+60) / 25 (mV)))) + 0.04
mtau = mtau/q10
htau = (100 (ms)/ (7*exp((v+60) / 11 (mV)) + 10*exp(-(v+60) / 25 (mV)))) + 0.6
htau = htau/q10
}

103
cnmodel/mechanisms/nacn.mod Executable file
View File

@@ -0,0 +1,103 @@
TITLE nacn.mod A sodium conductance for a ventral cochlear nucleus neuron model
COMMENT
NEURON implementation of Jason Rothman's measurements of VCN conductances.
This file implements the average brain sodium current used in the Rothman model.
In the absence of direct measurements in the VCN, this is a fair assumption.
The model differs from the one used in Rothman et al, (1993) in that the steep
voltage dependence of recovery from inactivation in that model is missing. This
may affect the refractory period. To use the other model, use najsr.mod instead.
Original implementation by Paul B. Manis, April (JHU) and Sept, (UNC)1999.
File split implementaiton, April 1, 2004.
Does not pass modlunit.
Should work at 22C and scales by Rothman and Manis, 2003c for temperature
Contact: pmanis@med.unc.edu
ENDCOMMENT
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
(nA) = (nanoamp)
}
NEURON {
THREADSAFE
SUFFIX nacn
USEION na READ ena WRITE ina
RANGE gbar, gna, ina
GLOBAL hinf, minf, htau, mtau
}
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
PARAMETER {
v (mV)
celsius (degC) : 22 (degC) model is defined on measurements made at room temp in Baltimore
dt (ms)
ena (mV)
gbar = 0.07958 (mho/cm2) <0,1e9>
q10tau = 3.0 : q10 for rates
}
STATE {
m h
}
ASSIGNED {
ina (mA/cm2)
gna (mho/cm2)
minf hinf
mtau (ms) htau (ms)
q10 ()
}
LOCAL mexp, hexp
BREAKPOINT {
SOLVE states METHOD cnexp
gna = gbar*(m^3)*h
ina = gna*(v - ena)
}
UNITSOFF
INITIAL {
rates(v)
m = minf
h = hinf
}
DERIVATIVE states { :Computes state variables m, h, and n
rates(v) : at the current v and dt.
m' = (minf - m)/mtau : m = m + mexp*(minf-m)
h' = (hinf - h)/htau : h = h + hexp*(hinf-h)
}
LOCAL qt
PROCEDURE rates(v) { :Computes rate and other constants at current v.
:Call once from HOC to initialize inf at resting v.
q10 = q10tau^((celsius - 22)/10) : if you don't like room temp, it can be changed!
: average sodium channel
minf = 1 / (1+exp(-(v + 38) / 7))
hinf = 1 / (1+exp((v + 65) / 6))
mtau = (10 / (5*exp((v+60) / 18) + 36*exp(-(v+60) / 25))) + 0.04
mtau = mtau/q10
htau = (100 / (7*exp((v+60) / 11) + 10*exp(-(v+60) / 25))) + 0.6
htau = htau/q10
}
UNITSON

View File

@@ -0,0 +1,138 @@
TITLE nacn.mod A sodium conductance for a ventral cochlear nucleus neuron model
COMMENT
NEURON implementation of Jason Rothman's measurements of VCN conductances.
This file implements a modified version of the average brain sodium current
used in the Rothman and Manis 2003 models.
The model differs from the one used in Rothman et al, (1993) in that the steep
voltage dependence of recovery from inactivation in that model is missing. This
may affect the refractory period. To use the other model, use jsrnaf.mod instead.
Original implementation by Paul B. Manis, April 1999 (JHU) and Sept 1999 (UNC-CH).
File split implementation, April 1, 2004.
Version nacncoop implements a cooperative sodium channel model built on the kinetics
of the original nacn model (R&M2003c). The motivation is to make a sodium channel with
faster activation kinetics, by introducing cooperativity between a subset of channels.
The model is based on concepts and implementation similar to Oz et al.
J.Comp. Neurosci. 39: 63, 2015, and Huang et al., PloSOne 7:e37729, 2012.
The cooperative channels are modeled with the same kinetics as the non-cooperative
channels, but are treated as a separate subset (fraction: p). The cooperativity is
introduced by shifting the voltage "seen" by the channels by KJ*m^3*h, which moves
the channels to a faster regime (essentially, they experience a depolarized membrane
potential that depends on their current gating state, relative to the main population
of channels).
A subpopulation of Na channels (p [0..1]) experiences a small voltage-dependent shift
in the gating kinetics. The shift is determined by KJ
This version does not have all the temperature scaling. Does not pass modlunit.
Should work at 22C, appears to work at other temperatures ok.
Contact: pmanis@med.unc.edu
ENDCOMMENT
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
(nA) = (nanoamp)
}
NEURON {
THREADSAFE
SUFFIX nacncoop
USEION na READ ena WRITE ina
RANGE gbar, gna, ina, p, KJ
RANGE vsna : voltage shift parameter
GLOBAL hinf, minf, htau, mtau, hinf2, minf2, htau2, mtau2
}
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
PARAMETER {
v (mV)
celsius (degC) : 22 (degC) model is defined at room temp in Baltimore
dt (ms)
ena (mV)
gbar = 0.07958 (mho/cm2) <0,1e9>
q10 = 3.0 : q10 for rates
p = 0.0 (): fraction of cooperative channels (0-1)
KJ = 0 (mV) : coupling strength between cooperative channels (0-1000mV is usable range)
: setting either KJ = 0 or p = 0 will remove cooperativity.
vsna = 0 (mV)
}
STATE {
m h m2 h2
}
ASSIGNED {
ina (mA/cm2)
gna (mho/cm2)
vNa (mV) : shifted V for cooperative behavior
minf hinf minf2 hinf2
mtau (ms) htau (ms) mtau2 (ms) htau2 (ms)
}
LOCAL mexp, hexp, mexp2, hexp2
BREAKPOINT {
SOLVE states METHOD cnexp
gna = gbar*(p*(m2^3*h2) + (1.-p)*(m^3)*h)
ina = gna*(v - ena)
}
UNITSOFF
INITIAL {
rates(v)
m = minf
h = hinf
m2 = minf2
h2 = hinf2
vNa = v + vsna + KJ*m^3*h
}
DERIVATIVE states { :Computes state variables m, h, and n
rates(v) : at the current v and dt.
m' = (minf - m)/mtau
h' = (hinf - h)/htau
m2' = (minf2 - m2)/mtau2
h2' = (hinf2 - h2)/htau2
vNa = v + vsna + KJ*m^3*h : note addition of vsna shift here so that we do not add it in rates
}
LOCAL qt
PROCEDURE rates(v) { :Computes rate and other constants at current v.
:Call once from HOC to initialize inf at resting v.
qt = q10^((celsius - 22)/10) : if you don't like room temp, it can be changed!
: average sodium channel
minf = 1 / (1+exp(-(v + 38 + vsna) / 7))
hinf = 1 / (1+exp((v + 65 + vsna) / 6))
mtau = (10 / (5*exp((v + 60 + vsna) / 18) + 36*exp(-(v + 60+vsna) / 25))) + 0.04
mtau = mtau/qt
htau = (100 / (7*exp((v + 60 + vsna) / 11) + 10*exp(-(v + 60 + vsna) / 25))) + 0.6
htau = htau/qt
: cooperative group of channels
minf2 = 1 / (1+exp(-(vNa + 38) / 7))
hinf2 = 1 / (1+exp((vNa + 65) / 6))
mtau2 = (10 / (5*exp((vNa+60) / 18) + 36*exp(-(vNa+60) / 25))) + 0.04
mtau2 = mtau2/qt
htau2 = (100 / (7*exp((vNa+60) / 11) + 10*exp(-(vNa+60) / 25))) + 0.6
htau2 = htau2/qt
}
UNITSON

130
cnmodel/mechanisms/nap.mod Executable file
View File

@@ -0,0 +1,130 @@
TITLE nap.mod Persistent sodium conductance
COMMENT
Persistent sodium current from deSchutter and Bower, J. Neurophys.
71:375, 1994.
2/10/02, 10/10/2014. P. Manis.
ENDCOMMENT
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
}
NEURON {
THREADSAFE
SUFFIX nap
USEION na READ ena WRITE ina
RANGE nap_inf, nap_tau, napi_inf, napi_tau
RANGE gbar, gnap
RANGE nap_A, nap_B, nap_C, nap_D, nap_E, nap_F, nap_G, nap_H
}
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
PARAMETER {
v (mV)
celsius (degC)
dt (ms)
ena (mV) : = 50.0 (mV)
gbar = 0.00001 (mho/cm2) <0,1e9>
q10tau = 3.0
q10g = 2.0
nap_shift = 0 (mV)
nap_A = 200 (/ms): parameters from Bowers et al.
nap_B = 1
nap_C = -18 (mV)
nap_D = -16 (mV)
nap_E = 25 (/ms)
nap_F = 1
nap_G = 58 (mV)
nap_H = 8 (mV)
}
STATE {
nap napi
}
ASSIGNED {
gnap (mho/cm2)
ina (mA/cm2)
nap_inf
nap_tau (ms)
nap_tau1 (/ms)
nap_tau2 (/ms)
napi_inf
napi_tau (ms)
napi_tau1 (/ms)
napi_tau2 (/ms)
qg () : computed q10 for gnabar based on q10g
q10 ()
}
BREAKPOINT {
SOLVE states METHOD cnexp
gnap = gbar*nap*nap*nap*napi
ina = gnap*(v-ena)
}
INITIAL {
qg = q10g^((celsius-22)/10 (degC))
q10 = q10tau^((celsius - 22)/10 (degC)) : if you don't like room temp, it can be changed!
rates(v)
nap = nap_inf
napi = napi_inf
}
DERIVATIVE states {
rates(v)
nap' = (nap_inf - nap) / nap_tau
napi' = (napi_inf - napi) / napi_tau
}
PROCEDURE rates(v (mV)) { :Computes rate and other constants at current v.
:Call once from HOC to initialize inf at resting v.
LOCAL x
: "nap" persistent sodium system
nap_inf = na_p(v + nap_shift)
nap_tau1 = nap_A/(nap_B + exp((v + nap_shift + nap_C)/nap_D))
nap_tau2 = nap_E/(nap_F + exp((v + nap_shift + nap_G)/nap_H))
nap_tau = 1./(nap_tau1 + nap_tau2)
:nap_tau = na_ptau(v + nap_shift)
: "nap" persistent sodium system - inactivation...
napi_inf = na_pi(v + nap_shift)
napi_tau1 = (1 (/ms)) /(0.06435/(1+exp((v + nap_shift + 73.26415)/3.71928 (mV))))
napi_tau2 = (0.13496 (/ms))/(1 +exp((v + nap_shift + 10.27853)/(-9.09334 (mV))))
napi_tau = 1 /(napi_tau1 + napi_tau2)
}
LOCAL p
FUNCTION na_p(v (mV)) { : persistent sodium activation
: Bowers
p = nap_A/(nap_B + exp((v + nap_shift + nap_C)/nap_D))
na_p = p/(p+nap_E/(nap_F + exp((v + nap_shift + nap_G)/nap_H)))
}
FUNCTION na_pi(x (mV)) { : persistent sodium inactivation
: Bowers
na_pi = 0.06435/(1+exp((x+73.26415)/3.71928 (mV)))
na_pi = na_pi/(na_pi + (0.13496/(1+exp((v+10.27853)/(-9.09334 (mV))))))
}

View File

@@ -0,0 +1,137 @@
TITLE pyrna.mod DCN pyramidal cell model sodium channel
COMMENT
Revised version of DCN Pyramidal cell model sodium channel
This model implements part of a Dorsal Cochlear Nucleus Pyramidal point cell
based on kinetic data from Kanold and Manis (1999) and Kanold's dissertation (1999)
-- 15 Jan 1999 P. Manis
This mechanism is the fast sodium channel portion of the model.
Orignal: 2/10/02. P. Manis.
Extraced from Pyr.mod, 7/24/2014.
ENDCOMMENT
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
}
NEURON {
THREADSAFE
SUFFIX napyr
USEION na READ ena WRITE ina
RANGE gna, minf, hinf, ninf, gbar : sodium channels and delayed rectifier
RANGE mtau, htau, ntau : time constants for sodium channels and delayed rectifier
}
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
PARAMETER {
v (mV)
celsius (degC)
dt (ms)
ek (mV) : = -81.5 (mV)
ena (mV) : = 50.0 (mV)
gbar = 0.02857 (mho/cm2) <0,1e9>
mtau0 = 0.05 (ms) <0.01,100>
htau0 = 0.5 (ms) <0.1,100>
ntau = 0.5 (ms) <0.1,100>
}
STATE {
m h
}
ASSIGNED {
gna (mho/cm2)
ina (mA/cm2)
minf hinf mtau htau
}
LOCAL mexp, hexp
BREAKPOINT {
SOLVE states METHOD cnexp
gna = gbar*m*m*h
ina = gna*(v - ena)
}
UNITSOFF
INITIAL {
rates(v)
m = minf
h = hinf
}
DERIVATIVE states {
rates(v)
m' = (minf - m) / mtau
h' = (hinf - h) / htau
}
LOCAL q10
PROCEDURE rates(v(mV)) { :Computes rate and other constants at current v.
:Call once from HOC to initialize inf at resting v.
LOCAL alpha, beta, sum
TABLE minf, mtau, hinf, htau DEPEND celsius FROM -200 TO 100 WITH 400
UNITSOFF
q10 = 3^((celsius - 22)/10)
: "m" sodium activation system
minf = na_m(v)
mtau = na_mt(v)
: "h" sodium inactivation system
hinf = na_h(v)
htau = na_ht(v)
}
: Make these as functions so we can view them from hoc, although this
: may slow things down a bit
FUNCTION na_m(x) { : sodium activation
na_m = 1/(1+exp(-(x+38)/3.0)) : POK version
: na_m = alphbet(x,35,0,5,-10) :de Schutter (doesn't work well in our version)
: na_m = na_m/(na_m + alphbet(x,7,0,65,20))
}
FUNCTION na_mt(x) { : sodium activation with taus
na_mt = mtau0 : flat time constants
: na_mt = alphbet(x,35,0,5,-10)
: na_mt = 1/(na_mt + alphbet(x,7,0,65,20))
}
FUNCTION na_h(x) { : sodium inactivation
na_h = 1/(1+exp((x+43)/3.0)) : flat time constants (POK version)
: na_h = alphbet(x,0.225,1,80,10)
: na_h = na_h/(na_h + alphbet(x,7.5,0,-3,-18))
}
FUNCTION na_ht(x) { : sodium inactivation tau
na_ht = htau0 : POK: flat time constants
: na_ht = alphbet(x,0.225,1,80,10) : de Schutter version (doesn't work well with other stuff)
: na_ht = 1/(na_ht + alphbet(x,7.5,0,-3,-18))
}
FUNCTION alphbet(x,A,B,C,D) { : alpha/beta general functions for
: transcrbing GENESIS models
alphbet = A/(B+exp((x+C)/D))
}
UNITSON

View File

@@ -0,0 +1,17 @@
TITLE Purkinje Leak Current
: A passive purkinje cell leak current
NEURON {
SUFFIX lkpkj
NONSPECIFIC_CURRENT i
RANGE i, e, gbar
}
PARAMETER {
gbar = 5e-5 (siemens/cm2) < 0, 1e9 >
e = -60.5 (millivolt)
}
ASSIGNED {
i (milliamp/cm2)
v (millivolt)
}
BREAKPOINT { i = gbar*(v - e) }

196
cnmodel/mechanisms/rsg.mod Normal file
View File

@@ -0,0 +1,196 @@
TITLE Rsg sodium channel
: Resurgent sodium channel (with blocking particle)
: with updated kinetic parameters from Raman and Bean
NEURON {
SUFFIX naRsg
USEION na READ ena WRITE ina
RANGE gna, gbar
}
UNITS {
(mV) = (millivolt)
(S) = (siemens)
}
PARAMETER {
gbar = .015 (S/cm2)
: kinetic parameters
Con = 0.005 (/ms) : closed -> inactivated transitions
Coff = 0.5 (/ms) : inactivated -> closed transitions
Oon = .75 (/ms) : open -> Ineg transition
Ooff = 0.005 (/ms) : Ineg -> open transition
alpha = 150 (/ms) : activation
beta = 3 (/ms) : deactivation
gamma = 150 (/ms) : opening
delta = 40 (/ms) : closing, greater than BEAN/KUO = 0.2
epsilon = 1.75 (/ms) : open -> Iplus for tau = 0.3 ms at +30 with x5
zeta = 0.03 (/ms) : Iplus -> open for tau = 25 ms at -30 with x6
: Vdep
x1 = 20 (mV) : Vdep of activation (alpha)
x2 = -20 (mV) : Vdep of deactivation (beta)
x3 = 1e12 (mV) : Vdep of opening (gamma)
x4 = -1e12 (mV) : Vdep of closing (delta)
x5 = 1e12 (mV) : Vdep into Ipos (epsilon)
x6 = -25 (mV) : Vdep out of Ipos (zeta)
}
ASSIGNED {
alfac : microscopic reversibility factors
btfac
: rates
f01 (/ms)
f02 (/ms)
f03 (/ms)
f04 (/ms)
f0O (/ms)
fip (/ms)
f11 (/ms)
f12 (/ms)
f13 (/ms)
f14 (/ms)
f1n (/ms)
fi1 (/ms)
fi2 (/ms)
fi3 (/ms)
fi4 (/ms)
fi5 (/ms)
fin (/ms)
b01 (/ms)
b02 (/ms)
b03 (/ms)
b04 (/ms)
b0O (/ms)
bip (/ms)
b11 (/ms)
b12 (/ms)
b13 (/ms)
b14 (/ms)
b1n (/ms)
bi1 (/ms)
bi2 (/ms)
bi3 (/ms)
bi4 (/ms)
bi5 (/ms)
bin (/ms)
v (mV)
ena (mV)
ina (milliamp/cm2)
gna (S/cm2)
}
STATE {
C1 FROM 0 TO 1
C2 FROM 0 TO 1
C3 FROM 0 TO 1
C4 FROM 0 TO 1
C5 FROM 0 TO 1
I1 FROM 0 TO 1
I2 FROM 0 TO 1
I3 FROM 0 TO 1
I4 FROM 0 TO 1
I5 FROM 0 TO 1
O FROM 0 TO 1
B FROM 0 TO 1
I6 FROM 0 TO 1
}
BREAKPOINT {
SOLVE activation METHOD sparse
gna = gbar * O : O is "open state"
ina = gna * (v - ena)
}
INITIAL {
rates(v)
SOLVE seqinitial
}
KINETIC activation
{
rates(v)
~ C1 <-> C2 (f01,b01)
~ C2 <-> C3 (f02,b02)
~ C3 <-> C4 (f03,b03)
~ C4 <-> C5 (f04,b04)
~ C5 <-> O (f0O,b0O)
~ O <-> B (fip,bip)
~ O <-> I6 (fin,bin)
~ I1 <-> I2 (f11,b11)
~ I2 <-> I3 (f12,b12)
~ I3 <-> I4 (f13,b13)
~ I4 <-> I5 (f14,b14)
~ I5 <-> I6 (f1n,b1n)
~ C1 <-> I1 (fi1,bi1)
~ C2 <-> I2 (fi2,bi2)
~ C3 <-> I3 (fi3,bi3)
~ C4 <-> I4 (fi4,bi4)
~ C5 <-> I5 (fi5,bi5)
CONSERVE C1 + C2 + C3 + C4 + C5 + O + B + I1 + I2 + I3 + I4 + I5 + I6 = 1
}
LINEAR seqinitial { : sets initial equilibrium
~ I1*bi1 + C2*b01 - C1*( fi1+f01) = 0
~ C1*f01 + I2*bi2 + C3*b02 - C2*(b01+fi2+f02) = 0
~ C2*f02 + I3*bi3 + C4*b03 - C3*(b02+fi3+f03) = 0
~ C3*f03 + I4*bi4 + C5*b04 - C4*(b03+fi4+f04) = 0
~ C4*f04 + I5*bi5 + O*b0O - C5*(b04+fi5+f0O) = 0
~ C5*f0O + B*bip + I6*bin - O*(b0O+fip+fin) = 0
~ O*fip + B*bip = 0
~ C1*fi1 + I2*b11 - I1*( bi1+f11) = 0
~ I1*f11 + C2*fi2 + I3*b12 - I2*(b11+bi2+f12) = 0
~ I2*f12 + C3*fi3 + I4*bi3 - I3*(b12+bi3+f13) = 0
~ I3*f13 + C4*fi4 + I5*b14 - I4*(b13+bi4+f14) = 0
~ I4*f14 + C5*fi5 + I6*b1n - I5*(b14+bi5+f1n) = 0
~ C1 + C2 + C3 + C4 + C5 + O + B + I1 + I2 + I3 + I4 + I5 + I6 = 1
}
PROCEDURE rates(v(mV) )
{
alfac = (Oon/Con)^(1/4)
btfac = (Ooff/Coff)^(1/4)
f01 = 4 * alpha * exp(v/x1)
f02 = 3 * alpha * exp(v/x1)
f03 = 2 * alpha * exp(v/x1)
f04 = 1 * alpha * exp(v/x1)
f0O = gamma * exp(v/x3)
fip = epsilon * exp(v/x5)
f11 = 4 * alpha * alfac * exp(v/x1)
f12 = 3 * alpha * alfac * exp(v/x1)
f13 = 2 * alpha * alfac * exp(v/x1)
f14 = 1 * alpha * alfac * exp(v/x1)
f1n = gamma * exp(v/x3)
fi1 = Con
fi2 = Con * alfac
fi3 = Con * alfac^2
fi4 = Con * alfac^3
fi5 = Con * alfac^4
fin = Oon
b01 = 1 * beta * exp(v/x2)
b02 = 2 * beta * exp(v/x2)
b03 = 3 * beta * exp(v/x2)
b04 = 4 * beta * exp(v/x2)
b0O = delta * exp(v/x4)
bip = zeta * exp(v/x6)
b11 = 1 * beta * btfac * exp(v/x2)
b12 = 2 * beta * btfac * exp(v/x2)
b13 = 3 * beta * btfac * exp(v/x2)
b14 = 4 * beta * btfac * exp(v/x2)
b1n = delta * exp(v/x4)
bi1 = Coff
bi2 = Coff * btfac
bi3 = Coff * btfac^2
bi4 = Coff * btfac^3
bi5 = Coff * btfac^4
bin = Ooff
}

View File

@@ -0,0 +1,40 @@
import numpy as np
from neuron import h
from cnmodel.util import reset
def test_max_open_probability():
reset(
raiseError=False
) # reset() fails as unable to remove all neuron objects, unless we ignore the error
sec = h.Section()
# Create AMPA and NMDA mechanisms
# AMPA uses mode=0; no rectification
apsd = h.AMPATRUSSELL(0.5, sec=sec)
# For NMDA we will hold the cell at +40 mV
npsd = h.NMDA_Kampa(0.5, sec=sec)
# And a presynaptic terminal to provide XMTR input
term = h.MultiSiteSynapse(0.5, sec=sec)
term.nZones = 1
h.setpointer(term._ref_XMTR[0], "XMTR", apsd)
h.setpointer(term._ref_XMTR[0], "XMTR", npsd)
h.celsius = 34.0
h.finitialize()
op = [[], []]
for i in range(100):
# force very high transmitter concentration for every timestep
term.XMTR[0] = 10000
sec.v = 40.0
h.fadvance()
op[0].append(apsd.Open)
op[1].append(npsd.Open)
assert np.allclose(max(op[0]), apsd.MaxOpen)
assert np.allclose(max(op[1]), npsd.MaxOpen)
if __name__ == "__main__":
test_max_open_probability()

View File

@@ -0,0 +1,72 @@
: Vector stream of events
: From NEURON source: nrn/examples/nrniv/netcon/vecevent.mod
NEURON {
ARTIFICIAL_CELL VecStim
}
ASSIGNED {
index
etime (ms)
space
}
INITIAL {
index = 0
element()
if (index > 0) {
net_send(etime - t, 1)
}
}
NET_RECEIVE (w) {
if (flag == 1) {
net_event(t)
element()
if (index > 0) {
net_send(etime - t, 1)
}
}
}
VERBATIM
extern double* vector_vec();
extern int vector_capacity();
extern void* vector_arg();
ENDVERBATIM
PROCEDURE element() {
VERBATIM
{ void* vv; int i, size; double* px;
i = (int)index;
if (i >= 0) {
vv = *((void**)(&space));
if (vv) {
size = vector_capacity(vv);
px = vector_vec(vv);
if (i < size) {
etime = px[i];
index += 1.;
}else{
index = -1.;
}
}else{
index = -1.;
}
}
}
ENDVERBATIM
}
PROCEDURE play() {
VERBATIM
void** vv;
vv = (void**)(&space);
*vv = (void*)0;
if (ifarg(1)) {
*vv = vector_arg(1);
}
ENDVERBATIM
}