Cerebellar Golgi cell (Solinas et al. 2007a, 2007b)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:112685
"... Our results suggest that a complex complement of ionic mechanisms is needed to fine-tune separate aspects of the neuronal response dynamics. Simulations also suggest that the Golgi cell may exploit these mechanisms to obtain a fine regulation of timing of incoming mossy fiber responses and granular layer circuit oscillation and bursting."
Reference:
1 . Solinas S, Forti L, Cesana E, Mapelli J, De Schutter E, D'Angelo E (2007) Computational reconstruction of pacemaking and intrinsic electroresponsiveness in cerebellar Golgi cells. Front Cell Neurosci 1:2 [PubMed]
2 . Solinas S, Forti L, Cesana E, Mapelli J, De Schutter E, D'Angelo E (2007) Fast-reset of pacemaking and theta-frequency resonance patterns in cerebellar golgi cells: simulations of their impact in vivo. Front Cell Neurosci 1:4 [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: Cerebellum;
Cell Type(s): Cerebellum golgi cell;
Channel(s): I Na,p; I Na,t; I T low threshold; I A; I K; I M; I K,Ca; I Sodium; I Calcium; I Potassium; I h;
Gap Junctions:
Receptor(s):
Gene(s): HCN1;
Transmitter(s):
Simulation Environment: NEURON; neuroConstruct (web link to model);
Model Concept(s): Activity Patterns; Oscillations;
Implementer(s): D'Angelo, Egidio [dangelo at unipv.it]; De Schutter, Erik [erik at oist.jp];
Search NeuronDB for information about:  I Na,p; I Na,t; I T low threshold; I A; I K; I M; I h; I K,Ca; I Sodium; I Calcium; I Potassium;
Files displayed below are from the implementation
/
Golgi_cell
sessions
readme.html
Golgi_BK.mod *
Golgi_Ca_HVA.mod *
Golgi_Ca_LVA.mod *
Golgi_CALC.mod *
Golgi_CALC_ca2.mod *
Golgi_hcn1.mod *
Golgi_hcn2.mod *
Golgi_KA.mod *
Golgi_KM.mod *
Golgi_KV.mod *
Golgi_lkg.mod *
Golgi_Na.mod *
Golgi_NaP.mod *
Golgi_NaR.mod *
Golgi_SK2.mod *
Pregen.mod *
Synapse.mod *
Channel_dynamics.hoc *
Golgi_ComPanel.hoc *
Golgi_count.txt
Golgi_template.hoc
mosinit.hoc
Save_data.hoc *
screenshot.jpg
Start_golgi.hoc
Synapses.hoc *
utils.hoc *
                            
: $Id: pregen.mod,v 1.3 2000/05/16 11:16:56 hines Exp $
: comments at end

NEURON	{ 
  POINT_PROCESS Golgi_SpikeGenerator
  RANGE y
  RANGE fast_invl, slow_invl, burst_len, start, end,delay
  RANGE noise
}

PARAMETER {
	fast_invl	= 10 (ms)	: time between spikes in a burst (msec)
	slow_invl	= 0 (ms)	: burst period (msec)
: actually, above is interburst period in conformity with original version
: see
	burst_len	= 10		: burst length (# spikes)
	start		= 50 (ms)	: start of first interburst interval
	end		= 1e10 (ms)	: time to stop bursting
	noise		= 0		: amount of randomeaness (0.0 - 1.0)
	delay		= 4
}

ASSIGNED {
	y
	burst
	event (ms)
	burst_off (ms)
	burst_on (ms)
	toff (ms)
	on
}

PROCEDURE seed(x) {
	set_seed(x)
}

INITIAL {
	on = 1
	toff = 1e9
	y = -90
	burst = 0
	event = start - slow_invl
	:
	event_time()
	while (on == 1 && event < 0) {
		event_time()
	}
	if (on == 1) {
		net_send(event, 1)
	}
}	

FUNCTION interval(mean (ms)) (ms) {
	if (mean <= 0.) {
		mean = .01 (ms) : I would worry if it were 0.
		: since mean is a local variable, if the number it is set
		: to is dimensionless, mean will be dimensionless.
	}
	if (noise == 0) {
		interval = mean
	}else{
		interval = (1. - noise)*mean + noise*(mean*exprand(1)+delay) : (delay+noise*mean*exprand(1))
	}
}

PROCEDURE event_time() {
	if (slow_invl == 0 || (burst != 0. && burst_len > 1)) {
		event = event + interval(fast_invl)
		if (event > burst_on + burst_off) {
			burst = 0.
		}
	}else{
		burst = 1.
: if slow_invl from beginning of burst to beginning of burst
:		event = event + interval(slow_invl - (burst_len-1)*fast_invl)
: use following if slow_invl is interburst interval
		event = event + interval(slow_invl)
		burst_on = event
		burst_off = interval((burst_len - 1)*fast_invl)-1e-6
	}
	if (event > end) {
		on = 0
	}
}

NET_RECEIVE (w) {
:printf("Pregen receive t=%g flag=%g\n", t, flag) 
	if (flag == 1 && on == 1) {
		y = 20
		net_event(t)
		event_time()
		net_send(event - t, 1)
		net_send(.1, 2)
	}
	if (flag == 2) {
		y = -90
	}
}

COMMENT
Presynaptic spike generator
---------------------------

This mechanism has been written to be able to use synapses in a single
neuron receiving various types of presynaptic trains.  This is a "fake"
presynaptic compartment containing a fast spike generator.  The trains
of spikes can be either periodic or noisy (Poisson-distributed), and 
either tonic or bursting.

Parameters;
   noise: 	between 0 (no noise-periodic) and 1 (fully noisy)
   fast_invl: 	fast interval, mean time between spikes (ms)
   slow_invl:	slow interval, mean burst silent period (ms), 0=tonic train
   burst_len: 	mean burst length (nb. spikes)

Written by Z. Mainen, modified by A. Destexhe, The Salk Institute

Modified by Michael Hines for use with CVode

Modified by Michael Hines to use logical event style with NET_RECEIVE
ENDCOMMENT