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
datastore
pars
plots
poirazi-nmda-car
tests
validation-plots
README.txt
ampa_forti.mod
cacum.mod
cad.mod *
cagk.mod
cal.mod
calH.mod
car.mod
car_mag.mod
cat.mod
d3.mod *
h.mod
hha_old.mod
hha2.mod
kadist.mod
kaprox.mod
kca.mod
km.mod
nap.mod
nmda_andr.mod
somacar.mod
binaverages.m
bpap-cell.hoc
bpap-data.hoc
bpap-dendburst.hoc
bpap-graphics.hoc
bpap-gui.hoc
bpap-gui.ses
bpap-pars.hoc
bpap-record.hoc
bpap-run.hoc
bpap-scaling.hoc
bpap-sims.hoc
bpap-sims-cell1.hoc
bpap-sims-cell2.hoc
bpap-sims-scaling.hoc
bpap-somainj.hoc
bpap-spiketrain.hoc
ca1_mrg_cell1.hoc
ca1_mrg_cell2.hoc
ca1_poirazi.hoc
ChannelBlocker.hoc
CrossingFinder.hoc
epspsizes.hoc
figure-example.R
figures.R
figures-common.R
FileUtils.hoc
FormatFile.hoc
ghk.inc
GraphUtils.hoc
Integrator.hoc
Makefile
mosinit.hoc
NmdaAmpaSpineSynStim.hoc
NmdaAmpaSynStim.hoc
ObjectClass.hoc
plotscalingresults_pergroup1.m
plotscalingresults5.m
PointProcessDistributor.hoc
ReferenceAxis.hoc
removezeros.m
RPlot.hoc
scaling_plots.m
Segment.hoc
SimpleSpine.hoc
Spine.hoc
TreePlot.hoc
TreePlotArray.hoc
triexpsyn.inc
units.inc
utils.hoc
validate-bpap.hoc
VarList.hoc
VCaGraph.hoc
                            
if (name_declared("pkgversions") != 4 ) {  execute("strdef pkgversions") }
sprint(pkgversions,"%sVCaGraph = $Revision: 1.5 $, ",pkgversions)

load_file("RPlot.hoc")
load_file("FormatFile.hoc")
load_file("GraphUtils.hoc")

begintemplate VCaGraph
public addvar, glist, rprintfile, save

strdef cmd
objref vb
objref hblist
objref glist
objref this
objref file, rp
objref gu
objref xvl, yvl
objref areas

// VCaGraph(double rows, double cols)
// This takes four arguments: left, top, width and height
proc init() { local i, j
    rows=2
    vb = new VBox()
    hblist = new List()
    glist = new List()
    vb.intercept(1)
    glist.append(new Graph(0))
    glist.object(0).view(0, -80, 100, 40, 930, 304, 300.48, 200.32)
    glist.append(new Graph(0))
    glist.object(1).view(0, 0, 100, 0.01, 930, 304, 300.48, 200.32)
    glist.append(new Graph(0))
    glist.object(2).view(0, 0, 100, 1, 930, 304, 300.48, 200.32)
    glist.append(new Graph(0))
    glist.object(3).view(0, 0, 100, 0.1 , 930, 304, 300.48, 200.32)
    vb.intercept(0)
    vb.map("Spine variables", $1, $2, $3, $4)
    sprint(cmd,"graphList[0].append(%s.glist.object(0))", this)
    execute1(cmd)
    sprint(cmd,"graphList[2].append(%s.glist.object(1))", this)
    execute1(cmd)
    sprint(cmd,"graphList[2].append(%s.glist.object(2))", this)
    execute1(cmd)
    sprint(cmd,"graphList[2].append(%s.glist.object(3))", this)
    execute1(cmd)
    rp = new RPlot()
    gu = new GraphUtils()
    areas = new Vector()
}

//
// addvar(NmdaAmpaSpineSynStim input, double col, double linewidth)
// Add voltage, calcium concntration, block value and calcium current from INPUT with particular
// colour COL and linewidth LINEWIDTH
//
proc addvar() {
    sprint(cmd,"%s.glist.object(0).addvar(\"%s.spine.head.v( 0.5 )\",%d,%d)", this, $o1, $2, $3)
    execute1(cmd)
    sprint(cmd,"%s.glist.object(1).addvar(\"%s.spine.head.cai( 0.5 )\",%d,%d)", this, $o1, $2, $3)
    execute1(cmd)
    sprint(cmd,"%s.glist.object(2).addvar(\"%s.nmdasyn.b\",%d,%d)", this, $o1, $2, $3)
    execute1(cmd)
    sprint(cmd,"%s.glist.object(3).addvar(\"%s.nmdasyn.ica\",%d,%d)", this, $o1, $2, $3)
    execute1(cmd)
    sprint(cmd,"%s.glist.object(3).addvar(\"%s.ampasyn.ica\",%d,%d)", this, $o1, $2, $3)
    execute1(cmd)
    sprint(cmd,"%s.glist.object(3).addvar(\"%s.spine.head.ica( 0.5 )\",%d,%d)", this, $o1, $2, $3)
    execute1(cmd)
    $o1.spine.head areas.append(area(0.5))
}


// rprintfile(String epsfilename, Double SaveFile)
proc rprintfile() { local i, j
    if (numarg() == 1) { rp.create_rfile() }
    if (numarg() == 2) {
        if ($2 != 0) { rp.create_rfile($s1) }
    }
    rp.start_plot($s1)
    rp.set_mfrow(rows,1)
    for i=0,rows-1 {
        rp.add_graph(glist.object(i))
    }
    rp.end_plot()
    rp.run()
}

//
// save(File FILE) 
// savie recordings from all panels to file handle FILE
// 
proc save() { localobj file
    file = $o1
    xvl = new List()
    yvl = new List()
    file.printvec("areas",areas)
    gu.getlines_list(glist.object(0),xvl,yvl) 
    file.printlistasmat("tvsyn",xvl)
    file.printlistasmat("vsyn",yvl)
    xvl.remove_all()
    yvl.remove_all()
    gu.getlines_list(glist.object(1),xvl,yvl) 
    file.printlistasmat("tcasyn",xvl)
    file.printlistasmat("casyn",yvl)
    xvl.remove_all()
    yvl.remove_all()
    gu.getlines_list(glist.object(2),xvl,yvl) 
    file.printlistasmat("tbsyn",xvl)
    file.printlistasmat("bsyn",yvl)
    xvl.remove_all()
    yvl.remove_all()
    gu.getlines_list(glist.object(3),xvl,yvl) 
    file.printlistasmat("ticasyn",xvl)
    file.printlistasmat("icasyn",yvl)
    xvl.remove_all()
    yvl.remove_all()
}

endtemplate VCaGraph