Ketamine disrupts theta modulation of gamma in a computer model of hippocampus (Neymotin et al 2011)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:139421
"Abnormalities in oscillations have been suggested to play a role in schizophrenia. We studied theta-modulated gamma oscillations in a computer model of hippocampal CA3 in vivo with and without simulated application of ketamine, an NMDA receptor antagonist and psychotomimetic. Networks of 1200 multi-compartment neurons (pyramidal, basket and oriens-lacunosum moleculare, OLM, cells) generated theta and gamma oscillations from intrinsic network dynamics: basket cells primarily generated gamma and amplified theta, while OLM cells strongly contributed to theta. ..."
Reference:
1 . Neymotin SA, Lazarewicz MT, Sherif M, Contreras D, Finkel LH, Lytton WW (2011) Ketamine Disrupts Theta Modulation of Gamma in a Computer Model of Hippocampus J Neurosci . [PubMed]
Citations  Citation Browser
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 CA3 pyramidal GLU cell; Hippocampus CA3 interneuron basket GABA cell; Hippocampus CA3 stratum oriens lacunosum-moleculare interneuron;
Channel(s): I L high threshold; I A; I K; I K,Ca;
Gap Junctions:
Receptor(s): GabaA; NMDA; Glutamate;
Gene(s): HCN1; HCN2;
Transmitter(s): Gaba; Glutamate;
Simulation Environment: NEURON; Python;
Model Concept(s): Oscillations; Synchronization; Therapeutics; Pathophysiology; Schizophrenia; Information transfer; Brain Rhythms;
Implementer(s): Lazarewicz, Maciej [mlazarew at gmu.edu]; Neymotin, Sam [Samuel.Neymotin at nki.rfmh.org];
Search NeuronDB for information about:  Hippocampus CA3 pyramidal GLU cell; Hippocampus CA3 interneuron basket GABA cell; GabaA; NMDA; Glutamate; I L high threshold; I A; I K; I K,Ca; Gaba; Glutamate;
/
hpcdemo
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 *
geom.hoc *
geom.py *
grvec.hoc *
init.hoc *
labels.hoc *
local.hoc *
misc.h *
mosinit.py
network.py *
nqs.hoc *
nqs_utils.hoc *
nrnoc.hoc *
params.py
pyinit.py *
run.py
screenshot.png
simctrl.hoc *
stats.hoc *
syncode.hoc *
xgetargs.hoc *
                            
// $Id: labels.hoc,v 1.95 2011/01/14 16:46:02 billl Exp $

load_file("declist.hoc")
// keep track of version number for future changes
// eg if (label_hoc_vers>88) rcsopen("labels.hoc",88) // go back to 88
labels_hoc_vers=find_num("$Id: labels.hoc,v 1.95 2011/01/14 16:46:02 billl Exp $","1\\."," ")
objref NCv,CODEv,DELv
objref PRIDv,POIDv,PRv,POv,DISTv,WT0v,WT1v // mo(1) will assign these
declare("ce",nil,"CTYP",new List(),"CPLA",new List(),"TPA",new List(),"nm",new List())
declare("STYP",new List(),"ncells",0,"ZTYP",new List(),"INCOL",new List())
declare("DEND",0,"SOMA",1,"AXON",2) // compartment codes - only 3 for now

//* utility functions
// plmin(val,var)
func plmin() { return $1 + $2*(2*u_rand() - 1) } 

//* cell types: 
// iex(), returns numeric index associated with a string or string object
func iex () { 
  if (argtype(1)==2) sprint(tstr,"x=%s",$s1) else sprint(tstr,"x=%s",$o1.s)
  execute(tstr) return x 
}
// ice(), returns whether cell is an inhib cell based on its name starting with I
func ice () { local x
  if (argtype(1)==2) return strm($s1,"^I")
  if (argtype(1)==0) x=$1 else if (argtype(1)==1) x=$o1.type 
  return strm(CTYP.o(x).s,"^I")
}
//* GetLyr - return layer of type
func GetLyr () { local x localobj st
  st=new String()
  if (argtype(1)==2) st.s=$s1 else if (argtype(1)==0) st.s=CTYP.o($1).s else {
    st.s=CTYP.o($o1.type).s }
  sscanf(st.s,"%*1s%d",&x)
  return x
}

