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]
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 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 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: nrnoc.hoc,v 1.74 2007/11/20 07:51:52 billl Exp $

proc nrnoc () {}

// Users should not edit nrnoc.hoc or default.hoc.  Any local 
// changes to these files should be made in local.hoc.

// key '*&*' is picked up by to indicate command for emacs
proc elisp () { printf("*&* %s\n",$s1) }
// if (not exists(simname)) { strdef simname, output_file, datestr, comment }

// Simctrl.hoc will automatically load stdgraph.hoc which automatically
// loads stdrun.hoc
strdef temp_string_, user_string_  // needed for simctrl
/* Global variable default values.  NOTE that stdrun.hoc, stdgraph.hoc
and simctrl.hoc all contain variable definitions and thus default.hoc
should be loaded after these files */
load_file("default.hoc")      /* Load default.hoc */

/* Allows arrays of strings */
objref hoc_obj_[2]
load_file("stdgui.hoc") // don't want to encounter other String tempate defs
load_file("simctrl.hoc")

proc run () {
  running_ = 1
  stdinit()
  continueRun(tstop)
  finish()
}

proc continueRun () { local rt, rtstart, ts
  if (numarg()==1) ts=$1 else ts=t+1e3
  realtime = 0  rt = screen_update_invl  rtstart = startsw()
  eventcount=0
  eventslow=1
  stoprun = 0
  if (using_cvode_) {
    if (cvode.use_local_dt || (cvode.current_method()%10) == 0) {
      cvode.solve(ts)
      flushPlot()
      realtime = startsw() - rtstart
      return
    }
  } else {
    ts -= dt/2
  }
  while (t<ts && stoprun==0) {
    step()
    realtime = startsw() - rtstart
    if (realtime >= rt) {
      //                        if (!stdrun_quiet) fastflushPlot()
      screen_update()
      //really compute for at least screen_update_invl
      realtime = startsw() - rtstart
      rt = realtime + screen_update_invl
    }
  }
  if (using_cvode_ && stoprun == 0) { // handle the "tstop" event
    step() // so all recordings take place at tstop
  }
  flushPlot()
  realtime = startsw() - rtstart
}

proc stdinit() {
        cvode_simgraph()
        realtime = 0
        setdt()
        init()
        initPlot()
}

proc init () {
  cvode_simgraph()
  initMech()
  initMisc1()

  // Initialize state vars then calculate currents
  // If user hand-set v in initMisc1() then v_init should be > 1000,
  // else all compartments will be set to v_init
  if (v_init < 1000) {
    finitialize(v_init)
  } else {
    finitialize()
  }

  // Set ca pump and leak channel for steady state
  setMemb()

  initMisc2()
  if (cvode_active()) cvode.re_init() else fcurrent()
  frecord_init()
}

// Initialization of mechanism variables
// NOTE: if any changes are made to the NEURON block of any local mod
// file, the user must add the necessary inits to initMisc1()
proc initMech () { 
  forall {
    if ((!ismembrane("pas")) && (!ismembrane("Passive"))) { 
      // Allow for either pas or Passive mod file usage
      // errorMsg("passive not inserted") 
    }

    if (ismembrane("na_ion")) { 
      nai = na_init
      nai0_na_ion = na_init
    }
    
    if (ismembrane("k_ion")) {
      ki = k_init
      ki0_k_ion = k_init
    }
    
    if (ismembrane("ca_ion")) { 
      cai = ca_init
      cai0_ca_ion = ca_init
    }
  }
}

//* setMemb complex -- multiple names for passive mech
//** declarations
iterator scase() { local i
  for i = 1, numarg() { temp_string_ = $si iterator_statement }}
objref paslist,pasvars[3],XO
double pasvals[2],x[1]
paslist = new List()
for ii=0,2 pasvars[ii]= new String()
for scase("fastpas","pas","Pass","Passive") paslist.append(new String(temp_string_))

//** getval(),setval() -- return/set the hoc value of a string
func retval () { return getval($s1) }
func getval () { 
  sprint(temp_string2_,"x=%s",$s1)
  execute(temp_string2_)
  return x
}
proc setval () { 
  sprint(temp_string2_,"%s=%g",$s1,$2)
  execute(temp_string2_)
}

