CA1 pyramidal neuron: synaptic plasticity during theta cycles (Saudargiene et al. 2015)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:157157
This NEURON code implements a microcircuit of CA1 pyramidal neuron and consists of a detailed model of CA1 pyramidal cell and four types of inhibitory interneurons (basket, bistratified, axoaxonic and oriens lacunosum-moleculare cells). Synaptic plasticity during theta cycles at a synapse in a single spine on the stratum radiatum dendrite of the CA1 pyramidal cell is modeled using a phenomenological model of synaptic plasticity (Graupner and Brunel, PNAS 109(20):3991-3996, 2012). The code is adapted from the Poirazi CA1 pyramidal cell (ModelDB accession number 20212) and the Cutsuridis microcircuit model (ModelDB accession number 123815)
Reference:
1 . Saudargiene A, Cobb S, Graham BP (2015) A computational study on plasticity during theta cycles at Schaffer collateral synapses on CA1 pyramidal cells in the hippocampus. Hippocampus 25:208-18 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Synapse; Dendrite;
Brain Region(s)/Organism:
Cell Type(s): Hippocampus CA1 pyramidal GLU cell; Hippocampus CA1 basket cell; Hippocampus CA1 bistratified cell; Hippocampus CA1 axo-axonic cell;
Channel(s):
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Long-term Synaptic Plasticity; STDP;
Implementer(s): Saudargiene, Ausra [ausra.saudargiene at gmail.com];
Search NeuronDB for information about:  Hippocampus CA1 pyramidal GLU cell;
/
SaudargieneEtAl2015
readme.html
ANsyn.mod *
bgka.mod *
bistableGB_DOWNUP.mod
burststim2.mod *
cad.mod
cadiffus.mod *
cagk.mod *
cal.mod *
calH.mod *
car.mod *
cat.mod *
ccanl.mod *
d3.mod *
gabaa.mod *
gabab.mod *
glutamate.mod *
gskch.mod *
h.mod
hha_old.mod *
hha2.mod *
hNa.mod *
IA.mod
ichan2.mod
Ih.mod *
kadbru.mod
kadist.mod *
kapbru.mod
kaprox.mod *
Kaxon.mod *
kca.mod *
Kdend.mod *
km.mod *
Ksoma.mod *
LcaMig.mod *
my_exp2syn.mod *
Naaxon.mod *
Nadend.mod *
nap.mod
Nasoma.mod *
nca.mod *
nmda.mod *
nmdaca.mod *
regn_stim.mod *
somacar.mod *
STDPE2Syn.mod *
apical-non-trunk-list.hoc
apical-tip-list.hoc
apical-tip-list-addendum.hoc
apical-trunk-list.hoc
axoaxonic_cell17S.hoc
axon-sec-list.hoc
BasalPath.hoc
basal-paths.hoc
basal-tree-list.hoc
basket_cell17S.hoc
bistratified_cell13S.hoc
burst_cell.hoc
current-balance.hoc *
main.hoc
map-segments-to-3d.hoc *
mod_func.c
mosinit.hoc
ObliquePath.hoc *
oblique-paths.hoc
olm_cell2.hoc
pattsN100S20P5_single.dat
PC.ses
peri-trunk-list.hoc
pyramidalNeuron.hoc
randomLocation.hoc
ranstream.hoc
screenshot.png
soma-list.hoc
stim_cell.hoc *
vector-distance.hoc
                            
//  randomize_location = new RandomLocation($o2, $4)
//  randomize_location = new RandomLocation(SectionList, randomseed)



begintemplate RandomLocation

public loc
objectvar seclist, ran

proc init() {
    seclist = $o1  //SectionList
    ran = new Random($2) //randomseed
    total_length = 0
    forsec seclist { total_length = total_length + L } //length
//print "Random Location Total Length"
//print total_length

}

// randomize location of synapse
// if required put synapse on spine, scale conductance and onset
proc loc() {local l, done, rpos, secx, dx//, ss
  //randomize_location.loc(synapse)
  rpos = ran.uniform(0, total_length) //random number
  //print "Random location"
  //print rpos

  done = 0
  l = 0

  //ss=0

  distance()  // assumes soma is currently accessed               
  
  forsec seclist {
    l = l + L
   if (l > rpos) {
  
      secx = (rpos - l + L)/L //random location in SectionList

      //print "Random location in Section List" //[0; 1]
      //print secx
      //print $o1

      $o1.loc(secx)//  SectionList.loc(random location in SectionList) 
      rpos = 1e20 
    }
  }
}

endtemplate RandomLocation


//example 

//creatensyn(cell, cell.apical_list, 100, 1)
//cell - object, target
//cell.apical_list - SectionList
//100 - number of synapses
//1 - random seed
//nsyn=$3 - nsyn=100
//  access $o1.soma  - soma
//  randomize_location = new RandomLocation($o2, $4)
//  randomize_location = new RandomLocation(SectionList, randomseed)
//  for i = 0, nsyn-1 { for =0, 99
//    syn[i] = new Exp2Syn(0.5)  synapse
//    syn[i].tau1 = 0.5
//    syn[i].tau2 = 3
//    randomize_location.loc(syn[i])  //synapse i on random location 
//    $o1.pre_list.append(syn[i])
//}
//}

//1.Use template RandomLocation - creates random  locations on Section List
//2.Call random location  
//randomize_location = new RandomLocation(SectionList,randomseed)
//3.Use randomize_location in cycle while creating synapses :) :)