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

 Download zip file   Auto-launch 
Help downloading and running models
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.
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;
Simulation Environment: NEURON;
Model Concept(s): Dendritic Action Potentials; Synaptic Plasticity;
Implementer(s): Sterratt, David ; Groen, Martine R [martine.groen at];
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;
basic_graphics.hoc *
basic-graphics.hoc *
choose-secs.hoc *
current-balance.hoc *
cut-sections.hoc *
deduce-ratio.hoc *
find-gmax.hoc *
GABA_shiftsyn.hoc *
GABA_shiftsyn_bg.hoc *
ken.h *
map-segments-to-3d.hoc *
maxmin.hoc *
newshiftsyn.exe *
num-rec.h *
salloc.hoc *
shiftsyn-init_bg.hoc *
shiftsyn-initA.hoc *
spikecount.hoc *
tune-epsps.hoc *
vector-distance.hoc *
verbose-system.hoc *
// For each band of AMPA and NMDA synapses, this function makes a file with
// the stimulation train and shifts the activation time (by temporal_offset) 
// written by Yiota Poirazi, July 2001,

double iaryE[1000]
objref varyE[1000], s_file, stimtmp, rpid, shiftsynf
stimtmp=new Vector()
strdef shiftsyn_filename, syscmd, estr, shiftsyns

proc shiftsyn_init () { local synapses, temporal_offset, hertz, gmax_default, PID, lo, hi
    total_synapses = $1        // number of synapses in the band
    tstop = $2		       // stimulation end time
    dt = $3
    hertz = $4                 // stimulation train frequency 
    synch = $5                 // synchronous or a synchronous stimulation of synapses
    perio = $6		       // periodic or not periodic stimulation
    PID = $7
    PID = abs(PID)             // only positive random seeds used for spike train generation 
    temporal_offset = $8       // shift stimulation time by temporal_offset
    skip = $9		       // time points to skip before starting the spike train
    items = int(tstop/dt)      // number of stimuli (firing patterns) for each synapse

// Make the desired activation pattern file and
// Set AMPA and NMDA pointers to activation pattern

   if (hertz > 3) {           // in most cases 
            total_synapses,tstop,dt,hertz,synch,perio,PID,temporal_offset)   // filename
        sprint(syscmd,"newshiftsyn shiftsyn %d %g %g %g %g %g %d %g",\
         total_synapses,tstop,dt,hertz,synch,perio,PID,temporal_offset)  // use newshiftsyn to make
								         // stimulation train

        system(syscmd)       // Same as typing syscmd in DOS, execute above command
        print  syscmd
        s_file = new File()
        s_file.ropen(shiftsyn_filename) // open the stimulation train file
        stimtmp.scanf(s_file) //read temporal stimulation pattern in a 1-d vector
  } else {
// for single shock experiments, set the single spike at t = 0+offset (synchronous stimulation for all synapses)
       stimtmp = new Vector(items*total_synapses,0) 
       offset = temporal_offset/dt
       for i = 0, total_synapses-1 {
          stimtmp.x[total_synapses*offset + i] = 1
 for i=0,total_synapses-1 {
//    printf(" -- synapse %d\n", i)

    varyE[i] = new Vector(items)  // for each synapse, save firing pattern in this vector

  // Put the firing patterns from stimtmp (1-d vector) for each syanpse i
    for j=0,items-1 {   
            varyE[i].x[j]=stimtmp.x[i + j*total_synapses] 


//  print "setpointer to each synapse"

    for s=0, total_synapses-1 {
        sprint(estr,"varyE[%d].play(&iaryE[%d], dt)", s,s)
//        print estr

        sprint(estr,"setpointer ampa[%d].pre, iaryE[%d]", s+skip,s)
//        print estr

        sprint(estr,"setpointer nmda[%d].pre, iaryE[%d]", s+skip,s)
        print estr
if (hertz >3) {
	sprint(econ.syscmd,  "rm %s", shiftsyn_filename) // remove firing pattern file
	print  econ.syscmd