MEG of Somatosensory Neocortex (Jones et al. 2007)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:113732
"... To make a direct and principled connection between the SI (somatosensory primary neocortex magnetoencephalography) waveform and underlying neural dynamics, we developed a biophysically realistic computational SI model that contained excitatory and inhibitory neurons in supragranular and infragranular layers. ... our model provides a biophysically realistic solution to the MEG signal and can predict the electrophysiological correlates of human perception."
Reference:
1 . Jones SR, Pritchett DL, Stufflebeam SM, Hämäläinen M, Moore CI (2007) Neural correlates of tactile detection: a combined magnetoencephalography and biophysically based computational modeling study. J Neurosci 27:10751-64 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network;
Brain Region(s)/Organism:
Cell Type(s): Neocortex L5/6 pyramidal GLU cell; Neocortex U1 L2/6 pyramidal intratelencephalic GLU cell;
Channel(s): I T low threshold; I K; I M; I K,Ca; I Sodium; I Calcium; I R;
Gap Junctions:
Receptor(s): GabaA; GabaB; AMPA; NMDA;
Gene(s):
Transmitter(s): Gaba; Glutamate;
Simulation Environment: NEURON;
Model Concept(s): Magnetoencephalography; Touch;
Implementer(s): Sikora, Michael [Sikora at umn.edu];
Search NeuronDB for information about:  Neocortex L5/6 pyramidal GLU cell; Neocortex U1 L2/6 pyramidal intratelencephalic GLU cell; GabaA; GabaB; AMPA; NMDA; I T low threshold; I K; I M; I K,Ca; I Sodium; I Calcium; I R; Gaba; Glutamate;
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)
		}
	}
}


Loading data, please wait...