: Persistent Na+ channel : adapted from : https://senselab.med.yale.edu/ModelDB/ShowModel.cshtml?model=144089&file=/PFCcell/mechanism/nap.mod NEURON { SUFFIX nap USEION na READ ena WRITE ina RANGE gbar RANGE DA_alphamshift,DA_betamshift RANGE DA_alphahfactor, DA_betahfactor } UNITS { (mA) = (milliamp) (mV) = (millivolt) } PARAMETER { v (mV) gbar= 0.0022 (mho/cm2) <0,1e9> ena (mV) : do not set global ena here DA_alphamshift=0 : 2 for 100% DA, 0 otherwise DA_betamshift=0 : 5 for 100% DA,0 otherwise DA_alphahfactor=0: -.8e-5 for DA, 0 otherwise DA_betahfactor=0 : 0.014286-0.02 for DA, 0 otherwise } STATE { m h } ASSIGNED { ina (mA/cm2) minf hinf mtau (ms) htau (ms) g (mho/cm2) } PROCEDURE iassign () { g = gbar*m*h ina = g*(v-ena) } INITIAL { rate(v) m = minf h = hinf iassign() } BREAKPOINT { SOLVE states METHOD cnexp iassign() } DERIVATIVE states { rate(v) m' = (minf-m)/mtau h' = (hinf-h)/htau } UNITSOFF FUNCTION malf( v){ LOCAL va va=v+12+DA_alphamshift if (fabs(va)<1e-04){ va = va + 0.00001 } malf = (-0.2816*va)/(-1+exp(-va/9.3)) } FUNCTION mbet(v(mV))(/ms) { LOCAL vb vb=v-15+DA_betamshift if (fabs(vb)<1e-04){ vb = vb + 0.00001 } mbet = (0.2464*vb)/(-1+exp(vb/6)) } FUNCTION half(v(mV))(/ms) { LOCAL vc vc=v+42.8477 if (fabs(vc)<1e-04){ vc=vc+0.00001 } half= (2.8e-5+DA_alphahfactor)*(exp(-vc/4.0248)) } FUNCTION hbet(v(mV))(/ms) { LOCAL vd vd=v-413.9284 if (fabs(vd)<1e-04){ vd=vd+0.00001 } hbet= (0.02+DA_betahfactor)/(1+exp(-vd/148.2589)) } PROCEDURE rate(v (mV)) {LOCAL msum, hsum, ma, mb, ha, hb ma=malf(v) mb=mbet(v) ha=half(v) hb=hbet(v) msum = ma+mb minf = ma/msum mtau = 1/msum hsum = ha+hb hinf = ha/hsum htau = 1/hsum } UNITSON