CA1 network model: interneuron contributions to epileptic deficits (Shuman et al 2019)

 Download zip file 
Help downloading and running models
Accession:256311
Temporal lobe epilepsy causes significant cognitive deficits in both humans and rodents, yet the specific circuit mechanisms underlying these deficits remain unknown. There are profound and selective interneuron death and axonal reorganization within the hippocampus of both humans and animal models of temporal lobe epilepsy. To assess the specific contribution of these mechanisms on spatial coding, we developed a biophysically constrained network model of the CA1 region that consists of different subtypes of interneurons. More specifically, our network consists of 150 cells, 130 excitatory pyramidal cells and 20 interneurons (Fig. 1A). To simulate place cell formation in the network model, we generated grid cell and place cell inputs from the Entorhinal Cortex (ECLIII) and CA3 regions, respectively, activated in a realistic manner as observed when an animal transverses a linear track. Realistic place fields emerged in a subpopulation of pyramidal cells (40-50%), in which similar EC and CA3 grid cell inputs converged onto distal/proximal apical and basal dendrites. The tuning properties of these cells are very similar to the ones observed experimentally in awake, behaving animals To examine the role of interneuron death and axonal reorganization in the formation and/or tuning properties of place fields we selectively varied the contribution of each interneuron type and desynchronized the two excitatory inputs. We found that desynchronized inputs were critical in reproducing the experimental data, namely the profound reduction in place cell numbers, stability and information content. These results demonstrate that the desynchronized firing of hippocampal neuronal populations contributes to poor spatial processing in epileptic mice, during behavior. Given the lack of experimental data on the selective contributions of interneuron death and axonal reorganization in spatial memory, our model findings predict the mechanistic effects of these alterations at the cellular and network levels.
Reference:
1 . Shuman T, Aharoni D, Cai DJ, Lee CR, Chavlis S, Page-Harley L, Vetere LM, Feng Y, Yang CY, Mollinedo-Gajate I, Chen L, Pennington ZT, Taxidis J, Flores SE, Cheng K, Javaherian M, Kaba CC, Rao N, La-Vu M, Pandi I, Shtrahman M, Bakhurin KI, Masmanidis SC, Khakh BS, Poirazi P, Silva AJ, Golshani P (2020) Breakdown of spatial coding and interneuron synchronization in epileptic mice. Nat Neurosci 23:229-238 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network;
Brain Region(s)/Organism: Hippocampus;
Cell Type(s): Hippocampus CA1 pyramidal GLU cell; Hippocampal CA1 CR/VIP cell; Hippocampus CA1 axo-axonic cell; Hippocampus CA1 basket cell; Hippocampus CA1 basket cell - CCK/VIP; Hippocampus CA1 stratum oriens lacunosum-moleculare interneuron ; Hippocampus CA1 bistratified cell;
Channel(s): I A; I h; I K,Ca; I K; I CAN; I M; I Sodium; I_AHP; I Calcium;
Gap Junctions:
Receptor(s): AMPA; GabaA; GabaB; NMDA;
Gene(s):
Transmitter(s):
Simulation Environment: NEURON; Brian;
Model Concept(s): Spatial Navigation;
Implementer(s): Chavlis, Spyridon [schavlis at imbb.forth.gr]; Pandi, Ioanna ; Poirazi, Panayiota [poirazi at imbb.forth.gr];
Search NeuronDB for information about:  Hippocampus CA1 pyramidal GLU cell; GabaA; GabaB; AMPA; NMDA; I A; I K; I M; I h; I K,Ca; I CAN; I Sodium; I Calcium; I_AHP;
/
Shuman_et_al_2019
cells
axoaxonic_cell17S.hoc
basket_cell17S.hoc *
bistratified_cell13S.hoc *
burst_cell.hoc *
olm_cell2.hoc *
pyramidal_cell_14VbTest.hoc
ranstream.hoc *
stim_cell.hoc
stim_cell_ca3.hoc *
stim_cell_ec.hoc *
stim_cell_noise.hoc *
vipcck_cell17S.hoc *
vipcr_cell17S.hoc *
                            
// Artificial cells no longer need a default section.
//Network cell templates
//   BistratifiedCell
// Simplified version (BPG 27-9-08)
//  - geometry and channels from Santhakumar et al 2005
//  - geometry modified to preserve VCUs different dendrites

begintemplate BistratifiedCell
public is_art
public init, topol, basic_shape, subsets, geom, biophys
public pre_list, connect2target

public soma
public radProx1, radMed1, radDist1
public radProx2, radMed2, radDist2
public oriProx1, oriMed1, oriDist1
public oriProx2, oriMed2, oriDist2
public all

objref pre_list

proc init() {
	topol()
	subsets()
	geom()
	biophys()
	geom_nseg()
	pre_list = new List()
	synapses()
}

