CA1 pyramidal neuron synaptic integration (Bloss et al. 2016)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:187610
"... We examined synaptic connectivity between molecularly defined inhibitory interneurons and CA1 pyramidal cell dendrites using correlative light-electron microscopy and large-volume array tomography. We show that interneurons can be highly selective in their connectivity to specific dendritic branch types and, furthermore, exhibit precisely targeted connectivity to the origin or end of individual branches. Computational simulations indicate that the observed subcellular targeting enables control over the nonlinear integration of synaptic input or the initiation and backpropagation of action potentials in a branchselective manner. Our results demonstrate that connectivity between interneurons and pyramidal cell dendrites is more precise and spatially segregated than previously appreciated, which may be a critical determinant of how inhibition shapes dendritic computation."
Reference:
1 . Bloss EB, Cembrowski MS, Karsh B, Colonell J, Fetter RD, Spruston N (2016) Structured Dendritic Inhibition Supports Branch-Selective Integration in CA1 Pyramidal Cells. Neuron 89:1016-30 [PubMed]
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 K;
Gap Junctions:
Receptor(s): AMPA; NMDA; Gaba;
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Synaptic Integration;
Implementer(s): Cembrowski, Mark S [cembrowskim at janelia.hhmi.org];
Search NeuronDB for information about:  Hippocampus CA1 pyramidal GLU cell; AMPA; NMDA; Gaba; I Na,t; I K;
/
arrayTomography
README.txt
dists.mod *
eff.mod *
exc.mod
id.mod *
inh.mod
kad.mod *
kap.mod *
kdr.mod *
na3.mod *
nmdaSyn.mod
syns.mod *
activateExcitation.hoc
activateInhibition.hoc
addChannels.hoc *
addExcitation.hoc
addVgatInhibition.hoc
channelParameters.hoc *
flagVgatInhibition.hoc
getBranchOrder.hoc *
idMorph.hoc
inhibitionBiophysics.hoc
initializationAndRun.hoc *
loadMorph.hoc *
mosinit.hoc *
naceaxon.nrn *
processMorph.hoc *
proofreadMorph.hoc *
resetNSeg.hoc *
start.hoc
synHelperScripts.hoc
twinApical.swc *
                            
// DECLARE OBJECTS TO BE ASSIGNED DURING initChannels() CALL
objref osec[10]


// LOAD PARAMETERS FOR CHANNELS
{
	load_file("channelParameters.hoc")
}

proc initChannels(){
	// add in voltage-gated channels
	{
		forall {
			insert pas  g_pas=1/(Rm)  Ra=global_ra  e_pas=Vleak
			insert id
		}
		
		soma.sec { 
			insert nax  gbar_nax=gnaSoma  
			insert kdr  gkdrbar_kdr=gkdr
			insert kap  gkabar_kap=gkap
			insert kad  gkabar_kad=0
			insert pas	e_pas=Vleak  g_pas=1/Rm   Ra=global_ra  cm=Cm
		}
		

		forsec basalList {
			insert pas	e_pas=Vleak  Ra=global_ra 
			for (x) {
				xdist=distance(x)
				if (xdist <= spinelimit) {
					g_pas(x) = 1/Rm
					cm(x) = Cm
				} else {
					g_pas(x) = spinefactor/Rm
					cm(x) = spinefactor*Cm
				}
			}
			insert nax	
			insert kdr	gkdrbar_kdr=gkdr
			insert kap
			insert kad
			gkabar_kap = 0
			gkabar_kad = 0
			
			for (x) {
				xdist = distance(x)
				xdistNoLimit = xdist
				if (xdist > dlimit) {
					xdist = dlimit
				}
				gkabar_kap(x) = 0
				gkabar_kad(x) = 0
				if (xdist > dprox) {
					gkabar_kad(x) = gkad*(1+xdist*dslope)
				} else {
					gkabar_kap(x) = gkap*(1+xdist*dslope)
				}
			}
			
		}
		
		soma.sec {
			area(0.5)
			distance()
		}
			
		forsec apicalList {
			insert pas	e_pas=Vleak  Ra=global_ra 
			for (x) {
				xdist=distance(x)
				if (xdist <= spinelimit) {
					g_pas(x) = 1/Rm
					cm(x) = Cm
				} else {
					g_pas(x) = spinefactor/Rm
					cm(x) = spinefactor*Cm
				}
			}
			insert nax	
			insert kdr	gkdrbar_kdr=gkdr
			insert kap
			insert kad
			gkabar_kap = 0
			gkabar_kad = 0
			
			for (x) {
				xdist = distance(x)
				xdistNoLimit = xdist
				if (xdist > dlimit) {
					xdist = dlimit
				}
				gkabar_kap(x) = 0
				gkabar_kad(x) = 0
				if (xdist > dprox) {
					gkabar_kad(x) = gkad*(1+xdist*dslope)
				} else {
					gkabar_kap(x) = gkap*(1+xdist*dslope)
				}
			}
		}
		
		
		
		
		forsec obliqueList {
				for (x) {
					odist = distance(x) 	// odist is the distance of each segment along the oblique branch
					pdist_k = dlimit
					gkabar_kap(x) = gkap*(1+pdist_k*dslope+odist*okslope)
					gkabar_kad(x) = gkad*(1+pdist_k*dslope+odist*okslope)
				}
		}
		

		forsec tuftList {
			gbar_nax = gnaSlm
		}
		forsec ca3List {
			gbar_nax = gnaSr
		}
		soma.sec {
			gbar_nax = gnaSoma
		}
		
		soma.sec { 
			distance()
		}

	}
}


Loading data, please wait...