//** findpas()
// assumes that we are starting in a live section since looks for pass mech there
qx_=0
proc findpas () {
  for ii=0,paslist.count-1 {
    XO=paslist.object(ii)
    if (ismembrane(XO.s)) {
      // print XO.s,"found"
      pasvars[2].s=XO.s
      sprint(pasvars[0].s,"g_%s(qx_)",XO.s)
      for scase("e","erev","XXXX") {  // look for the proper prefix
        sprint(temp_string_,"%s_%s",temp_string_,XO.s)
        if (name_declared(temp_string_)==1) break
      }
      if (name_declared(temp_string_)==0) { // not found
        printf("SetMemb() in nrnoc.hoc: Can't find proper 'erev' prefix for %s\n",XO.s)
      } else {
        sprint(pasvars[1].s,"%s(qx_)",temp_string_)
      }
    }
  }
}

proc setMemb () {
  if (!secp()) return
  findpas() // assume that passive name is the same in all sections
  forall for (qx_,0) {  // will eventually want 'for (x)' to handle all the segments
    if (ismembrane(pasvars[2].s)) {
        for ii=0,1 pasvals[ii]=getval(pasvars[ii].s)
        setmemb2()
        for ii=0,1 setval(pasvars[ii].s,pasvals[ii])
    }
  }
}

// secp() determine whether any sections exist
func secp () { local n
  n=0
  forall n+=1
  if (n>0) return 1 else return 0
}

func setother () {return 0} // callback stub
proc setmemb2 () { local iSum, ii, epas, gpas
  if (!secp()) return
  gpas=pasvals[0] epas=pasvals[1]
  // Setup steady state voltage using leak channel
  iSum = 0.0
  if (ismembrane("na_ion")) { iSum += ina(qx_) }
  if (ismembrane("k_ion"))  { iSum += ik(qx_)  }
  if (ismembrane("ca_ion")) { iSum += ica(qx_) }
  iSum += setother()

  if (iSum == 0) {        // Passive cmp so set e_pas = v
    epas = v
  } else {
    if (gpas > 0) {    // Assume g set by user, calc e
      epas = v + iSum/gpas

    } else {            // Assume e set by user, calc g
      if (epas != v) {
        gpas = iSum/(epas - v)
      } else { gpas=0 }
    }
    if (gpas < 0) errorMsg("bad g", gpas)
    if (epas < -100 || epas > 0) {
      printf(".")
      // printf("%s erev: %g %g %g\n",secname(),e_pas,ina,ik)
    }
  }
  pasvals[0]=gpas pasvals[1]=epas
}

proc finish () {
  /* Called following completion of continueRun() */

finishMisc()

if (graph_flag == 1) {
  if (iv_flag == 1) {
    flushPlot()
    doEvents()
  } else {
    graphmode(-1)
    plt(-1)
  }
}

if (print_flag == 1) {
  wopen("")
}
}

/*------------------------------------------------------------
User definable GRAPHICS and PRINTING routines
------------------------------------------------------------*/

proc outputData() {
  // Default procedure - if outputData() doesn't exist in the run file

  if (graph_flag == 1) {
    if (iv_flag == 1) {
      Plot()
      rt = stopsw()
      if (rt > realtime) {
        realtime = rt
        fastflushPlot()
        doNotify()
        if (realtime == 2 && eventcount > 50) {
          eventslow = int(eventcount/50) + 1
        }
        eventcount = 0
      }else{
        eventcount = eventcount + 1
        if ((eventcount%eventslow) == 0) {
          doEvents()
        }
      }

    } else {
      graph(t)
    }
  }

  if (print_flag == 1) { 
    if (t%printStep <= printStep) { printOut() }
  }
}

proc printOut() {
  /* Default procedure - if printOut() doesn't exist in the run file */
}

proc initGraph() {
  /* Default procedure - if initGraph() doesn't exist in the run file */

graph()
}

proc initPrint() {
  /* Default procedure - if initPrint() doesn't exist in the run file */

wopen(output_file)
}

/*------------------------------------------------------------
User definable BATCH RUN routines
------------------------------------------------------------*/

proc nextrun() {
  // Called from finishmisc() following completion of batch in an autorun
  wopen("")   
  runnum = runnum + 1
  sprint(output_file,"data/b%s.%02d", datestr, runnum)
}                       

// commands for emacs
proc update_runnum() { 
  runnum = $1
  sprint(output_file,"data/%s.%02d", datestr, runnum)
  print "^&^ (progn (sim-index-revert)(setq sim-runnum ",runnum,"))" }