create soma
create radProx1, radMed1, radDist1
create radProx2, radMed2, radDist2
create oriProx1, oriMed1, oriDist1
create oriProx2, oriMed2, oriDist2

proc topol() { local i
	connect radProx1(0), soma(0)
	connect radMed1(0),  radProx1(1)
	connect radDist1(0), radMed1(1)
	connect radProx2(0), soma(1)
	connect radMed2(0),  radProx2(1)
	connect radDist2(0), radMed2(1)
	connect oriProx1(0), soma(0)
	connect oriMed1(0),  oriProx1(1)
	connect oriDist1(0), oriMed1(1)
	connect oriProx2(0), soma(1)
	connect oriMed2(0),  oriProx2(1)
	connect oriDist2(0), oriMed2(1)
	//basic_shape()
}

proc basic_shape() {
	soma     { pt3dclear() pt3dadd(0, 0, 0, 10)      pt3dadd(15, 0, 0, 10)     }
	radProx1 { pt3dclear() pt3dadd(0, 0, 0, 4)       pt3dadd(-14, 15, 0, 4)    }
	radMed1  { pt3dclear() pt3dadd(-14, 15, 0, 3)    pt3dadd(-29, 30, 0, 3)    }
	radDist1 { pt3dclear() pt3dadd(-29, 30, 0, 2)    pt3dadd(-44, 45, 0, 2)    }
  radProx2 { pt3dclear() pt3dadd(15, 0, 0, 4)      pt3dadd(45, 30, 0, 4)     }
  radMed2  { pt3dclear() pt3dadd(45, 30, 0, 3)     pt3dadd(75, 60, 0, 3)     }
  radDist2 { pt3dclear() pt3dadd(75, 60, 0, 2)     pt3dadd(90, 75, 0, 2)     }    
	oriProx1 { pt3dclear() pt3dadd(0, 0, 0, 2)       pt3dadd(-29, -29, 0, 2)   }
	oriMed1  { pt3dclear() pt3dadd(-29, -29, 0, 1.5) pt3dadd(-59, -59, 0, 1.5) }
	oriDist1 { pt3dclear() pt3dadd(-59, -59, 0, 1)   pt3dadd(-89, -89, 0, 1)   }
	oriProx2 { pt3dclear() pt3dadd(15, 0, 0, 2)      pt3dadd(45, -29, 0, 2)    }
	oriMed2  { pt3dclear() pt3dadd(45, -29, 0, 1.5)  pt3dadd(75, -59, 0, 1.5)  }
	oriDist2 { pt3dclear() pt3dadd(75, -59, 0, 1)    pt3dadd(105, -89, 0, 1)   }
}

objref all
proc subsets() { local i
  objref all
  all = new SectionList()
  soma     all.append()
  radProx1 all.append()
  radMed1  all.append()
  radDist1 all.append()
  radProx2 all.append()
  radMed2  all.append()
  radDist2 all.append()    
  oriProx1 all.append()
  oriMed1  all.append()
  oriDist1 all.append()
  oriProx2 all.append()
  oriMed2  all.append()
  oriDist2 all.append()
}

proc geom() {
	forsec all {  }
	soma     {  L = 20  diam = 10   }
	radProx1 {  L = 100  diam = 4   }
	radMed1  {  L = 100  diam = 3   }
	radDist1 {  L = 200  diam = 2   }
  radProx2 {  L = 100  diam = 4   }
  radMed2  {  L = 100  diam = 3   }
  radDist2 {  L = 200  diam = 2   }    
	oriProx1 {  L = 100  diam = 2   }
	oriMed1  {  L = 100  diam = 1.5 }
	oriDist1 {  L = 100  diam = 1   }
	oriProx2 {  L = 100  diam = 2   }
	oriMed2  {  L = 100  diam = 1.5 }
	oriDist2 {  L = 100  diam = 1   }
}

external lambda_f
proc geom_nseg() {
  	forsec all { nseg = int((L/(0.1*lambda_f(100))+.9)/2)*2 + 1  }
}

