CA3 Network Model of Epileptic Activity (Sanjay et. al, 2015)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:186768
This computational study investigates how a CA3 neuronal network consisting of pyramidal cells, basket cells and OLM interneurons becomes epileptic when dendritic inhibition to pyramidal cells is impaired due to the dysfunction of OLM interneurons. After standardizing the baseline activity (theta-modulated gamma oscillations), systematic changes are made in the connectivities between the neurons, as a result of step-wise impairment of dendritic inhibition.
Reference:
1 . Sanjay M, Neymotin SA, Krothapalli SB (2015) Impaired dendritic inhibition leads to epileptic activity in a computer model of CA3. Hippocampus 25:1336-50 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network; Extracellular;
Brain Region(s)/Organism:
Cell Type(s): Hippocampus CA3 pyramidal cell; Hippocampus CA3 interneuron basket cell; Hippocampus CA3 stratum oriens lacunosum-moleculare interneuron;
Channel(s):
Gap Junctions:
Receptor(s): GabaA; AMPA; NMDA;
Gene(s): HCN1; HCN2;
Transmitter(s):
Simulation Environment: NEURON; Python;
Model Concept(s): Activity Patterns; Oscillations; Pathophysiology; Epilepsy; Brain Rhythms;
Implementer(s): Neymotin, Sam [samn at neurosim.downstate.edu]; Sanjay, M [msanjaycmc at gmail.com];
Search NeuronDB for information about:  Hippocampus CA3 pyramidal cell; Hippocampus CA3 interneuron basket cell; GabaA; AMPA; NMDA;
/
SanjayEtAl2015
readme.html
CA1ih.mod *
CA1ika.mod *
CA1ikdr.mod *
CA1ina.mod *
caolmw.mod *
capr.mod *
icaolmw.mod *
icapr.mod *
iholmkop.mod *
iholmw.mod *
ihpyrkop.mod *
kahppr.mod *
kaolmkop.mod *
kapyrkop.mod *
kcaolmw.mod *
kcpr.mod *
kdrbwb.mod *
kdrolmkop.mod *
kdrpr.mod *
kdrpyrkop.mod *
misc.mod *
MyExp2Syn.mod *
MyExp2SynAlpha.mod *
MyExp2SynBB.mod *
MyExp2SynNMDA.mod *
MyExp2SynNMDABB.mod *
nafbwb.mod *
nafolmkop.mod *
nafpr.mod *
nafpyrkop.mod *
stats.mod
vecst.mod *
wrap.mod *
aux_fun.inc *
declist.hoc *
decmat.hoc *
decnqs.hoc *
decvec.hoc *
default.hoc *
drline.hoc *
Epileptic Activity.png
geom.hoc *
geom.py *
grvec.hoc *
init.hoc *
labels.hoc *
local.hoc *
misc.h *
mosinit.py
network.py *
networkmsj.py
nqs.hoc *
nqs_utils.hoc *
nrnoc.hoc *
params.py
pyinit.py *
run.py
simctrl.hoc *
stats.hoc *
syncode.hoc *
xgetargs.hoc *
xtmp
                            
# $Id: geom.py,v 1.30 2011/01/02 19:56:14 samn Exp $ 

from pyinit import *

class Synapse:
	def __init__(self, sect, loc, tau1, tau2, e):
		self.syn		= h.MyExp2SynBB(loc, sec=sect)
		self.syn.tau1	= tau1
		self.syn.tau2	= tau2
		self.syn.e		= e 
		
class SynapseNMDA:
	def __init__(self, sect, loc, tau1, tau2, tau1NMDA, tau2NMDA, r, e):
		self.syn			= h.MyExp2SynNMDABB(loc, sec=sect)
		self.syn.tau1		= tau1
		self.syn.tau2		= tau2
		self.syn.tau1NMDA	= tau1NMDA
		self.syn.tau2NMDA	= tau2NMDA 
		self.syn.r			= r
		self.syn.e			= e 
		
