Computer model of clonazepam`s effect in thalamic slice (Lytton 1997)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:12631
Demonstration of the effect of a minor pharmacological synaptic change at the network level. Clonazepam, a benzodiazepine, enhances inhibition but is paradoxically useful for certain types of seizures. This simulation shows how inhibition of inhibitory cells (the RE cells) produces this counter-intuitive effect.
Reference:
1 . Lytton WW (1997) Computer model of clonazepam's effect in thalamic slice. Neuroreport 8:3339-43 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network;
Brain Region(s)/Organism: Thalamus;
Cell Type(s): Thalamus geniculate nucleus (lateral) principal neuron; Thalamus reticular nucleus cell;
Channel(s): I Na,t; I T low threshold; I K; I CAN;
Gap Junctions:
Receptor(s): GabaA; Gaba;
Gene(s):
Transmitter(s): Gaba;
Simulation Environment: NEURON;
Model Concept(s): Activity Patterns; Bursting; Therapeutics; Epilepsy; Calcium dynamics;
Implementer(s): Lytton, William [billl at neurosim.downstate.edu];
Search NeuronDB for information about:  Thalamus geniculate nucleus (lateral) principal neuron; Thalamus reticular nucleus cell; GabaA; Gaba; I Na,t; I T low threshold; I K; I CAN; Gaba;
/
lytton97b
README
AMPA.mod
calciumpump_destexhe.mod *
GABAA.mod
GABAB1.mod
GABALOW.mod
HH_traub.mod *
IAHP_destexhe.mod
ICAN_destexhe.mod
ICAN_voltdep.mod
Ih_old.mod *
IT_wang.mod
IT2_huguenard.mod
NMDA.mod
passiv.mod *
pregen.mod *
presyn.mod *
pulse.mod
rand.mod
bg.inc *
boxes.hoc
ctl.dat
ctlnew.dat
czp.dat
czpnew.dat
declist.hoc *
decvec.hoc *
default.hoc *
disp.hoc
Fig3.gif
Fig4.gif
geom.hoc
grvec.hoc
init.hoc
labels.hoc
local.hoc
mod_func.c
mosinit.hoc
network.hoc
neurrep8
nrnoc.hoc
params.hoc
presyn.inc *
queue.inc *
run.hoc
show.hoc
simctrl.hoc *
sns.inc *
snsarr.inc
snscode.hoc
snsgr.hoc
snshead.inc *
synq.inc *
xtmp
                            
// $Id: run.hoc,v 1.111 2002/07/27 04:12:39 billl Exp $ 

proc showconn () {
  mechlist(tmplist,"TC","gabaa")
  connmat(tmplist,"pre",3,"inc",0,6,0,0,"TC.gabaa")
  connmat(tmplist,"pre",4,"inc",0,6,0,0,"TC.gabaa")
  connmat(tmplist,"pre",3,"post",3,6,0,0.2,"TC.gabaa")
  mechlist(tmplist,"RE","ampa")
  connmat(tmplist,"pre",3,"inc",0,6,1,0,"RE.ampa")
  mechlist(tmplist,"RE","gabaa")
  connmat(tmplist,"pre",2,"inc",0,6,1,0,"RE.gabaa")
}

proc initMisc1 () { 
  fseed(seed)
  forsec "TC" {
    v = vrestTC + vrange*(2*u_rand() - 1) 
  }
  forsec "RE" {
    v = vrestRE + vrange*(2*u_rand() - 1)
  }
  for ii=0,i<prelist.count-1 {  
    prelist.object(ii).spk = 0
  }
}      

func setother () { local iSum
  if (ismembrane("cad")) {
    kd_cad = cai*(-(cai * depth_cad *FARADAY) + cainf_cad * depth_cad * FARADAY - \
                  5000*ica*taur_cad - depth_cad * FARADAY*kt_cad * taur_cad)
    kd_cad = kd_cad/(cai*depth_cad*FARADAY - cainf_cad * depth_cad * FARADAY + \
                     5000*ica*taur_cad)
  }
  iSum=0
  // if (ismembrane("iar")) iSum += iother -- already included
  if (ismembrane("ican")) iSum += in
  return iSum
}

proc keepitems () { local cnt
  cnt = $o1.count()
  for (ii=cnt-1;ii>0;ii=ii-1) {
    if (ii%$2 != 0) {$o1.remove(ii)}
  }
}

proc finishMisc () { // put out final newline
}
      
printlist.remove_all()  // clear it out
printStep=0.2  // print out the spikes this often
byte_store = 1
tmplist = new List("RE")
record(tmplist,"soma.v(0.5)")
tmplist = new List("TC")
record(tmplist,"soma.v(0.5)")

proc printInit() {}
print_flag = 0

access col[0].tc[0].soma

proc clearsec () {
  forall { delete_section() }
}

// $s1 - the name of the syn
// $2 - the number
proc setdelays () {
  tmplist = new List($s1)
  for ii=0,tmplist.count-1 {
    for jj=0,tmplist.object(ii).nsyn-1 {
      tmplist.object(ii).delay(jj,$2)
    }
  }
}

// to be used after changing DELAY for a particular syn
// $s1 - the name of the syn
proc resetdelays () {
  tmplist = new List($s1)
  for ii=0,tmplist.count-1 {
    for jj=0,tmplist.object(ii).nsyn-1 {
      tmplist.object(ii).delay(jj,tmplist.object(ii).delay(jj))
    }
  }
}

objref autolist
mechlist(autolist,"RE","gabaa")

proc write_comment () {
  sfunc.tail(output_file,"/",temp_string2_) // strip 'data/'
  if (strcmp(simname,"neuron") != 0) {
    sprint(temp_string2_,"%s/%s",simname,temp_string2_)
  } else {
    sprint(temp_string2_,"./%s",temp_string2_)
  }
  sprint($s1,"%s %s",temp_string2_,$s1)
  nrn_write_index($s1)
}
    
strdef codestr
codestr = "CTL"
codestr = "CZP"
glpnum = 5
double glp[glpnum]
{glp[0]=20e-6 glp[1]=70e-6  glp[2]=140e-6  glp[3]=500e-6  glp[4]=5000-6 }

proc rczp() { run1("CZP") }
proc rctl() { run1("CTL") }
proc run1() {
  sprint(temp_string_,"%s.%02d",datestr,runnum-1)
  if (sfunc.substr(comment,temp_string_) == -1) {comment=temp_string_}
  if (sfunc.substr(comment,$s1) == -1) {sprint(comment,"%s (%s)",comment,$s1)}
  if (strcmp($s1,"CZP")==0) {
    Alpha_GABAA = 1/0.52
    Beta_GABAA = 1/16.31    
  } else if (strcmp($s1,"CTL")==0) {
    Alpha_GABAA = 1/0.38
    Beta_GABAA = 1/8.28
  } else { printf("%s not recognized.\n",$s1) return }
  run()
}

proc auto_run() { local ii,jj,kk
  printf("begin auto_run\n")
  for ii=0,glpnum-1 {
    fseed(3454345)
    for jj = 0,autolist.count-1 {
      for kk = 0,autolist.object(jj).nsyn-1 {
        if (strcmp(codestr,"CZP")==0) {
          autolist.object(jj).gmax(kk,1.1*plmin(glp[ii],glp[ii]/5)) // 10% increment
        } else {
          autolist.object(jj).gmax(kk,plmin(glp[ii],glp[ii]/5))
        }
      }
    }
    run1(codestr) 
    sprint(temp_string_,"%s:%g (%s Alpha_GABAA=1/%g)",autolist.object(jj-1),glp[ii],codestr,1/Alpha_GABAA)
    pvall(temp_string_)
    write_comment(temp_string_)
    printf("%s %g\n",output_file,glp[ii])
    runnum = runnum + 1
  }  
  printf("end auto_run\n")
  update_emacs()
}

Loading data, please wait...