proc nrn_write_index() { printf("&INDEX& %s\n",$s1) }
proc nrn_update () { elisp("nrn-update") }
proc nrn_message () { printf("!&! %s\n",$s1) } 

/*------------------------------------------------------------
User definable INITIALIZATION and FINISH routines
------------------------------------------------------------*/

// Default procedure - if initMisc1() doesn't exist in the run file 
// Initializations performed prior to finitialize() 
// This should contain point process inits and inits for any changes 
//        made to the NEURON block of any local mod file 
proc initMisc1() { }

// Default procedure - if initMisc2() doesn't exist in the run file 
// Initializations performed after finitialize() 
proc initMisc2() { }

// Default procedure - if finishMisc() doesn't exist in the run file 
proc finishMisc() { }

/*------------------------------------------------------------
Miscellaneous routines
------------------------------------------------------------*/

proc errorMsg() {
  /* Print warning, assumes arg1 is string and arg2 if present is a
  variable value */

sectionname(section)

if (numarg() == 0) {
  printf("ERROR in errorMsg(): Needs at least 1 argument.\n")
} else if (numarg() == 1) {
  printf("ERROR: %s in section %s.\n", $s1, section)
} else {
  printf("ERROR: %s in section %s (var=%g).\n", $s1, section, $2)
}
}

proc clear() {
  /* Clear non-interviews plot window */
plt(-3)
}

func mod() { local x, y
  /* Mod function for non-integers */

x=$1
y=$2

return (x/y - int(x/y))
}

proc whatSection() { print secname() }

proc print_pp_location() { local x //arg1 must be a point process
   x = $o1.get_loc()
   sectionname(temp_string_)
   printf("%s located at %s(%g)\n", $o1, temp_string_, x)
   pop_section()
}

//* set method with method()
proc method () { local prc
  if (numarg()==0) {
    if (cvode_active() && cvode_local()) { printf("\tlocal atol=%g\n",cvode.atol)
    } else if (cvode_active()) { printf("\tglobal atol=%g\n",cvode.atol)
    } else if (secondorder==2) { printf("\tCrank-Nicholson dt=%g\n",dt)
    } else if (secondorder==0) { printf("\timplicit dt=%g\n",dt)
    } else { printf("\tMethod unrecognized\n") }
    return
  }
  if (numarg()==2) prc = $2 else prc=0
  finitialize()
  if (strcmp($s1,"global")==0) {
    cvode_active(1)
    cvode.condition_order(2)
    if (prc) cvode.atol(prc)
  } else if (strcmp($s1,"local")==0) {
    cvode_local(1)
    cvode.condition_order(2)
    if (prc) cvode.atol(prc)
  } else if (strcmp($s1,"implicit")==0) {
    secondorder=0
    cvode_active(1)
    cvode_active(0)
    if (prc) dt=prc
  } else if (strcmp($s1,"CN")==0) {
    secondorder=2
    cvode_active(1) // this turns off local
    cvode_active(0)
    if (prc) dt=prc
  } else {
    printf("Integration method %s not recognized\n",$s1)
  }
}

//* Load local modifications to nrnoc.hoc and default.hoc
load_file("local.hoc")

if (xwindows && graph_flag) { nrnmainmenu() } // pwman_place(50,50)

print "Init complete.\n"

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]

References and models cited by this paper

References and models that cite this paper

Barbarosie M, Avoli M (1997) CA3-driven hippocampal-entorhinal loop controls rather than sustains in vitro limbic seizures. J Neurosci 17:9308-14 [PubMed]

Bihi RI, Jefferys JG, Vreugdenhil M (2005) The role of extracellular potassium in the epileptogenic transformation of recurrent GABAergic inhibition. Epilepsia 46 Suppl 5:64-71 [Journal] [PubMed]

Bikson M, Hahn PJ, Fox JE, Jefferys JG (2003) Depolarization block of neurons during maintenance of electrographic seizures. J Neurophysiol 90:2402-8 [PubMed]

Borhegyi Z, Varga V, Szilágyi N, Fabo D, Freund TF (2004) Phase segregation of medial septal GABAergic neurons during hippocampal theta activity. J Neurosci 24:8470-9 [PubMed]

Buhl EH, Halasy K, Somogyi P (1994) Diverse sources of hippocampal unitary inhibitory postsynaptic potentials and the number of synaptic release sites. Nature 368:823-8 [PubMed]

Carnevale NT, Hines ML (2006) The NEURON Book

