Engaging distinct oscillatory neocortical circuits (Vierling-Claassen et al. 2010)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:141273
"Selective optogenetic drive of fast-spiking (FS) interneurons (INs) leads to enhanced local field potential (LFP) power across the traditional “gamma” frequency band (20–80 Hz; Cardin et al., 2009). In contrast, drive to regular-spiking (RS) pyramidal cells enhances power at lower frequencies, with a peak at 8 Hz. The first result is consistent with previous computational studies emphasizing the role of FS and the time constant of GABAA synaptic inhibition in gamma rhythmicity. However, the same theoretical models do not typically predict low-frequency LFP enhancement with RS drive. To develop hypotheses as to how the same network can support these contrasting behaviors, we constructed a biophysically principled network model of primary somatosensory neocortex containing FS, RS, and low-threshold spiking (LTS) INs. ..."
Reference:
1 . Vierling-Claassen D, Cardin JA, Moore CI, Jones SR (2010) Computational modeling of distinct neocortical oscillations driven by cell-type selective optogenetic drive: separable resonant circuits controlled by low-threshold spiking and fast-spiking interneurons. Front Hum Neurosci 4:198 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network;
Brain Region(s)/Organism: Neocortex;
Cell Type(s): Neocortex L2/3 pyramidal GLU cell; Neocortex fast spiking (FS) interneuron; Neocortex spiking regular (RS) neuron; Neocortex spiking low threshold (LTS) neuron;
Channel(s): I Na,t; I T low threshold; I K; I M; I h; I K,Ca; I Calcium;
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Oscillations; Detailed Neuronal Models; Brain Rhythms; Evoked LFP; Touch;
Implementer(s): Vierling-Claassen, Dorea ;
Search NeuronDB for information about:  Neocortex L2/3 pyramidal GLU cell; I Na,t; I T low threshold; I K; I M; I h; I K,Ca; I Calcium;
/
Vierling-ClaassenEtAl2010
batchsims
confiles
README
ar.mod
ca.mod *
cad.mod *
cat.mod
fdsexp2syn.mod *
Gfluct.mod *
gnetstim.mod
kca.mod *
km.mod *
kv.mod *
na_2.mod
light_batch_FSdrive.hoc
light_genconn_DB.m
lightgamma_drive_DB.hoc
lightgamma_init_DB.hoc
lightgamma_LFP_DB.hoc
lightgamma_localconn_DB.hoc
lightgamma_network_DB.hoc
lightgamma_noise_DB.hoc
lightgamma_wiring_DB.hoc
lightgamma_wiring_proc_DB.hoc
                            
COMMENT

NetStimG() is based on NetStim() but has a Gaussian stochastic interval. The Poisson noise capability is 

retained. New parametrs are MeanInterval and SD (standard deviation) which control the interval

Mike Sikora July,2006

Added-The Start time is also Gaussian randomized vars MeanStart + StartSD

ENDCOMMENT



NEURON	{ 

  ARTIFICIAL_CELL NetStimG

  RANGE interval, number, MeanStart, StartSD

  RANGE noise,MeanInterval,SD

}



PARAMETER {

        MeanInterval = 10 (ms)

        SD = 0.5 (ms)

        MeanStart = 50 (ms) : Start of 1st spike

        StartSD = 1 : Standard deviation of 1st spike

	number	= 10 <0,1e9>	: number of spikes (independent of noise)

	noise		= 0 <0,1>	: amount of randomness (0.0 - 1.0)

}



ASSIGNED {

	event (ms)

	on

	ispike

	interval

}



PROCEDURE seed(x) {

	set_seed(x)

}



INITIAL {

        interval = normrand(MeanInterval,SD)

	on = 0

	ispike = 0

	if (noise < 0) {

		noise = 0

	}

	if (noise > 1) {

		noise = 1

	}

	if (number > 0) {

		: allowing MeanStart to be <0

		event = normrand(MeanStart,StartSD)

		: 

		if (event < 0) {

			event = 0

		}

		net_send(event, 3)

	}

}	



PROCEDURE init_sequence(t(ms)) {

	if (number > 0) {

		on = 1

		event = 0

		ispike = 0

	}

}



FUNCTION invl(mean (ms)) (ms) {

	if (mean <= 0.) {

		mean = .01 (ms) : I would worry if it were 0.

	}

	if (noise == 0) {

		invl = mean

	}else{

		invl = (1. - noise)*mean + noise*mean*exprand(1)

	}

}



PROCEDURE next_invl() {

	if (number > 0) {

                interval=normrand(MeanInterval,SD)

		event = invl(interval)

	}

	if (ispike >= number) {

		on = 0

	}

}



NET_RECEIVE (w) {

	if (flag == 0) { : external event

		if (w > 0 && on == 0) { : turn on spike sequence

			init_sequence(t)

			: randomize the first spike so on average it occurs at

			: noise*interval (most likely interval is always 0)

			next_invl()

			event = event - interval*(1. - noise)

			net_send(event, 1)

		}else if (w < 0 && on == 1) { : turn off spiking

			on = 0

		}

	}

	if (flag == 3) { : from INITIAL

		if (on == 0) {

			init_sequence(t)

			net_send(0, 1)

		}

	}

	if (flag == 1 && on == 1) {

		ispike = ispike + 1

		net_event(t)

		next_invl()

		if (on == 1) {

			net_send(event, 1)

		}

	}

}