# -*- coding: utf-8 -*-
from moose_nerp.prototypes.util import NamedDict
from moose_nerp.prototypes.chan_proto import (
AlphaBetaChannelParams,
ZChannelParams,
BKChannelParams,
ChannelSettings,
TypicalOneD,
TwoD)
#contains all gating parameters and reversal potentials
# Gate equations have the form:
# AlphaBetaChannelParams (specify forward and backward transition rates):
# alpha(v) or beta(v) = (rate + B * v) / (C + exp((v + vhalf) / vslope))
# OR
# StandardMooseTauInfChannelParams (specify steady state and time constants):
# tau(v) or inf(v) = (rate + B * v) / (C + exp((v + vhalf) / vslope))
# OR
# TauInfMinChannelParams (specify steady state and time constants with non-zero minimum - useful for tau):
# inf(v) = min + max / (1 + exp((v + vhalf) / vslope))
# tau(v) = taumin + tauVdep / (1 + exp((v + tauVhalf) / tauVslope))
# or if tau_power=2: tau(v) = taumin + tauVdep / (1 + exp((v + tauVhalf) / tauVslope))* 1 / (1 + exp((v + tauVhalf) / -tauVslope))
#
# where v is membrane potential in volts, vhalf and vslope have units of volts
# C, min and max are dimensionless; and C should be either +1, 0 or -1
# Rate has units of per sec, and B has units of per sec per volt
# taumin and tauVdep have units of per sec
#
#units for membrane potential: volts
krev=-87e-3
narev=50e-3
carev=48e-3 #assumes CaExt=2 mM and CaIn=50e-3
ZpowCDI=2
VMIN = -120e-3
VMAX = 50e-3
VDIVS = 3401 #0.5 mV steps
#units for calcium concentration: mM
CAMIN = 0.01e-3 #10 nM
CAMAX = 40e-3 #40 uM, might want to go up to 100 uM with spines
CADIVS = 4001 #10 nM steps
kDr_X_params= AlphaBetaChannelParams (
A_rate=6.5,
A_B=0,
A_C=0,
A_vhalf=0,
A_vslope=-12.5e-3,
B_rate=24,
B_B=0,
B_C=0,
B_vhalf=0,
B_vslope=33.5e-3)
kDr_Y_params=[]
kDrparams=ChannelSettings(Xpow=1,Ypow=0,Zpow=0,Erev=-0.09,name='kDr')
KAdist_m_params= AlphaBetaChannelParams (
A_rate=0.7,
A_B=0,
A_C=0,
A_vhalf=0,
A_vslope=-50e-3,
B_rate=0.15,
B_B=0,
B_C=0,
B_vhalf=-30.1001e-3,
B_vslope=9e-3)
KAdist_h_params= AlphaBetaChannelParams (
A_rate=17,
A_B=0,
A_C=0,
A_vhalf=-95.1001e-3,
A_vslope=14e-3,
B_rate=10,
B_B=0,
B_C=0,
B_vhalf=0,
B_vslope=25e-3)
KAdistparams=ChannelSettings(Xpow=2,Ypow=1,Zpow=0,Erev=-0.09,name='KAdist')
KAprox_m_params= AlphaBetaChannelParams (
A_rate=0.375,
A_B=0,
A_C=0,
A_vhalf=0,
A_vslope=40e-3,
B_rate=0.025,
B_B=0,
B_C=0,
B_vhalf=-18.1001e-3,
B_vslope=18e-3)
KAprox_h_params= AlphaBetaChannelParams (
A_rate=17,
A_B=0,
A_C=0,
A_vhalf=-95.1001e-3,
A_vslope=14e-3,
B_rate=10,
B_B=0,
B_C=0,
B_vhalf=0,
B_vslope=25e-3)
KAproxparams=ChannelSettings(Xpow=2,Ypow=1,Zpow=0,Erev=-0.09,name='KAprox')
# KD_x_params= AlphaBetaChannelParams (
# A_rate=1,
# A_B=0,
# A_C=0,
# A_vhalf=-63e-3,
# A_vslope=3*0.0376583676871,
# B_rate=1,
# B_B=0,
# B_C=0,
# B_vhalf=-63e-3,
# B_vslope=-3*0.0376583676871)
# KD_y_params= AlphaBetaChannelParams (
# A_rate=17,
# A_B=0,
# A_C=0,
# A_vhalf=-95.1001e-3,
# A_vslope=14e-3,
# B_rate=10,
# B_B=0,
# B_C=0,
# B_vhalf=0,
# B_vslope=25e-3)
# KDparams=ChannelSettings(Xpow=2,Ypow=1,Zpow=0,Erev=-90e-3,name='KAdist',xparams=KD_x_params,yparams=KD_y_params,zparams=[])
qfactNaF = 1
Na_m_params= AlphaBetaChannelParams (
A_rate=-12.0052e-3*2.14e6,
A_B=-0.4*2.14e6,
A_C=-1,
A_vhalf=30.013e-3,
A_vslope=-7.2e-3,
B_rate=3.722e-3*2.14e6,
B_B=0.124*2.14e6,
B_C=-1,
B_vhalf=30.013e-3,
B_vslope=7.2e-3)
Na_h_params= AlphaBetaChannelParams (
A_rate=(45.013e-3+15.0e-3)*0.03*2.14e6,
A_B=0.03*2.14e6,
A_C=-1,
A_vhalf=45.013e-3+15e-3,
A_vslope=3.5e-3,
B_rate=-(45.013e-3+15e-3)*0.01*2.14e6,
B_B=-0.01*2.14e6,
B_C=-1,
B_vhalf=45.013e-3+15e-3,
B_vslope=-3.5e-3)
naFparams=ChannelSettings(Xpow=3,Ypow=1,Zpow=0,Erev=55.0e-3,name='NaF')
Channels = NamedDict(
'Channels',
Kdr = TypicalOneD(kDrparams, kDr_X_params, kDr_Y_params),
Kadist = TypicalOneD(KAdistparams, KAdist_m_params, KAdist_h_params),
Kaprox = TypicalOneD(KAproxparams, KAprox_m_params, KAdist_h_params),
Na = TypicalOneD(naFparams, Na_m_params, Na_h_params),
)