Detailed passive cable model of Dentate Gyrus Basket Cells (Norenberg et al. 2010)

 Download zip file   Auto-launch 
Help downloading and running models
Fast-spiking, parvalbumin-expressing basket cells (BCs) play a key role in feedforward and feedback inhibition in the hippocampus. ... To quantitatively address this question, we developed detailed passive cable models of BCs in the dentate gyrus based on dual somatic or somatodendritic recordings and complete morphologic reconstructions. Both specific membrane capacitance and axial resistivity were comparable to those of pyramidal neurons, but the average somatodendritic specific membrane resistance (R(m)) was substantially lower in BCs. Furthermore, R(m) was markedly nonuniform, being lowest in soma and proximal dendrites, intermediate in distal dendrites, and highest in the axon. ... Further computational analysis revealed that these unique cable properties accelerate the time course of synaptic potentials at the soma in response to fast inputs, while boosting the efficacy of slow distal inputs. These properties will facilitate both rapid phasic and efficient tonic activation of BCs in hippocampal microcircuits.
1 . Nörenberg A, Hu H, Vida I, Bartos M, Jonas P (2010) Distinct nonuniform cable properties optimize rapid and efficient activation of fast-spiking GABAergic interneurons. Proc Natl Acad Sci U S A 107:894-9 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Neuron or other electrically excitable cell; Dendrite;
Brain Region(s)/Organism: Hippocampus; Dentate gyrus;
Cell Type(s): Dentate gyrus basket cell;
Gap Junctions:
Simulation Environment: NEURON;
Model Concept(s): Parameter Fitting; Detailed Neuronal Models;
Implementer(s): Matthia (Norenberg), Anja [anja.matthiae at];
// pipettes.hoc
defines pipettes for simulations of passive cable models

// adapted from Schmidt-Hieber et al. 2007, J Neurosci 27:8430 according to Roth and Häusser 2001, J Physiol 535:445

// MORPHOLOGY OF PIPETTES ---------------------------------------------------
n_pip=80 			// sections per pipette
create pip1[n_pip]
create pip2[n_pip]

for i=0,n_pip-1 pip1[i] {	// create a conic pipette with an initial diameter (section 0) of 1 µm and a final diameter (section n_pip-1) of 128 µm:
	diam=1+127/(n_pip-1)*i	// total length is 1000 µm
for i=0,n_pip-2 {
	connect pip1[i+1](0.0), pip1[i](1.0)

for i=0,n_pip-1 pip2[i] {	// second pipette is just a copy from above's pipette except the name pip2
	diam=1+127/(n_pip-1)*i	// total length is 1000 µm
for i=0,n_pip-2 {
	connect pip2[i+1](0.0), pip2[i](1.0)

if (pipPres == 1 || Cpip > 0) {
	connect pip1[0](0.0), soma(0.5)			// attach pipette 1 to soma
	connect pip2[0](0.0), apic[291](8/9)	// attach pipette 2 to dendrite

//BIOPHYSICS OF PIPETTES ------------------------------------------------
forsec "pip" {
	insert pas
	e_pas = v_init

// Ri calculation: single ri per section is calculated by dividing Ra by the section area (see Koch 1999, Biophysics of Computation, Oxford Univ Press) and this ratio is scaled by the length of each section (this is because doubled length doubles the resistances connected together and resistances connected in series add up)
for i=0,n_pip-1 {
// this loop calculates the sum of all scaling factors (L/PI/r_pip/r_pip). Since Ra has to be the same for every compartment (specific axial resistance is independent of diameter!) Ra is then calculated dependent on the Rser in the following loop:
for i=0,n_pip-1 pip1[i] {
	Ra=Rser1/sum_pip	// this is now in MegaOhm * µm
	Ra*=100	     		// convert to Ohm cm

// now the same procedure for the second pipette:
for i=0,n_pip-1 {
for i=0,n_pip-1 pip2[i] {
	Ra=Rser2/sum_pip // this is now in MegaOhm * µm
	Ra*=100	     // convert to Ohm cm

for i=0,n_pip-1 {
	L_tot+=pip1[i].L // length of pipette 1

// arguments for proc adjustPipCap():
//(1)	section reference to a pipette section (called by $o1 as an object)
//(2) capacitance (see Roth and Häusser 2001); here, the capacitance per unit length (small letter) is constant instead of the specific capacitance! That's why the capacitance needs to be a range variable.

// adjusts the specific capacitance accordingly
proc adjustPipCap() {local cm_tot,area_tot,n_s,cm_pul
	$o1.sec {
		cm_pul=($2*1.0e-02)/L_tot	// this is in uF/cm
		// total capacitance of this section:
		cm_tot=cm_pul*L*1.0e-04		// length converted to cm
							  		// cm_tot is now in uF
		for n_s=0,nseg-1 {
			area_tot+=area((n_s+0.5)/nseg)	// um^2
		area_tot*=1.0e-08 			// convert to cm^2
		// this translates into a specific capacitance of:
		cm=cm_tot/area_tot			// this is now in uF/cm^2 (as it should be)
		//printf("\nDiam %f, L %f, Area %f, CapPip %f",diam,L,area_tot,cm)

// -------------------------------------------------------------
objectvar pipRef
if (pipPres == 1) {
	forsec "pip" {
		pipRef = new SectionRef()

Loading data, please wait...