###############################################################################
#
# General Cell
#
###############################################################################
class Cell:
	"General cell"
	
	def __init__(self,x,y,z,id):
		self.x=x
		self.y=y
		self.z=z
		self.id=id
		self.all_sec = []
		self.add_comp('soma',True)
		self.set_morphology()
		self.set_conductances()
		self.set_synapses()
		self.set_inj()
		self.calc_area()
		
	def set_morphology(self):
		pass
			
	def set_conductances(self):
		pass
		
	def set_synapses(self):
		pass
		
	def set_inj(self):
		self.somaInj = h.IClamp(0.5, sec=self.soma)	
		
	def add_comp(self, name, rec):
		self.__dict__[name] = h.Section()
		self.all_sec.append(self.__dict__[name])
		# Record voltage
		if rec:
			self.__dict__[name+"_volt"] = h.Vector(int(h.tstop/h.dt)+1)
			self.__dict__[name+"_volt"].record(self.__dict__[name](0.5)._ref_v)
	
	def plot_volt(self, name, fig=1):
		figure(fig)
		volt = self.__dict__[name+"_volt"].to_python()
		plot(arange(len(volt))*h.dt, volt)
		
	def calc_area(self):
		self.total_area = 0
		self.n = 0
		for sect in self.all_sec:
			self.total_area += h.area(0.5,sec=sect)
			self.n+=1
			
###############################################################################
#
# Basket Cell -- Bwb
#
###############################################################################

class Bwb(Cell):
	"Basket cell"
	
	def set_morphology(self):
		total_area = 10000 # um2
		self.soma.nseg  = 1
		self.soma.cm    = 1      # uF/cm2
		diam = sqrt(total_area) # um
		L    = diam/pi  # um
			
		h.pt3dclear(sec=self.soma)
		h.pt3dadd(self.x, self.y, self.z,   diam, sec=self.soma)
		h.pt3dadd(self.x, self.y, self.z+L, diam, sec=self.soma)
			
	def set_conductances(self):
		self.soma.insert('pas')
		self.soma.e_pas = -65     # mV
		self.soma.g_pas = 0.1e-3  # S/cm2 
	  
		self.soma.insert('Nafbwb')
		self.soma.insert('Kdrbwb')
	   
	def set_synapses(self):
		self.somaAMPAf 	= Synapse(sect=self.soma, loc=0.5, tau1=0.05, tau2=5.3, e=0)
		self.somaGABAf 	= Synapse(sect=self.soma, loc=0.5, tau1=0.07, tau2=9.1, e=-80)
		self.somaGABAss	= Synapse(sect=self.soma, loc=0.5, tau1=20,   tau2=40, e=-80)#only for septal input
		self.somaNMDA 	= SynapseNMDA(sect=self.soma, loc=0.5, tau1=0.05, tau2=5.3, tau1NMDA=15, tau2NMDA=150, r=1, e=0)
		
###############################################################################
#
# OLM Cell -- Ow
#
###############################################################################
class Ow(Cell):
	"OLM cell"
   
	def set_morphology(self):
		total_area = 10000 # um2
		self.soma.nseg  = 1
		self.soma.cm    = 1      # uF/cm2
		diam = sqrt(total_area) # um
		L    = diam/pi  # um

		h.pt3dclear(sec=self.soma)
		h.pt3dadd(self.x, self.y, self.z,   diam, sec=self.soma)
		h.pt3dadd(self.x, self.y, self.z+L, diam, sec=self.soma)
	
	def set_conductances(self):
		self.soma.insert('pas')
		self.soma.e_pas = -65     # mV
		self.soma.g_pas = 0.1e-3  # S/cm2 

		self.soma.insert('Nafbwb')
		self.soma.insert('Kdrbwb')

		self.soma.insert('Iholmw')
		self.soma.insert('Caolmw')
		self.soma.insert('ICaolmw')
		self.soma.insert('KCaolmw')

	def set_synapses(self):
		self.somaGABAf 	= Synapse(sect=self.soma, loc=0.5, tau1=0.07, tau2=9.1, e=-80)
		self.somaAMPAf 	= Synapse(    sect=self.soma, loc=0.5, tau1=0.05, tau2=5.3, e=0)
		self.somaGABAss	= Synapse(    sect=self.soma, loc=0.5, tau1=20,	  tau2=40, e=-80)#only for septal input
		self.somaNMDA 	= SynapseNMDA(sect=self.soma, loc=0.5, tau1=0.05, tau2=5.3, tau1NMDA=15, tau2NMDA=150, r=1, e=0)
		
