CA1 pyramidal neuron: synaptically-induced bAP predicts synapse location (Sterratt et al. 2012)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:144490
This is an adaptation of Poirazi et al.'s (2003) CA1 model that is used to measure BAP-induced voltage and calcium signals in spines after simulated Schaffer collateral synapse stimulation. In the model, the peak calcium concentration is highly correlated with soma-synapse distance under a number of physiologically-realistic suprathreshold stimulation regimes and for a range of dendritic morphologies. There are also simulations demonstrating that peak calcium can be used to set up a synaptic democracy in a homeostatic manner, whereby synapses regulate their synaptic strength on the basis of the difference between peak calcium and a uniform target value.
Reference:
1 . Sterratt DC, Groen MR, Meredith RM, van Ooyen A (2012) Spine calcium transients induced by synaptically-evoked action potentials can predict synapse location and establish synaptic democracy. PLoS Comput Biol 8:e1002545 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Neuron or other electrically excitable cell;
Brain Region(s)/Organism:
Cell Type(s): Hippocampus CA1 pyramidal GLU cell;
Channel(s): I Na,t; I L high threshold; I T low threshold; I A; I K; I M; I Mixed; I R; I_AHP;
Gap Junctions:
Receptor(s): AMPA; NMDA;
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Dendritic Action Potentials; Synaptic Plasticity;
Implementer(s): Sterratt, David ; Groen, Martine R [martine.groen at gmail.com];
Search NeuronDB for information about:  Hippocampus CA1 pyramidal GLU cell; AMPA; NMDA; I Na,t; I L high threshold; I T low threshold; I A; I K; I M; I Mixed; I R; I_AHP;
/
bpap
CA1_multi
template
BasalPath.hoc *
EPSPTuning.hoc *
ExperimentControl.hoc *
load_templates.hoc *
ObliquePath.hoc *
RangeRef.hoc *
SynapseBand.hoc *
                            
// This template is used to create a band of sections by
// randomly selecting sections within a specified region (in
// interval [lo hi]). Sections can be selected with or without
// repetition and synapses can be allocated at predifined
// locations along these sections 
// written by Yiota Poirazi, July 2001, poirazi@LNC.usc.edu


objref synapse_band_shape, gaba_band_shape
synapse_band_shape=new Shape() // shape graph to plot AMPA and NMDA synapses
gaba_band_shape=new Shape()    // shape graph to plot GABA_A and GABA_B synapses

begintemplate SynapseBand

public pick_and_salloc, pick_and_SALLOC, pick, pick_and_remove, pick_and_SALLOC_GABAa, pick_and_SALLOC_GABAb
objref all_secs, secs_in_band, selected_secs, rnum, ltmp
strdef exec_str

proc init () {
  all_secs=$o1     // list of all sections to choose from
  lo=$2            // minimum distance from soma
  hi=$3            // maximum distance from soma
  actual_res=$4    // obsolete. Used only if more than one synapses are to be placed at a specific location
  desired_res=$5   // obsolete. Used only if more than one synapses are to be placed at a specific location
  PID=$6           // random number generator seed 

//  print "choosing sections that are between ", lo, " and ", hi, " microns from the soma"	

  secs_in_band=new List()
  if (PID < 0) {
     PID=-PID       // if PID < 0 choose sections branchwise
     sprint(exec_str,"choose_secs_branchwise(%s,%s,%g,%g,%g,%g)", all_secs,secs_in_band,lo,hi,actual_res,desired_res)
  } else {  	
     sprint(exec_str,"choose_secs(%s,%s,%g,%g,%g,%g)", all_secs,secs_in_band,lo,hi,actual_res,desired_res)
  }
  execute1(exec_str)  // use ../lib/choose-secs.hoc to choose sections and store them in "secs_in_band"

  rnum=new Random(PID)
}

proc cdto() {    // Access a given section
  ltmp=secs_in_band.object(num)
  access ltmp.section_ref.sec
//  print secname(), "accessed by SynapseBand.pick()"
}

proc cdto_rm() { // Remove the section just accessed
  ltmp=secs_in_band.object(num)
  access ltmp.section_ref.sec
//  print secname(), " accessed by SynapseBand.pick(). cdto_rm() is removing it."
  secs_in_band.remove(num)
}

proc pick() {  //randomly (uniformly) pick a section in band and access it
  num=rnum.uniform(0,secs_in_band.count()-1)
  cdto(num)
}

proc pick_and_remove() { //randomly (uniform) pick a section in band, access and remove it 
    num=rnum.uniform(0,secs_in_band.count()-1)
    cdto_rm(num)
}

proc pick_and_salloc() { // randomly pick a section in band, access it and allocate a synapse (AMPA or NMDA) on it
  pick()
  sprint(exec_str,"salloc(%s,%s,%g)", $o1,$o2,ltmp.range_ref)     // in ../lib/salloc.hoc
  execute1(exec_str)
  sprint(exec_str,"synapse_band_shape.point_mark(%s,%d)", $o1,$3) // make a shape graph and print a 
  execute1(exec_str)						  // dot at the location of the synapse 
}

proc pick_and_SALLOC() { // same as above but made to work with both AMPA/NMDA and GABA synapses (not used)
  pick()
  sprint(exec_str,"SALLOC(%s,%s,%g,%d)", $o1,$o2,ltmp.range_ref,$4) // in ../lib/salloc.hoc
  execute1(exec_str)
  sprint(exec_str,"synapse_band_shape.point_mark(%s,%d)", $o1,$3)
  execute1(exec_str)
}

proc pick_and_SALLOC_GABAa() { // Used if only GABA_A synapses will be allocated
  pick()
  sprint(exec_str,"SALLOC_GABAa(%s,%g,%d,%g)", $o1,ltmp.range_ref, $3, $4)   // in ../lib/salloc.hoc 
  execute1(exec_str)
  sprint(exec_str,"gaba_band_shape.point_mark(%s,%d)", $o1, $2)
  execute1(exec_str)
}

proc pick_and_SALLOC_GABAb() {  // Used if only GABA_B synapses will be allocated
  pick()
  sprint(exec_str,"SALLOC_GABAb(%s,%g,%d,%g)", $o1,ltmp.range_ref, $3, $4)   // in ../lib/salloc.hoc
  execute1(exec_str)
  sprint(exec_str,"gaba_band_shape.point_mark(%s,%d)", $o1,$2)
  execute1(exec_str)
}

endtemplate SynapseBand