Cobb SR, Halasy K, Vida I, Nyiri G, Tamas G, Buhl EH, Somogyi P (1997) Synaptic effects of identified interneurons innervating both interneurons and pyramidal cells in the rat hippocampus. Neuroscience 79:629-48 [PubMed]

Colgin LL, Moser EI (2010) Gamma oscillations in the hippocampus. Physiology (Bethesda) 25:319-29 [PubMed]

Cooke SF, Bliss TV (2006) Plasticity in the human central nervous system. Brain 129:1659-73 [PubMed]

Cossart R, Dinocourt C, Hirsch JC, Merchan-Perez A, De Felipe J, Ben-Ari Y, Esclapez M, Berna (2001) Dendritic but not somatic GABAergic inhibition is decreased in experimental epilepsy. Nat Neurosci 4:52-62 [PubMed]

Curley AA, Lewis DA (2012) Cortical basket cell dysfunction in schizophrenia. J Physiol 590:715-24 [Journal] [PubMed]

Cymerblit-Sabba A, Schiller Y (2012) Development of hypersynchrony in the cortical network during chemoconvulsant-induced epileptic seizures in vivo. J Neurophysiol 107:1718-30 [Journal] [PubMed]

Dinocourt C, Petanjek Z, Freund TF, Ben-Ari Y, Esclapez M (2003) Loss of interneurons innervating pyramidal cell dendrites and axon initial segments in the CA1 region of the hippocampus following pilocarpine-induced seizures. J Comp Neurol 459:407-25 [Journal] [PubMed]

Dragoi G, Carpi D, Recce M, Csicsvari J, Buzsáki G (1999) Interactions between hippocampus and medial septum during sharp waves and theta oscillation in the behaving rat. J Neurosci 19:6191-9 [PubMed]

Dudek FE,Stanley KJ (2007) How does the balance of excitation and inhibition shift during epileptogenesis? Epilepsy Curr 7:86-88

Dzhala VI, Staley KJ (2003) Transition from interictal to ictal activity in limbic networks in vitro. J Neurosci 23:7873-80 [PubMed]

El-Hassar L, Milh M, Wendling F, Ferrand N, Esclapez M, Bernard C (2007) Cell domain-dependent changes in the glutamatergic and GABAergic drives during epileptogenesis in the rat CA1 region. J Physiol 578:193-211 [PubMed]

Furman M (2013) Seizure initiation and propagation in the pilocarpine rat model of temporal lobe epilepsy. J Neurosci 33:16409-11 [Journal] [PubMed]

Gloveli T, Dugladze T, Rotstein HG, Traub RD, Monyer H, Heinemann U, Whittington MA, Kopell N (2005) Orthogonal arrangement of rhythm-generating microcircuits in the hippocampus. Proc Natl Acad Sci U S A 102:13295-300 [Journal] [PubMed]

   Gamma and theta rythms in biophysical models of hippocampus circuits (Kopell et al. 2011) [Model]

Hines ML, Davison AP, Muller E (2009) NEURON and Python Frontiers in Neuroinformatics 3:1 [Journal] [PubMed]

   NEURON + Python (Hines et al. 2009) [Model]

Jahr CE, Stevens CF (1990) Voltage dependence of NMDA-activated macroscopic conductances predicted by single-channel kinetics. J Neurosci 10:3178-82 [PubMed]

Jung S, Warner LN, Pitsch J, Becker AJ, Poolos NP (2011) Rapid loss of dendritic HCN channel expression in hippocampal pyramidal neurons following status epilepticus. J Neurosci 31:14291-5 [Journal] [PubMed]

Karlócai MR, Kohus Z, Káli S, Ulbert I, Szabó G, Máté Z, Freund TF, Gulyás AI (2014) Physiological sharp wave-ripples and interictal events in vitro: what's the difference? Brain 137:463-85 [Journal] [PubMed]

Kurz JE, Moore BJ, Henderson SC, Campbell JN, Churn SB (2008) A cellular mechanism for dendritic spine loss in the pilocarpine model of status epilepticus. Epilepsia 49:1696-710 [Journal] [PubMed]

Lazarewicz MT, Migliore M, Ascoli GA (2002) A new bursting model of CA3 pyramidal cell physiology suggests multiple locations for spike initiation. Biosystems 67:129-37 [Journal] [PubMed]

   CA3 pyramidal neuron (Lazarewicz et al 2002) [Model]