###############################################################################
#
# Pyramidal Cell -- KopAdr
#
###############################################################################
class PyrAdr(Cell):
	"Pyramidal cell"

	def set_morphology(self):
		self.add_comp('Bdend',True)
		self.add_comp('Adend1',False)
		self.add_comp('Adend2',False)
		self.add_comp('Adend3',True)

		h.pt3dclear(sec=self.soma)
		h.pt3dadd(self.x, self.y, self.z,          20, sec=self.soma)
		h.pt3dadd(self.x, self.y, self.z+20,       20, sec=self.soma)

		h.pt3dclear(sec=self.Bdend)
		h.pt3dadd(self.x, self.y, self.z,          2, sec=self.Bdend)
		h.pt3dadd(self.x, self.y, self.z-200,      2, sec=self.Bdend)

		h.pt3dclear(sec=self.Adend1)
		h.pt3dadd(self.x, self.y, self.z+20,       2, sec=self.Adend1)
		h.pt3dadd(self.x, self.y, self.z+20+150,   2, sec=self.Adend1)

		h.pt3dclear(sec=self.Adend2)
		h.pt3dadd(self.x, self.y, self.z+20+150,   2, sec=self.Adend2)
		h.pt3dadd(self.x, self.y, self.z+20+150*2, 2, sec=self.Adend2)

		h.pt3dclear(sec=self.Adend3)
		h.pt3dadd(self.x, self.y, self.z+20+150*2, 2, sec=self.Adend3)
		h.pt3dadd(self.x, self.y, self.z+20+150*3, 2, sec=self.Adend3)

		self.Bdend.connect(self.soma,      0, 0)
		self.Adend1.connect(self.soma,   0.5, 0)
		self.Adend2.connect(self.Adend1,   1, 0)
		self.Adend3.connect(self.Adend2,   1, 0)

	def set_conductances(self):
		for sect in self.all_sec:
			sect.insert('pas')
			sect(0.5).pas.g = 0.0000357
			sect.insert('nacurrent')
			sect.insert('kacurrent')
			sect.insert('kdrcurrent')
			sect.insert('hcurrent')
			sect(0.5).pas.e = -70     # mV
			sect.cm = 1
			sect.Ra = 150

		self.Adend1(0.5).nacurrent.ki = 0.5
		self.Adend1(0.5).kacurrent.g  = 0.072
		self.Adend1(0.5).hcurrent.v50 = -82
		self.Adend1(0.5).hcurrent.g   = 0.0002
		
		self.Adend2(0.5).nacurrent.ki = 0.5
		self.Adend2(0.5).kacurrent.g  = 0
		self.Adend2(0.5).kacurrent.gd = 0.120
		self.Adend2(0.5).hcurrent.v50 = -90
		self.Adend2(0.5).hcurrent.g   = 0.0004
		
		self.Adend3(0.5).cm           = 2
		self.Adend3(0.5).pas.g        = 0.0000714
		self.Adend3(0.5).nacurrent.ki = 0.5
		self.Adend3(0.5).kacurrent.g  = 0
		self.Adend3(0.5).kacurrent.gd = 0.200		
		self.Adend3(0.5).hcurrent.v50 = -90
		self.Adend3(0.5).hcurrent.g   = 0.0007
		
		self.Bdend(0.5).nacurrent.ki  = 1

	def set_synapses(self):
		self.somaGABAf 	 = Synapse(    sect=self.soma,   loc=0.5, tau1=0.07, tau2=9.1, 	  e=-80)
		self.somaAMPAf 	 = Synapse(    sect=self.soma,   loc=0.5, tau1=0.05, tau2=5.3, 	   e=0)
		self.BdendAMPA   = Synapse(    sect=self.Bdend,  loc=1.0, tau1=0.05, tau2=5.3,     e=0)
		self.BdendNMDA   = SynapseNMDA(sect=self.Bdend,  loc=1.0, tau1=0.05, tau2=5.3, tau1NMDA=15, tau2NMDA=150, r=1, e=0)
		self.Adend2GABAs = Synapse(	   sect=self.Adend2, loc=0.5, tau1=0.2,  tau2=20,   e=-80)
		self.Adend3GABAf = Synapse(	   sect=self.Adend3, loc=0.5, tau1=0.07, tau2=9.1,   e=-80)
		self.Adend3AMPAf = Synapse(	   sect=self.Adend3, loc=0.5, tau1=0.05, tau2=5.3,    e=0)
		self.Adend3NMDA  = SynapseNMDA(sect=self.Adend3, loc=0.5, tau1=0.05, tau2=5.3, tau1NMDA=15, tau2NMDA=150, r=1, e=0)