Spine head calcium in a CA1 pyramidal cell model (Graham et al. 2014)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:154732
"We use a computational model of a hippocampal CA1 pyramidal cell to demonstrate that spine head calcium provides an instantaneous readout at each synapse of the postsynaptic weighted sum of all presynaptic activity impinging on the cell. The form of the readout is equivalent to the functions of weighted, summed inputs used in neural network learning rules. Within a dendritic layer, peak spine head calcium levels are either a linear or sigmoidal function of the number of coactive synapses, with nonlinearity depending on the ability of voltage spread in the dendrites to reach calcium spike threshold. ..."
Reference:
1 . Graham BP, Saudargiene A, Cobb S (2014) Spine head calcium as a measure of summed postsynaptic activity for driving synaptic plasticity. Neural Comput 26:2194-222 [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: Hippocampus;
Cell Type(s):
Channel(s):
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Synaptic Integration;
Implementer(s): Graham, Bruce [B.Graham at cs.stir.ac.uk];
/
GrahamEtAl2014
Cells
Results
readme.html
burststim2.mod *
cad.mod
cagk.mod
carF.mod
distca.mod
distr.mod *
h.mod *
kadist.mod *
kaprox.mod *
kca.mod *
kdrca1.mod *
km.mod
na3n.mod *
naxn.mod *
nmdaca.mod *
burst_cell.hoc *
CA1PC.hoc
mosinit.hoc
randomlocation.hoc
ranstream.hoc *
run_batsyn.hoc
run_PC.hoc
screenshot1.png
screenshot2.png
screenshot3.png
setup_PC.hoc
synstim.ses
                            
// Random location template
// Used for placing point processes (typically synapses) at random locations
// within a given SectionList
// List of point processes to be placed at a given location is passed to loc()
// BPG 29-3-10

/*
?2 RandomLocation

rl = new RandomLocation(SectionList, UniformRandomGenerator)
rl.loc(PointProcess)

relocates the PointProcess to a random location with respect to
uniform distribution based on position.
SectionList defines the set of sections to sample.
*/

begintemplate RandomLocation

public loc, locsp
objectvar seclist, ran

proc init() {
    seclist = $o1
//    ran = new Random($2)
//    ran = new Random()
    ran = $o2
    total_length = 0
    forsec seclist { total_length = total_length + L }
}

// randomize location of synapse(s)
proc loc() {local i, l, rpos, secx
  //randomize_location.loc(synapse list)
  rpos = ran.uniform(0, total_length)
  l = 0
  distance()  // assumes soma is currently accessed               
  forsec seclist {
    l = l + L
    if (l > rpos) {
      secx = (rpos - l + L)/L
//      print secname(), secx
      for i=0,$o1.count()-1 {
        $o1.o(i).loc(secx)
      }
      rpos = 1e20   // a break would screw up the stack?
    }
  }
}

// randomize location of synapse(s) attached to spines
// if required put synapse on spine, scale conductance and onset
proc locsp() {local i, l, rpos, secx
  //randomize_location.loc(synapse, snr, shr)
  rpos = ran.uniform(0, total_length)
  l = 0
  distance()  // assumes soma is currently accessed  
  forsec seclist {
    l = l + L
    if (l > rpos) {
      secx = (rpos - l + L)/L
      print secname(), secx
      connect $o2.sec(0), secx
      $o2.sec connect $o3.sec(0), 1
      for i=0,$o1.count()-1 {
        $o3.sec $o1.o(i).loc(0.5)
      }
      rpos = 1e20   // a break would screw up the stack?
    }
  }
}


endtemplate RandomLocation