Leite JP, Neder L, Arisi GM, Carlotti CG, Assirati JA, Moreira JE (2005) Plasticity, synaptic strength, and epilepsy: what can we learn from ultrastructural data? Epilepsia 46 Suppl 5:134-41 [Journal] [PubMed]

Lytton WW (2008) Computer modelling of epilepsy. Nat Rev Neurosci 9:626-37 [Journal] [PubMed]

Lytton WW, Orman R, Stewart M (2005) Computer simulation of epilepsy: implications for seizure spread and behavioral dysfunction. Epilepsy Behav 7:336-44 [Journal] [PubMed]

Maglóczky Z, Freund TF (2005) Impaired and repaired inhibitory circuits in the epileptic human hippocampus. Trends Neurosci 28:334-40 [Journal] [PubMed]

Manganotti P, Miniussi C, Santorum E, Tinazzi M, Bonato C, Marzi CA, Fiaschi A, Dalla Bernard (1998) Influence of somatosensory input on paroxysmal activity in benign rolandic epilepsy with 'extreme somatosensory evoked potentials'. Brain 121 ( Pt 4):647-58 [PubMed]

McAllister AK (2000) Cellular and molecular mechanisms of dendrite growth. Cereb Cortex 10:963-73 [PubMed]

Middleton S, Jalics J, Kispersky T, Lebeau FE, Roopun AK, Kopell NJ, Whittington MA, Cunningh (2008) NMDA receptor-dependent switching between different gamma rhythm-generating microcircuits in entorhinal cortex. Proc Natl Acad Sci U S A 105:18572-7 [PubMed]

Navarro Mora G, Bramanti P, Osculati F, Chakir A, Nicolato E, Marzola P, Sbarbati A, Fabene P (2009) Does pilocarpine-induced epilepsy in adult rats require status epilepticus? PLoS One 4:e5759 [Journal] [PubMed]

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 Journal of Neuroscience 31(32):11733-11743 [Journal] [PubMed]

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

Ren H, Shi YJ, Lu QC, Liang PJ, Zhang PM (2014) The role of the entorhinal cortex in epileptiform activities of the hippocampus. Theor Biol Med Model 11:14 [Journal] [PubMed]

Rutecki PA, Yang Y (1998) Ictal epileptiform activity in the CA3 region of hippocampal slices produced by pilocarpine. J Neurophysiol 79:3019-29 [PubMed]

Seddigh S, Thömke F, Vogt TH (1999) Complex partial seizures provoked by photic stimulation. J Neurol Neurosurg Psychiatry 66:801-2 [PubMed]

Sloviter RS, Zappone CA, Harvey BD, Bumanglag AV, Bender RA, Frotscher M (2003) "Dormant basket cell" hypothesis revisited: relative vulnerabilities of dentate gyrus mossy cells and inhibitory interneurons after hippocampal status epilepticus in the rat. J Comp Neurol 459:44-76

Stewart M, Fox SE (1990) Do septal neurons pace the hippocampal theta rhythm? Trends Neurosci 13:163-8 [PubMed]

Stoop R, Pralong E (2000) Functional connections and epileptic spread between hippocampus, entorhinal cortex and amygdala in a modified horizontal slice preparation of the rat brain. Eur J Neurosci 12:3651-63

Sylwestrak EL, Ghosh A (2012) Elfn1 regulates target-specific release probability at CA1-interneuron synapses. Science 338:536-40 [Journal] [PubMed]

Whittington MA, Traub RD, Jefferys JG (1995) Erosion of inhibition contributes to the progression of low magnesium bursts in rat hippocampal slices. J Physiol 486 ( Pt 3):723-34 [PubMed]

Witter MP (2007) Intrinsic and extrinsic wiring of CA3: indications for connectional heterogeneity. Learn Mem 14:705-13 [PubMed]

Wittner L, Eross L, Czirják S, Halász P, Freund TF, Maglóczky Z (2005) Surviving CA1 pyramidal cells receive intact perisomatic inhibitory input in the human epileptic hippocampus. Brain 128:138-52 [Journal] [PubMed]

Zhang W, Buckmaster PS (2009) Dysfunction of the dentate basket cell circuit in a rat model of temporal lobe epilepsy. J Neurosci 29:7846-56 [PubMed]

Ziburkus J, Cressman JR, Barreto E, Schiff SJ (2006) Interneuron and pyramidal cell interplay during in vitro seizure-like events. J Neurophysiol 95:3948-54 [PubMed]

(46 refs)