Mechanisms underlying subunit independence in pyramidal neuron dendrites (Behabadi and Mel 2014)

 Download zip file 
Help downloading and running models
Accession:167694
"...Using a detailed compartmental model of a layer 5 pyramidal neuron, and an improved method for quantifying subunit independence that incorporates a more accurate model of dendritic integration, we first established that the output of each dendrite can be almost perfectly predicted by the intensity and spatial configuration of its own synaptic inputs, and is nearly invariant to the rate of bAP-mediated 'cross-talk' from other dendrites over a 100-fold range..."
Reference:
1 . Behabadi BF, Mel BW (2014) Mechanisms underlying subunit independence in pyramidal neuron dendrites. Proc Natl Acad Sci U S A 111:498-503 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Neuron or other electrically excitable cell; Synapse; Dendrite;
Brain Region(s)/Organism:
Cell Type(s): Neocortex V1 L6 pyramidal corticothalamic GLU cell;
Channel(s): I Sodium; I Potassium;
Gap Junctions:
Receptor(s): AMPA; NMDA;
Gene(s):
Transmitter(s): Glutamate;
Simulation Environment: NEURON; Python;
Model Concept(s): Dendritic Action Potentials; Spatio-temporal Activity Patterns; Parameter Fitting; Simplified Models; Active Dendrites; Detailed Neuronal Models; Action Potentials; Synaptic Integration;
Implementer(s): Behabadi, Bardia [bardiafb+mdb at gmail.com];
Search NeuronDB for information about:  Neocortex V1 L6 pyramidal corticothalamic GLU cell; AMPA; NMDA; I Sodium; I Potassium; Glutamate;
#!/usr/bin/env python
import sys
import cPickle
import numpy as npy

# numpy 'pretty print'
npy.set_printoptions(linewidth=135)
npy.set_printoptions(precision=3)
npy.set_printoptions(suppress=True)

from neuron import h
h.load_file('basal_project.hoc')

numbranches = int(sys.argv[1])
simiter = int(sys.argv[2])-1
if numbranches==2:
    theseclist = [h.a1_111, h.a10_11]
if numbranches==8:
    theseclist = [h.a1_111, h.a8_11, h.a9_122, h.a3_11, h.a10_11, h.a7_1221, h.a5_1, h.a4_121]

sl2 = h.SectionList()
for sec in theseclist:
    sl2.append(sec = sec)
poppedsecs = sl2.unique()
h.refreshnseg(h.makeactivelist(sl2))
print "nseg", h.nsegcnt()
h.cvode.cache_efficient(1)

def getfi(amp,simiter):
    h.tstop = 500 # to match synaptic input runs

    # 'background' injection
    npy.random.seed(int(simiter+h.luckyoffset))
    icr = h.IClamp(h.soma(.5))
    icr.dur = h.tstop
    if numbranches==2:
        icmean = .75
    if numbranches==8:
        icmean = 0
    icstd = 1
    icrand = h.Vector(icmean+icstd*npy.random.randn(h.tstop/h.dt+1))
    icrand.play(icr._ref_amp,h.dt)

    # do current injection run
    ic = h.IClamp(h.soma(.5))
    ap = h.APCount(h.soma(.5))
    ic.delay = 0
    ic.dur = h.tstop 
    ic.amp = amp
    h.run()
    return ap.n*1000./h.tstop

# current amps
imin = 0
if numbranches==2:
    imax = 1.1
if numbranches==8:
    imax = 4
istep = .05
Is = npy.arange(imin,imax+istep,istep)
f = npy.zeros((Is.size))
for ind,I in enumerate(Is):
    f[ind] = getfi(I,simiter)

cPickle.dump(f,open('data/fI-%dbranch-run%d.pkl' % (numbranches,simiter),'w'))
cPickle.dump(Is,open('data/fI-I-%dbranch.pkl' % (numbranches),'w'))

Loading data, please wait...