proc biophys() {

	gna   = 0.09
	gk    = 0.018
	gleak = 1.0159e-04
  c_m   = 1.4
  Vrest = -67.0

	soma {
		insert ichan2bs
		gnatbar_ichan2bs = gna    // Sodium conductance (original 0.015)
		gkfbar_ichan2bs  = gk		  // Delayed K+ rectifier (fast)
		gl_ichan2bs      = gleak	// Leak conductance
		cm               = c_m    // membrane capacitance
    el_ichan2bs      = Vrest
	} 
	
	radProx1 {
		insert ichan2bs
		gnatbar_ichan2bs = gna  	// Sodium conductance (original 0.015)
		gkfbar_ichan2bs  = gk		  // Delayed K+ rectifier (fast)
		gl_ichan2bs      = gleak	// Leak conductance
		cm               = c_m    // membrane capacitance
    el_ichan2bs      = Vrest
	}		

	radProx2 {
		insert ichan2bs
		gnatbar_ichan2bs = gna  	// Sodium conductance (original 0.015)
		gkfbar_ichan2bs  = gk		  // Delayed K+ rectifier (fast)
		gl_ichan2bs      = gleak	// Leak conductance
		cm               = c_m    // membrane capacitance
    el_ichan2bs      = Vrest
	}

  radMed1 {
    insert ichan2bs
    gnatbar_ichan2bs = gna    // Sodium conductance (original 0.015)
    gkfbar_ichan2bs  = gk     // Delayed K+ rectifier (fast)
    gl_ichan2bs      = gleak  // Leak conductance
    cm               = c_m    // membrane capacitance
    el_ichan2bs      = Vrest
  }   

  radMed2 {
    insert ichan2bs
    gnatbar_ichan2bs = gna    // Sodium conductance (original 0.015)
    gkfbar_ichan2bs  = gk     // Delayed K+ rectifier (fast)
    gl_ichan2bs      = gleak  // Leak conductance
    cm               = c_m    // membrane capacitance
    el_ichan2bs      = Vrest
  }   

  radDist1 {
    insert ichan2bs
    gnatbar_ichan2bs = gna    // Sodium conductance (original 0.015)
    gkfbar_ichan2bs  = gk     // Delayed K+ rectifier (fast)
    gl_ichan2bs      = gleak  // Leak conductance
    cm               = c_m    // membrane capacitance
    el_ichan2bs      = Vrest
  }   

  radDist2 {
    insert ichan2bs
    gnatbar_ichan2bs = gna    // Sodium conductance (original 0.015)
    gkfbar_ichan2bs  = gk     // Delayed K+ rectifier (fast)
    gl_ichan2bs      = gleak  // Leak conductance
    cm               = c_m    // membrane capacitance
    el_ichan2bs      = Vrest
  }  

	oriProx1 {
		insert ichan2bs
		gnatbar_ichan2bs = gna  	// Sodium conductance (original 0.015)
		gkfbar_ichan2bs  = gk		  // Delayed K+ rectifier (fast)
		gl_ichan2bs      = gleak	// Leak conductance
		cm               = c_m    // membrane capacitance
    el_ichan2bs      = Vrest
	}		

	oriProx2 {
		insert ichan2bs
		gnatbar_ichan2bs = gna  	// Sodium conductance (original 0.015)
		gkfbar_ichan2bs  = gk		  // Delayed K+ rectifier (fast)
		gl_ichan2bs      = gleak	// Leak conductance
		cm               = c_m    // membrane capacitance
    el_ichan2bs      = Vrest
	}		

	oriMed1 {
		insert ichan2bs
		gnatbar_ichan2bs = gna  	// Sodium conductance (original 0.015)
		gkfbar_ichan2bs  = gk		  // Delayed K+ rectifier (fast)
		gl_ichan2bs      = gleak	// Leak conductance
		cm               = c_m    // membrane capacitance
    el_ichan2bs      = Vrest
	}		

	oriMed2 {
		insert ichan2bs
		gnatbar_ichan2bs = gna  	// Sodium conductance (original 0.015)
		gkfbar_ichan2bs  = gk		  // Delayed K+ rectifier (fast)
		gl_ichan2bs      = gleak	// Leak conductance
		cm               = c_m    // membrane capacitance
    el_ichan2bs      = Vrest
	}		
	
	oriDist1 {
		insert ichan2bs
		gnatbar_ichan2bs = gna  	// Sodium conductance (original 0.015)
		gkfbar_ichan2bs  = gk		  // Delayed K+ rectifier (fast)
		gl_ichan2bs      = gleak	// Leak conductance
		cm               = c_m    // membrane capacitance
    el_ichan2bs      = Vrest
	}		

	oriDist2 {
		insert ichan2bs
		gnatbar_ichan2bs = gna  	// Sodium conductance (original 0.015)
		gkfbar_ichan2bs  = gk		  // Delayed K+ rectifier (fast)
		gl_ichan2bs      = gleak	// Leak conductance
		cm 		           = c_m    // membrane capacitance
    el_ichan2bs      = Vrest
	}		

	forsec all {
    // Time constant for decay of intracellular Ca2+
    // Steady-state intracellular Ca2+ concentration
		insert ccanl
		catau_ccanl  = 10
		caiinf_ccanl = 5.0e-6
		cao_ccanl    = 2

    // A-type K+ conductance
		insert borgka
		gkabar_borgka = 0.00005

    // N-type Ca2+ conductance
		insert nca
		gncabar_nca = 0.0004		// check to modify- original 0.004
		
    // L-type Ca2+ conductance
		insert lca
		glcabar_lca = 0.004
		
    // Ca2+-dependent K (SK) conductance
		insert gskch
		gskbar_gskch = 0.000002
		
    // Ca2+ and Voltage-dependent K+ (BK) conductance
		insert mykca
		gkbar_mykca = 0.0002

		Ra   = 100
		enat = 55
		ekf  = -90
		eks  = -90
		ek   = -90
		elca = 130
		enca = 130	
	}
}

