NN activity impact on neocortical pyr. neurons integrative properties in vivo (Destexhe & Pare 1999)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:262115
"During wakefulness, neocortical neurons are subjected to an intense synaptic bombardment. To assess the consequences of this background activity for the integrative properties of pyramidal neurons, we constrained biophysical models with in vivo intracellular data obtained in anesthetized cats during periods of intense network activity similar to that observed in the waking state. In pyramidal cells of the parietal cortex (area 5–7), synaptic activity was responsible for an approximately fivefold decrease in input resistance (Rin), a more depolarized membrane potential (Vm), and a marked increase in the amplitude of Vm fluctuations, as determined by comparing the same cells before and after microperfusion of tetrodotoxin (TTX). ..."
Reference:
1 . Destexhe A, Paré D (1999) Impact of network activity on the integrative properties of neocortical pyramidal neurons in vivo. J Neurophysiol 81:1531-47 [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: Neocortex;
Cell Type(s): Neocortex L2/3 pyramidal GLU cell; Neocortex L5/6 pyramidal GLU cell;
Channel(s): I Na,t; I K; I M;
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Synaptic Integration;
Implementer(s): Destexhe, Alain [Destexhe at iaf.cnrs-gif.fr];
Search NeuronDB for information about:  Neocortex L5/6 pyramidal GLU cell; Neocortex L2/3 pyramidal GLU cell; I Na,t; I K; I M;
/
demo_destexhe-pare-1999
README.html
corrgen8.mod
corrgen8.mod.windows
IKd_traub.mod
IM_zach.mod
INa_traub_shifted.mod
multiAMPA.mod
multiGABAa.mod
multiNMDA.mod
add_just_axon.oc
demo_bombardment_active_coarse.oc
demo_bombardment_active_precise.oc
demo_bombardment_passive_coarse.oc
demo_bombardment_passve_precise.oc
Electrode.oc
init.hoc
layer6.geo
localize_currents_M.oc
localize_synapses_corrgen_mul.oc
mosinit.hoc *
screenshot.png
                            
/*----------------------------------------------------------------------------

	CURRENT-CLAMP SIMULATIONS OF CORTICAL PYRAMIDAL CELLS
	=====================================================

	"precise" simulation: about 20,000 synapses simulated
	"active": voltage-dependent currents for action potentials

	Morphology
		- reconstructed Layer VI pyramidal cell from
		  Contreras, Destexhe and Steriade, 1997
		- correction for spines: 45% of dendritic membrane area
		- simple axon

	Passive properties
		- passive parameters adjusted to recordings in the absence
		  of synaptic activity (TTX + synaptic blockers)
		- passive parameters adjusted by simplex fitting to both
		  somatic and dendritic recordings
		  (dendritic recording: cell x210x4, Rin of 154 Meg after NBQX)
		=> Rin of 58.942 Meg in soma and 146 meg in dend1[12](0.179)
		
	Synaptic coverage:
		- AMPA and NMDA synapses in dendrites only; GABAa everywhere
		- exact synapse coverage for exc synapses (1.7um2)
		- exact synapse coverage for inh synapses (10um2)
		=> synapse densities consistent with morphological estimates
		   (DeFelipe & Farinas, 1992; Larkman 1991)

	Model adjusted to minis
		- quantal conductance compatible with patch-clamp (Sakmann)
		- uniform freq of release
		- parameters estimated from histograms
		=> gives minies with correct sigma and histograms

	Synaptic bombardment in passive model:
		- KCl: Erev_GABA = -55 mV; KAc: Erev_GABA = -75 mV
		- adjust freq to get 80% Rin change (Ketamine-Xylazine)
		- constrained by avg Vm under KCl (ECl=-55) and KAc (ECl=-75)

	Correlated bombardment:
		- correlated presynaptic random generator (corrGen8)

	Optimized algorithm:
		- multisynapse mechanisms in each segment
		=> tremendous acceleration of computation time

	Action potentials:
		- Na+, K+ currents in soma, axon, dendrites
		- shifted inactivation
		- no high density in initial segment (only 10x in axon)
		- conductances idem Dan Johnston 1997 Nature paper
		- KAc conditions

	=> this file simulates the synaptic bombardment in the presence of 
           voltage-dependent currents

        Details of the models can be found in:

	Destexhe, A. and Pare D.  Impact of network activity on the integrative 
	properties of neocortical pyramidal neurons in vivo. J. Neurophysiol.
	81: 1531-1547, 1999.

	A PDF copy of this paper is available in http://cns.iaf.cnrs-gif.fr


	Alain Destexhe, destexhe@iaf.cnrs-gif.fr

----------------------------------------------------------------------------*/



//----------------------------------------------------------------------------
//  load and define general graphical procedures
//----------------------------------------------------------------------------

load_file("nrngui.hoc")

objectvar g[20]			// max 20 graphs
ngraph = 0

proc addgraph() { local ii	// define subroutine to add a new graph
				// addgraph("variable", minvalue, maxvalue)
	ngraph = ngraph+1
	ii = ngraph-1
	g[ii] = new Graph()
	g[ii].size(tstart,tstop,$2,$3)
	g[ii].xaxis()
	g[ii].yaxis()
	g[ii].addvar($s1,1,0)
	g[ii].save_name("graphList[0].")
	graphList[0].append(g[ii])
}

proc addshape() { local ii	// define subroutine to add a new shape
				// addshape()
	ngraph = ngraph+1
	ii = ngraph-1
	g[ii] = new PlotShape()
	g[ii].scale(-130,50)
}

nrnmainmenu()			// create main menu
nrncontrolmenu()		// create control menu




//----------------------------------------------------------------------------
//  transient time
//----------------------------------------------------------------------------

CURRINJ = 0		// amount of injected current - serves as flag

if(CURRINJ == 0) {
  trans = 150	// transient to reach steady state
} else {
  trans = 300	// transient to skip injected current
}

v_init = -65		// initial condition

print " "
print ">> Transient time of ",trans," ms"
print " "


DEBUG=0


//----------------------------------------------------------------------------
//  create multi-compartment geometry
//----------------------------------------------------------------------------

print " "
print ">> Reading geometry of neuron..."
print " "

xopen("layer6.geo")		// Layer VI pyramidal cell

corrD = 1.449		// dendritic correction for spines (44% of membrane)



//----------------------------------------------------------------------------
//  add a simple axon
//----------------------------------------------------------------------------

xopen("add_just_axon.oc")		// add simplified axon




//----------------------------------------------------------------------------
//  Passive currents
//----------------------------------------------------------------------------

// Best fit for TTX-bicuculline with Layer 6 cell, soma
// fixed: rev=-65, cm=1, Ra=250, corrD=1.449
// fit: g_pas=4.52e-5  (Error=5.0221802)

leak_cond = 4.52e-5
leak_rev = -65
leak_rev = -70			// adjusted to cell x210x4
leak_rev = -80			// fr3
capacit = 1
axial_res = 250

forall { 			// insert passive current everywhere
	insert pas
	g_pas = leak_cond
	e_pas = leak_rev
	cm = capacit
	Ra = axial_res
	L = L
}

forsec "axon" {  		// exceptions along the axon
	cm = 0.04
	g_pas = 0.02
}

forsec "dend" { 		// correction for dendrites
	g_pas = g_pas * corrD
	cm = cm * corrD
}




//----------------------------------------------------------------------------
//  localize dendritic currents
//----------------------------------------------------------------------------

xopen("localize_currents_M.oc")	// get procedures to insert mechanisms

insert_currents()	// insert mechanisms in the neuron (**)
				// - dendrites: INa, ICa, IKCa, IM, ca++, IKd
				// - soma: idem dendrites
				// - axon: INa, IKd

//
// Na channels like Magee-Johnston
// IM set to repetitive firing at the right frequency
//

corrJ = 4.3	// Johnston correction factor for Na conductance

set_dendrites(corrD*corrJ*120e-4, corrD*100e-4, corrD*5e-4)
set_soma(corrJ*120e-4, 100e-4, 5e-4)
set_axon(corrJ*1200e-4, 1000e-4)		// 10-times more in axon


forall { 
  shift_inaT = -10		// inactivation around -52 mV
  vtraub_inaT = -58		// to get threshold at -55 mV
  vtraub_ikdT = -58
}



//objref counter
//soma counter = new APC(0.5)	// counter for action potentials




//----------------------------------------------------------------------------
//  localize synapses
//----------------------------------------------------------------------------

// Nov 27, 1997: recalculated densities to make them compatible with the 
// proportion of synapses found in pyramidal cells

cutoff = 40		// cutoff distance (um) where spines begin
ex_dend_unit =  1.7  // 100 // unit membrane area for excitatory synapses
in_dend_unit =  10   // 100 // unit membrane area for inh synapses in dendrites
in_soma_unit =  2.5  // 25  // unit membrane area for inh synapses in soma
in_iseg_unit =  1.7  // 17  // unit membrane area for inh synapses in init seg

//  With 100,100,25,17 um2 (exc dend, inh dend, inh soma, inh iseg), one
//  excitatory synapse represents 55-65 real synapses and one inhibitory
//  synapse represents 8.8-10.4 real synapses... (ratio of 6.25)
//  (according to high spine density; and 7% GABAergic in soma)


xopen("localize_synapses_corrgen_mul.oc")   // procedures and initializations

SEED = 1				  // flag for seed
if(SEED) set_seed(0.1,0.2,0.3,0.4)	  // set seed for random numbers


EXC = 1		// flag variable to insert excitatory synapses
NMDA = 0	// flag variable for NMDA
INH = 1		// flag variable to insert inhibitory synapses

if(INH) {
  insert_GABA_prox()	// insert GABAa synapses in soma, prox dend & axon
  insert_GABA_dend()	// insert GABAa synapses in dendrites
}

if(EXC) { 
  insert_AMPA_dend()	// insert AMPA synapses in dendrites
  if(NMDA) {
     insert_NMDA_dend()	// insert NMDA synapses in dendrites
  }
}



//
//  Presynaptic parameters
//
pre_freq_I = 5.5 	// inh presynaptic frequency
pre_freq_E = 1.0 	// exc presynaptic frequency 
			// (if inh is 0.1, exc should be 0.625)
pre_dur = 1e6		// duration of presynaptic firing

corr_E = 0.7	  	// exc correlation
corr_I = 0.7	  	// inh correlation

set_generators()



//
// KINETICS
//

Erev_multiGABAa = -55	// chloride (from Denis)
Erev_multiGABAa = -75	// K-Ac

//Cdur_multiGABAa = 0.3
//Alpha_multiGABAa = 20
//Beta_multiGABAa = 0.05	// from SimFit to Denis recordings
//Beta_multiGABAa = 0.18	// SimFit to hippocampal GABAa

Cdur_multiGABAa = 1	// idem Meth Neuronal Modeling
Cmax_multiGABAa = 1	// idem Meth Neuronal Modeling
Alpha_multiGABAa = 5	// idem Meth Neuronal Modeling
Beta_multiGABAa = 0.1	// fr3

//Cdur_multiAMPA = 0.3
//Alpha_multiAMPA = 5
//Alpha_multiAMPA = 20	// better (higher amplitude)
//Beta_multiAMPA = 0.243	// from SimFit to Denis recordings

Cdur_multiAMPA = 1		// idem Meth Neuronal Modeling
Cmax_multiAMPA = 1		// idem Meth Neuronal Modeling
Alpha_multiAMPA = 1.1	// idem Meth Neuronal Modeling
Beta_multiAMPA = 0.67	// fast AMPA to get a decay of 1.5 ms (Markram)



//
// QUANTAL CONDUCTANCES
//

g_AMPA = 0.001200	// quantal AMPA conductance (Denis is 0.000260)
g_GABA = 0.000600	// quantal GABA conductance (consistent with in vitro)
 
// By comparison, Sakmann is 200-400 nS for GABA, AMPA is 0.35-1 nS (McBain
// and Dingledine, 1992; Burgard and Hablitz, 1993)

if(EXC) {
  if(NMDA) {
     g_NMDA = 4 * g_AMPA
  } else {
     g_NMDA = 0
  }
} else {
  g_AMPA = 0
  g_NMDA = 0
}

if(INH) { 
  		// do nothing
} else {
  g_GABA = 0
}






proc stim_uniform() {
  set_generators()
  if(EXC) {
     set_AMPA_dend(g_AMPA*corrD)	// dendritic AMPA conductances
     if(NMDA) {
	set_NMDA_dend(g_NMDA*corrD)	// dendritic NMDA conductances
     } 
  }
  if(INH) {
     set_GABA_prox(g_GABA)		// perisomatic GABA conductances
     set_GABA_dend(g_GABA*corrD)	// dendritic GABA conductances
  }
  printf("\nSetting generators and synaptic conductances:\n")
  printf(" Exc f = %g Hz\n Inh f = %g Hz\n",pre_freq_E,pre_freq_I)
  printf(" gAMPA = %g uS\n gNMDA = %g uS\n gGABA = %g uS\n", \
	g_AMPA,g_NMDA,g_GABA)
}

stim_uniform()




//----------------------------------------------------------------------------
//  insert electrode in dendrite or soma
//----------------------------------------------------------------------------

xopen("Electrode.oc")		// template for electrode

access soma
//access dend1[12]

objectvar El		// create electrode

El = new Electrode(0.5)

soma El.stim.loc(0.5)		// locate in soma
//dend1[12] El.stim.loc(0.179)	// locate in dendrite
El.stim.del = 0
El.stim.dur = 1e6
El.stim.amp = 0



objectvar dc		// create DC-current

dc = new Electrode(0.5)

soma dc.stim.loc(0.5)		// locate in soma
//dend1[12] dc.stim.loc(0.179)	// locate in dendrite
dc.stim.del = 0
dc.stim.dur = 1e6
dc.stim.amp = 0





//----------------------------------------------------------------------------
//  setup simulation parameters
//----------------------------------------------------------------------------

Dt = 0.1
npoints = 10000	// 600000

objectvar SIMsoma,SIMdend		// create vectors of simulation points
SIMsoma = new Vector(npoints+500)
SIMdend = new Vector(npoints+500)

dt = 0.1			// must be submultiple of Dt
tstart = 0
tstop = npoints * Dt
runStopAt = tstop
steps_per_ms = 1/Dt
celsius = 36

statpts = npoints+1-trans/Dt	// nb of points to analyze

objectvar Vsoma, Vdend		// create vectors for histogram analysis
Vsoma = new Vector(statpts)
Vdend = new Vector(statpts)





//----------------------------------------------------------------------------
//  Define histogram procedures
//----------------------------------------------------------------------------

nbins = 100			// nb of points in histogram
vmin = -80			// min value of Vm
vmax = 0			// max value of Vm
hmax = 20000			// max value of histogram
binsize = (vmax-vmin)/nbins	// size of bin

objectvar Hsoma,Hdend		// create vectors for histograms
Hsoma = new Vector(nbins)
Hdend = new Vector(nbins)
objectvar HX
HX = new Vector(nbins)		// Vector for histogram's absissa
x = vmin
for i=0, nbins-1 {
	HX.set(i,x)
	x = x + binsize
}

hgr = ngraph
g[hgr] = new Graph()		// graph for histogram
g[hgr].size(vmin,vmax,0,hmax)
g[hgr].xaxis()
g[hgr].yaxis()
g[hgr].save_name("graphList[0].")
graphList[0].append(g[hgr])
ngraph = ngraph + 1

proc init() {				// initialization procedure
	finitialize(v_init)
	fcurrent()
	index = 0			// add definition of an index
}


proc step() {local i			// advance-one-step (Dt) procedure
	Plot()
	SIMsoma.set(index,soma.v(0.5))		// memorize data
	SIMdend.set(index,dend1[12].v(0.179))	// memorize data
	index = index + 1
	for i=1,nstep_steprun {
		advance()
	}
}

//
//  calculate sigma from histogram (skipping spikes)
//
proc calc_sigma() { local sum,avg,sig
   x = vmin
   for i=0, nbins-1 {
	if(x <= $1) {
		y = Hsoma.get(i)
		sum = sum + y
		avg = avg + y * x
		sig = sig + y * x*x
	}		
	x = x + binsize
   }
   avg = avg / sum
   sig = sqrt(sig/sum - avg*avg)
   printf("\n=> Values computed by cutting spikes: avg=%g, sigma=%g\n\n",avg,sig)
}

niter = 1
Rin = 0

proc run_histo() {
   for i=0, niter-1 {
	if(SEED) set_seed(0.1,0.2,0.3,0.4)		// set seed
	run()						// run simulation

	Vsoma.copy(SIMsoma,trans/Dt,npoints-1)		// truncate data
	Hsoma = Vsoma.histogram(vmin,vmax,binsize)	// make histogram
	Hsoma.plot(g[hgr],HX)				// draw histogram
	Avg = SIMsoma.mean(trans/Dt,npoints-1)		// calc statistics
	Std = SIMsoma.stdev(trans/Dt,npoints-1)
	if(CURRINJ != 0) {
	 Rin=-(SIMsoma.mean(320/Dt,400/Dt)-SIMsoma.mean(120/Dt,200/Dt))/CURRINJ
	}
	printf("\nSoma:\tRin=%g\tAvg=%g\tStd=%g\n",Rin,Avg,Std)
	calc_sigma(-40)

	Vdend.copy(SIMdend,trans/Dt,npoints-1)		// truncate data
	Hdend = Vdend.histogram(vmin,vmax,binsize)	// make histogram
	Hdend.plot(g[hgr],HX)				// draw histogram
	Avg = SIMdend.mean(trans/Dt,npoints-1)		// calc statistics
	Std = SIMdend.stdev(trans/Dt,npoints-1)
	if(CURRINJ != 0) {
	 Rin=-(SIMsoma.mean(320/Dt,400/Dt)-SIMsoma.mean(120/Dt,200/Dt))/CURRINJ
	}
	printf("dend:\tRin=%g\tAvg=%g\tStd=%g\n",Rin,Avg,Std)
   }
}



proc make_SBpanel() {			// make panel
	xpanel("Syn Bombardment")
	xpvalue("g_AMPA",&g_AMPA)
	xpvalue("g_NMDA",&g_NMDA)
	xpvalue("g_GABA",&g_GABA)
	xpvalue("Exc freq",&pre_freq_E)
	xpvalue("Inh freq",&pre_freq_I)
	xpvalue("Exc correlation",&corr_E)
	xpvalue("Inh correlation",&corr_I)
	xpvalue("Cl reversal",&Erev_multiGABAa)
	xpvalue("AMPA decay",&Beta_multiAMPA)
	xpvalue("GABA decay",&Beta_multiGABAa)
	xbutton("Apply","stim_uniform()")
	xbutton("Set seed","set_seed(0.1,0.2,0.3,0.4)")
	xpvalue("Nb iterations",&niter)
	xbutton("Run + calc histogram","run_histo()")
	xpanel()
}

make_SBpanel()




//----------------------------------------------------------------------------
//  add graphs
//----------------------------------------------------------------------------

addgraph("soma.v(0.5)",vmin,vmax)		// soma
addgraph("dend1[12].v(0.179)",vmin,vmax)