proc printtype () { local i
  for (i=1;argtype(i)==0;i+=1) if ($i!=-1) printf("%s(%d) ",CTYP.o($i).s,$i)
  if (argtype(i)==2) printf("%s",$si) else print ""
}
proc celltype () { localobj st
  st=new String("\n")
  if (argtype(2)==2) st.s=$s2
  if (argtype(1)==0) printtype(ce.o($1).type,st.s) else printtype($o1.type,st.s) 
}

obfunc names2indices () { local x localobj lo,xo,st
  lo=new List() st=new String()
  split($s1,lo)
  for ltr(xo,lo,&x) { sprint(st.s,"%s=%d",xo.s,x) execute(st.s) }
  return lo
}

// at some point may want to divide up this list into cell type -- eg RS,IB and location
CTYP=names2indices("NU,SM,DP,SU,IN,TC,IRE,ITH,E6,I6,I6C,I6L,E5B,E5R,I5,I5L,E4,I4,I4L,E2,E2B,I2,I2Q,I2C,I2L,RS,IB,LTS,FS,ECA1,ICA1,ICA1L,EDG,IDG,IDGL,ECA3,ICA3,ICA3L,E3,I3,I3L")
CTYPi=CTYP.count  // number of cell types

// 1 cmp nrn, 2 cmp nrn, multi cmp nrn, intfire1, INTF, invlfire, nstim
for scase2(XO,"1-CMP","CMP1","2-CMP","CMP2","MULTI-CMP","MC","IntFire1","IF1","INTF","IF",\
          "INVLF","IFV","NStim","STM") { CPLA.append(XO)
  sprint(tstr,"%s=%d",XO.t,i1) execute(tstr) }
CPLAi=CPLA.count // count of cell templates

for scase2(XO,"REAL","RL","ARTC","AC","SOMA","SO","DEND","DN") {TPA.append(XO)}
TPAi=TPA.count

proc ae () { localobj xo
  STYP.remove_all
  for scase2(xo,"AMPA","AM","NMDA","NM","GABAA","GA","GABAB","GB",\
             "AMPA2","AM2","NMDA2","NM2","GABAA2","GA2","GABAB2","GB2",\
           "IClamp","IC","AMPA/NMDA","EX","GABAA/GABAB2","IX","Exp2Syn","E2Sy"){
    STYP.append(new String2(xo.t,xo.s)) // switch them around here
    sprint(tstr,"%s=%d",xo.t,i1)
    execute(tstr)
  }
  STYPi=STYP.count  // number of cell types
}
ae()

for scase(XO,"DG","CA3","CA1","SUB","PSUB","MEC","LEC") {
  sprint(tstr,"%s=%d",XO.s,i1) execute(tstr) ZTYP.append(new String(XO.s))
}

for scase2(XO,"RIGHT","RIT","INCOL","INC","LEFT","LFT") { INCOL.append(new String(XO.s))
  sprint(tstr,"%s=%d",XO.t,i1) execute(tstr) }
INCOLi=INCOL.count

//* IsLTS - return if type is LTS
func IsLTS () {
  return $1 == I2L || $1 == I4L || $1 == I5L || $1 == I6L 
}
//* IsBurst - return if type is intrinsically bursting
func IsBurst () {
  return $1 == E2B || $1 == E5B
}
//* IsFRB - return true if type is fast regular bursting
func IsFRB () {
  return $1 == E2B
}
//* IsRS - return true if type is regular spiking E cell
func IsRS () {
  return $1 == E2 || $1 == E4 || $1 == E5R || $1 == E6
}
//* IsFS - return true if type is fast spiking interneuron
func IsFS () {
  return $1 == I2 || $1 == I4 || $1 == I5 || $1 == I6 || $1 == ICA3 || $1 == IDG || $1 == ICA1
}

func isartcell () { return sfunc.is_point_process($o1) }