obfunc connect2target() { localobj nc //$o1 target point process, optional $o2 returned NetCon
	soma nc = new NetCon(&v(1), $o1)
	nc.threshold = -10
	if (numarg() == 2) { $o2 = nc } // for backward compatibility
	return nc
}

objref syn_
proc synapses_EC() {
  /* E0 */   radMed1 syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)	// AMPA		EC 
  syn_.tau1 = 2.0
  syn_.tau2 = 6.3
  syn_.e    = 0
  /* E1 */   radMed2 syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)	// AMPA		EC 
  syn_.tau1 = 2.0
  syn_.tau2 = 6.3
  syn_.e    = 0
}

proc synapses_CA3() {
  /* E2 */   radMed1 syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)	// AMPA		CA3 Shaffer collateral
  syn_.tau1 = 2.0
  syn_.tau2 = 6.3
  syn_.e    = 0
  /* E3 */   radMed2 syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)	// AMPA		CA3 Shaffer collateral
  syn_.tau1 = 2.0
  syn_.tau2 = 6.3
  syn_.e    = 0
  /* E4 */   radProx1 syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)	// AMPA		CA3 Shaffer collateral
  syn_.tau1 = 2.0
  syn_.tau2 = 6.3
  syn_.e    = 0
  /* E5 */   radProx2 syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)	// AMPA		CA3 Shaffer collateral
  syn_.tau1 = 2.0
  syn_.tau2 = 6.3
  syn_.e    = 0
}

proc synapses_PC() {
  /* E6 */   oriProx1 syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)	// AMPA		PC
  syn_.tau1 = 0.11
  syn_.tau2 = 0.25
  syn_.e    = 0
  /* E7 */   oriProx2 syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)	// AMPA		PC
  syn_.tau1 = 0.11
  syn_.tau2 = 0.25
  syn_.e    = 0
}

proc synapses_IN() {
  /* I8 */   soma syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)  // GABA-A Basket cell
  syn_.tau1 = 0.29
  syn_.tau2 = 2.67
  syn_.e    = -75
  /* I9 */   radMed1 syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)	// GABA-A	Bistratified cell
  syn_.tau1 = 0.29
  syn_.tau2 = 2.67
  syn_.e    = -75
  /* I10 */  radMed2 syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)  // GABA-A Bistratified cell
  syn_.tau1 = 0.29
  syn_.tau2 = 2.67
  syn_.e    = -75      
  /* I11 */  radDist1 syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)  // GABA-A OLM cell
  syn_.tau1 = 0.60
  syn_.tau2 = 15.0
  syn_.e    = -75
  /* I12 */  radDist2 syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)  // GABA-A OLM cell
  syn_.tau1 = 0.60
  syn_.tau2 = 15.0
  syn_.e    = -75      
  /* I13 */  soma syn_ = new MyExp2Syn(0.5)  pre_list.append(syn_)  // GABA-A VIP/CCK cell
  syn_.tau1 = 0.43
  syn_.tau2 = 4.49
  syn_.e    = -75
}

proc synapses_SEP() {
  /* I14 */   oriProx1 syn_ = new MyExp2Syn(0.6)  pre_list.append(syn_)	// GABA-A	Septum
  syn_.tau1 = 1
  syn_.tau2 = 8
  syn_.e    = -75
  /* I15 */   oriProx2 syn_ = new MyExp2Syn(0.6)  pre_list.append(syn_)	// GABA-A	Septum
  syn_.tau1 = 1
  syn_.tau2 = 8
  syn_.e    = -75
  /* I16 */   oriProx1 syn_ = new MyExp2Syn(0.6)  pre_list.append(syn_)	// GABA-B	Septum
  syn_.tau1 = 35
  syn_.tau2 = 100
  syn_.e    = -75
  /* I17 */   oriProx2 syn_ = new MyExp2Syn(0.6)  pre_list.append(syn_)	// GABA-B	Septum
  syn_.tau1 = 35
  syn_.tau2 = 100
  syn_.e    = -75
}

proc synapses() {
  synapses_EC()
  synapses_CA3()
  synapses_PC()
  synapses_IN()
  synapses_SEP()
}


func is_art() { return 0 }

endtemplate BistratifiedCell

Loading data, please wait...