Nigral dopaminergic neurons: effects of ethanol on Ih (Migliore et al. 2008)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:112359
We use a realistic computational model of dopaminergic neurons in vivo to suggest that ethanol, through its effects on Ih, modifies the temporal structure of the spiking activity. The model predicts that the dopamine level may increase much more during bursting than pacemaking activity, especially in those brain regions with a slow dopamine clearance rate. The results suggest that a selective pharmacological remedy could thus be devised against the rewarding effects of ethanol that are postulated to mediate alcohol abuse and addiction, targeting the specific HCN genes expressed in dopaminergic neurons.
Reference:
1 . Migliore M, Cannia C, Canavier CC (2008) A modeling study suggesting a possible pharmacological target to mitigate the effects of ethanol on reward-related dopaminergic signaling. J Neurophysiol 99:2703-7 [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; Electrogenic pump;
Brain Region(s)/Organism:
Cell Type(s): Substantia nigra pars compacta DA cell;
Channel(s): I Na,t; I A; I K; I K,leak; I h; I Calcium; Na/K pump;
Gap Junctions:
Receptor(s): AMPA; NMDA; Glutamate; Gaba;
Gene(s):
Transmitter(s): Dopamine;
Simulation Environment: NEURON;
Model Concept(s): Activity Patterns; Bursting; Active Dendrites; Detailed Neuronal Models; Action Potentials; Pathophysiology; Sodium pump; Alcohol Use Disorder;
Implementer(s): Migliore, Michele [Michele.Migliore at Yale.edu];
Search NeuronDB for information about:  Substantia nigra pars compacta DA cell; AMPA; NMDA; Glutamate; Gaba; I Na,t; I A; I K; I K,leak; I h; I Calcium; Na/K pump; Dopamine;
/
modeldb-etoh
readme.html
ampasyn.mod *
cabalan.mod *
cachan.mod
capump.mod *
dop.mod *
hh3.mod *
IhDA.mod
kca.mod *
leak.mod *
nabalan.mod *
nmdasyn.mod *
pump.mod *
damodel3.ses
fig3.hoc
mosinit.hoc
screenshot.jpg
x1e0p9927-b.dat
x2e0p9927-b.dat
                            
load_file("nrngui.hoc")

soma_len= 25.0 
soma_diam= 15.0
ndend=4
nbranch=2
dend_diam= 1.5 
prox_diam= 3.0 
dend_len = 500.0
prox_len = 150.0
v_init = -56.621
dt = 0.0032516  
tstart = 0
tstop = 20000
ourgampa=0.0
ourPnmda=0.0


/* Ih Initial Parameters */
ehd_hd = -30
vh_hd = -95
tc_hd = 350
vhalft_hd = -112
a0t_hd = 0.0016
zetat_hd = 2.2
gmt_hd = 0.9
k_hd = 8
//

objref apc
objref vect1
vect1 = new Vector()

create dummy,soma, prox[ndend], dend[nbranch*ndend]	
global_ra = 400
forall Ra = global_ra
global_cm = 1.0
forall cm = global_cm
g_celsius = 35
celsius = g_celsius
forall ion_style("na_ion", 2,2,0,0,0)
access soma			


objref cvode
objref ff
objref vec1,vec2
cvode = new CVode(1)   
x= cvode.active(1)
ff = new File()
vec1 = new Vector(200001)
ff.ropen("x1e0p9927-b.dat")
n = vec1.scanf(ff, 200000)
ff.close()
ff = new File()
vec2 = new Vector(200001)
ff.ropen("x2e0p9927-b.dat")
n = vec2.scanf(ff, 200000)
ff.close()
samplestep = 0.1
objref tvec1,tvec2
tvec1 = vec1.c.indgen(samplestep)
tvec2 = vec2.c.indgen(samplestep)
vec1.play(&ourgampa,tvec1,1)
vec2.play(&ourPnmda,tvec2,1)

proc init_cell() {


/* First set all of the dimensions and insert the channels into each
 * section. */
forall {insert hd ghdbar_hd =0.0007}

    dummy{
      L=1
      d=1
    }
    soma {
	nseg = 1		
	diam = soma_diam		
	L = soma_len			
            
   apc = new APCount(0.5)
   apc.thresh = -30
   apc.record(vect1)   


	{insert nabalan nainit_nabalan = 5.473444 f_nabalan = 4.0}
        {insert hh3 gkabar_hh3 = 100.0e-6 gnabar_hh3=2500e-6 
          miv_hh3 = 44.6 hiv_hh3 = 66.8 htv1_hh3 = 39.0 htv2_hh3 = 59.0}
        {insert pump ipumpmax_pump = 0.0036}
        {insert leak gcabar_leak = 0.6e-6 ggabaa_leak = 300.0e-6 }
        {insert cabalan cainit_cabalan = 0.00020701223}
        {insert cachan}
        {insert kca gkbar_kca = 450.0e-6}
        {insert capump}

	pt3dclear()
	pt3dadd(0,0,0,soma_diam)
	pt3dadd(soma_len,0,0,soma_diam)

    }

    for i = 0, ndend-1 prox[i] {
	nseg = 1	
	L = prox_len			
	      
	{insert nabalan nainit_nabalan = 10.000871    f_nabalan = 1.0}
	{insert hh3 gkabar_hh3 = 300.0e-6 gnabar_hh3=2500e-6 
          miv_hh3 = 34.6 hiv_hh3 = 56.8 htv1_hh3 = 29.0 htv2_hh3 = 49.0}
	{insert pump ipumpmax_pump = 0.0072}
	{insert leak gcabar_leak = 0.0e-6 ggabaa_leak = 30.0e-6 }
    {insert nmda}
    {insert ampa ratio_ampa = 1}
          
forall cm = global_cm
forall Ra = global_ra
g_celsius = 35
    }
 
     for i = 0, ndend-1 prox[i] {
      prox[i] for (x,0) { 
        setpointer caisoma_nmda(x), soma.cai(0.5)
        setpointer nmdasyn_nmda(x), ourPnmda 
        setpointer ampasyn_ampa(x), ourgampa
	  }
        } 
         
      for i = 0, nbranch*ndend - 1 dend[i] {
	nseg = 1	
	L = dend_len - prox_len 			
        
	{insert nabalan nainit_nabalan = 8.3234185 f_nabalan = 1.0}
	{insert hh3 gkabar_hh3 = 1000.0e-6 gnabar_hh3=2500e-6 
           miv_hh3 = 26.6 hiv_hh3 = 48.8 htv1_hh3 = 21 htv2_hh3 = 41.0}
        {insert pump ipumpmax_pump = 0.009}
        {insert leak gcabar_leak = 0.0e-6 ggabaa_leak = 30.0e-6 }
        {insert nmda}
	{insert ampa ratio_ampa = 1}
    
forall cm = global_cm
forall Ra = global_ra
g_celsius = 35
    }

   for i = 0, nbranch*ndend - 1 dend[i] {
      dend[i] for (x,0) { 
        setpointer caisoma_nmda(x), soma.cai(0.5)
        setpointer nmdasyn_nmda(x), ourPnmda
		setpointer ampasyn_ampa(x), ourgampa  
					    }
          }
//
   
/* Construct the topology by connecting each of the sections together. */
    connect soma(0),dummy(1)
    connect prox[0](0),soma(0)
    connect prox[1](0), soma(1)
    connect prox[2](0), soma(0.5)
    connect prox[3](0), soma(0.5) 
    for j = 0, ndend-1 {
    for i = 0, nbranch-1 {
    connect dend[j+i*ndend](0), prox[j](1)}}

        dummy{
	pt3dclear()
	pt3dadd(0.5*soma_len,0,1,1)
	pt3dadd(0.5*soma_len,0,0,1)
               }
        prox[0]{
	pt3dclear() 
	pt3dadd(0,0,0,prox_diam)
	pt3dadd(-prox_len,0,0,prox_diam)
               }
        dend[0]{
	pt3dclear() 
	pt3dadd(-prox_len,0,0,dend_diam)
	pt3dadd(-dend_len,0,0,dend_diam)
               }
        if(nbranch==2) dend[4]{
	pt3dclear() 
	pt3dadd(-prox_len,0,0,dend_diam)
	pt3dadd(-prox_len,dend_len-prox_len,0,dend_diam)
               }
        prox[1]{
	pt3dclear() 
	pt3dadd(soma_len,0,0,prox_diam)
	pt3dadd(soma_len+prox_len,0,0,prox_diam)
               }
        dend[1]{
	pt3dclear() 
	pt3dadd(soma_len+prox_len,0,0,dend_diam)
	pt3dadd(soma_len+dend_len,0,0,dend_diam)
               }
        if(nbranch==2) dend[5]{
	pt3dclear() 
	pt3dadd(soma_len+prox_len,0,0,dend_diam)
	pt3dadd(soma_len+prox_len,prox_len-dend_len,0,dend_diam)
               }
        prox[2]{
	pt3dclear() 
	pt3dadd(0,soma_diam/2,0,prox_diam)
	pt3dadd(0,(soma_diam/2 + prox_len),0,prox_diam)
               }
        dend[2]{
	pt3dclear() 
	pt3dadd(0,(soma_diam/2 + prox_len),0,dend_diam)
	pt3dadd(0,soma_diam/2 + dend_len,0,dend_diam)
               }
        if(nbranch==2) dend[6]{
	pt3dclear() 
	pt3dadd(0,(soma_diam/2 + prox_len),0,dend_diam)
	pt3dadd(dend_len-prox_len,soma_diam/2 + prox_len,0,dend_diam)
               }
        prox[3]{
	pt3dclear() 
	pt3dadd(0,-soma_diam/2,0,prox_diam)
	pt3dadd(0,(-soma_diam/2 - prox_len),0,prox_diam)
               }
        dend[3]{
	pt3dclear() 
	pt3dadd(0,-soma_diam/2 - prox_len,0,dend_diam)
	pt3dadd(0,-soma_diam/2 - dend_len,0,dend_diam)
               }
        if(nbranch==2) dend[7]{
	pt3dclear() 
	pt3dadd(0,-soma_diam/2 - prox_len,0,dend_diam)
	pt3dadd(prox_len-dend_len,-soma_diam/2 - prox_len,0,dend_diam)
               }
}

topology()
//

init_cell()		

/* Create the sinapses for Dopamin Simulation */ 
objref nc, syni, syni2, nc2
create acell
acell {
syni = new dopnet(.5)
syni.vmax=5*1e-3
syni2 = new dopnet(.5)
syni2.vmax=0.5*1e-3
      }
nc = new NetCon(&v(.5), syni, -20, 0, 0.16)
nc2 = new NetCon(&v(.5), syni2, -20, 0, 0.022)
//



proc init() {local i
   		finitialize(v_init)
        fcurrent()
		t = tstart
}

init()


load_file("damodel3.ses")


proc advance() {
	fadvance()
	 if(vect1.size()>compare) {
	  Graph[0].mark(vect1.x[compare],yy,"|",5,cc,1) 
	  Graph[0].flush()	
	  compare = compare + 1
	 }
		
}

/* Declaration of the Procedures (Control, 50mM, 100mM) */
proc control() {
 forall {
 if(ismembrane("hd")) {
 ghdbar_hd =0.0007
 vh_hd = -95
 a0t_hd=0.0016
 k_hd=8
 yy=1.3
 cc=1
					  }
		}
Graph[0].addexpr("syni2.dop", 1, 1, 2.99, 2.99, 2)	
vect1.resize(0)
compare=0
run()
}	


proc etohh() {
forall {
 if(ismembrane("hd")) {
 ghdbar_hd =0.000735
 vh_hd = -93
 a0t_hd=0.0019
 k_hd=9
 yy=1.2
 cc=3
 					  }
	   }
Graph[0].addexpr("syni2.dop", 3, 1, 2.99, 2.99, 2)
vect1.resize(0)
compare=0
run()
}


proc etoh() {
forall {
 if(ismembrane("hd")) {
 ghdbar_hd =0.00077
 vh_hd = -91
 a0t_hd=0.0022
 k_hd=10
 yy=1.1
 cc=2
 					  }
	  }
Graph[0].addexpr("syni2.dop", 2, 1, 2.99, 2.99, 2)
vect1.resize(0)
compare=0
run()
}