CA1 pyramidal neuron: effects of Lamotrigine on dendritic excitability (Poolos et al 2002)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:9769
NEURON mod files from N. Poolos, M. Migliore, and D. Johnston, Nature Neuroscience (2002). The experimental and modeling results in this paper demonstrate for the first time that neuronal excitability can be altered by pharmaceuticals acting selectively on dendrites, and suggest an important role for Ih in controlling dendritic excitability and epileptogenesis.
Reference:
1 . Poolos NP, Migliore M, Johnston D (2002) Pharmacological upregulation of h-channels reduces the excitability of pyramidal neuron dendrites. Nat Neurosci 5:767-74 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Neuron or other electrically excitable cell;
Brain Region(s)/Organism:
Cell Type(s): Hippocampus CA1 pyramidal GLU cell;
Channel(s): I Na,t; I A; I K; I h;
Gap Junctions:
Receptor(s): AMPA;
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Ion Channel Kinetics; Active Dendrites; Detailed Neuronal Models; Action Potentials;
Implementer(s): Migliore, Michele [Michele.Migliore at Yale.edu];
Search NeuronDB for information about:  Hippocampus CA1 pyramidal GLU cell; AMPA; I Na,t; I A; I K; I h;
/
lamotrigine
readme.txt
h.mod
kadist.mod *
kaprox.mod *
kdrca1.mod *
na3n.mod
naxn.mod
netstimm.mod
lamotrigine.hoc
mosinit.hoc
n160_mod.nrn *
                            
load_file("nrngui.hoc")
cvode.active(1)

dist=12

Rm = 28000
RmDend = Rm/2
RmSoma = Rm
RmAx = Rm

Cm    = 1
CmSoma= Cm
CmAx  = Cm
CmDend = Cm*2

RaAll= 150
RaSoma=150  
RaAx = 50

Vrest = -65
dt = 0.2
gna =  .032
AXONM = 2
gkdr = 0.003
celsius = 34.0  
KMULT =  0.008
KMULTP = 0.008
sh=0
freq=20
ghd=0.0006

tstop=500

objref nc, np,g, b, rsyn, s, apc, stim, psyn

xopen("n160_mod.nrn")             // geometry file

access soma[5]
distance()

apc = new APCount(0.5)
apc.thresh=-20

apical[0] {
psyn = new Exp2Syn(0.5)
psyn.e=0
psyn.tau1 = 2
psyn.tau2 = 20
}

apical[dist] {
tmp=0.5
s = new NetStimm(tmp)
s.interval=2500
s.number = 1.e9
s.start=0
s.noise=1
s.interval=1000/freq
rsyn = new Exp2Syn(tmp)
rsyn.e=0
rsyn.tau1 = 2
rsyn.tau2 = 20
}

nc = new NetCon(s,rsyn,0,0,0)
np = new NetCon(s,psyn,0,0,0)

b = new VBox()
b.intercept(1)
g = new Graph()
g.size(0,tstop,-70,30)
g.exec_menu("Keep Lines")
g.addvar("soma[5].v(0.5)",2,0, 2*tstop,0,2)
xpanel("",1)
xbutton("distal ", "rund()")
xbutton("proximal ", "runp()")
xpanel()
b.intercept(0)
b.map()

proc init() {
axon[1] {
                insert nax gbar_nax=gna * AXONM
                insert kdr gkdrbar_kdr=gkdr
                insert pas e_pas=Vrest g_pas = 1/RmAx Ra=RaAx cm=CmAx
                insert kap gkabar_kap = KMULTP*0.2
}

axon[0] {   
                insert nax  gbar_nax=gna * AXONM
                insert kdr  gkdrbar_kdr=gkdr 
                insert pas e_pas=Vrest g_pas = 1/RmAx Ra=RaAx cm=CmAx
                insert kap gkabar_kap = KMULTP*0.2
}

for i=0,NumSoma-1 soma[i] {   
		insert hd ghdbar_hd=ghd
			vhalfl_hd=-82+sh
                insert na3  gbar_na3=gna     
			ar2_na3=1
                insert kdr gkdrbar_kdr=gkdr
                insert kap gkabar_kap = KMULTP
                insert pas e_pas=Vrest g_pas = 1/RmSoma Ra=RaSoma cm=CmSoma
}

for i=0,NumBasal-1 basal[i] {
                insert na3    gbar_na3=gna   
			ar2_na3=1
                insert kdr gkdrbar_kdr=gkdr 
                insert kap gkabar_kap=KMULTP
                insert pas e_pas=Vrest g_pas = 1/RmDend Ra=RaAll cm=CmDend
}
                
for i=0,NumApical-1 apical[i] {
              insert pas e_pas=Vrest g_pas = 1/RmDend Ra=RaAll  cm=CmDend
		if (diam>0.5 && distance(0.5)<500) {
		insert hd ghdbar_hd=ghd
                insert na3 
		ar2_na3=0.8
		gbar_na3=gna
                insert kdr 
		gkdrbar_kdr=gkdr
		insert kap
		insert kad
		gkabar_kap=0
		gkabar_kad=0

              for (x){ xdist = distance(x)
                if (xdist>500) {xdist=500}
                ghdbar_hd(x) = ghd*(1+1.5*xdist/100)
                if (xdist > 100){
			vhalfl_hd=-90+sh
                        gkabar_kad(x) = KMULT*(1+xdist/100)
                } else {
			vhalfl_hd=-82+sh
                        gkabar_kap(x) = KMULTP*(1+xdist/100)
                	}
              				}
							}
				}

	t=0
        forall {
        v=Vrest
        if (ismembrane("nax") || ismembrane("na3")) {ena=55}
        if (ismembrane("kdr") || ismembrane("kap") || ismembrane("kad")) {ek=-90}
        if (ismembrane("hd") ) {ehd_hd=-30}
	}
	finitialize(v)
        fcurrent()

        forall {
	for (x) {
	if (ismembrane("na3")||ismembrane("nax")){e_pas(x)=v(x)+(ina(x)+ik(x))/g_pas(x)
	if (ismembrane("hd")) {e_pas(x)=e_pas(x)+i_hd(x)/g_pas(x)}
		} else {
	e_pas(x)=v(x)
			}
		}
	}
	cvode.re_init()
	cvode.event(tstop)
	access soma[5]
	g.begin()
	g.plot(t)
}

proc step() {

	fadvance()
g.plot(t)
g.flush()
doNotify()
}

proc run() {
	init()
	while(t<tstop) { step()}
}


proc rund() {local sim,freq
	g.erase_all()
	g.xaxis(1)
	nc.weight=20e-3
	np.weight=0
	g.label(0.2,0.1, "distal input")
	sh=0
	s.seed(1577)
	print " "
	g.addvar("soma[5].v(0.5)",1,0, 2*tstop,0,2)
	run()
	print "distal, control ",apc.n, " spikes"
	sh=10
	s.seed(1577)
	g.addvar("soma[5].v(0.5)",2,0, 2*tstop,0,2)
	run()
	print "distal, lamotrigine ",apc.n, " spikes"
}

proc runp() {local sim,freq
	g.erase_all()
	g.xaxis(1)
	nc.weight=0
	np.weight=8e-3
	g.label(0.2,0.1, "proximal input")
	sh=0
	s.seed(1577)
	print " "
	g.addvar("soma[5].v(0.5)",1,0, 2*tstop,0,2)
	run()
	print "proximal, control ",apc.n, " spikes"
	sh=10
	s.seed(1577)
	g.addvar("soma[5].v(0.5)",2,0, 2*tstop,0,2)
	run()
	print "proximal, lamotrigine ",apc.n, " spikes"
}