MyFirstNEURON (Houweling, Sejnowski 1997)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:3808
MyFirstNEURON is a NEURON demo by Arthur Houweling and Terry Sejnowski. Perform experiments from the book 'Electrophysiology of the Neuron, A Companion to Shepherd's Neurobiology, An Interactive Tutorial' by John Huguenard & David McCormick, Oxford University Press 1997, or design your own one or two cell simulation.
Reference:
1 . Huguenard J, McCormick DA, Shepherd GM (1997) Electrophysiology of the Neuron, A Companion to Shepherd's Neurobiology, An Interactive Tutorial. Electrophysiology of the Neuron
2 . Houweling AR, Sejnowski TJ (1997) Personal communication from Arthur Houweling.
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:
Cell Type(s):
Channel(s): I Na,t; I L high threshold; I T low threshold; I A; I K; I M; I K,Ca; I CAN; I Sodium; I Calcium; I Potassium;
Gap Junctions:
Receptor(s): GabaA; GabaB; AMPA; NMDA;
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Action Potential Initiation; Activity Patterns; Bursting; Ion Channel Kinetics; Temporal Pattern Generation; Oscillations; Parameter Fitting; Detailed Neuronal Models; Tutorial/Teaching; Action Potentials; Sleep; Calcium dynamics;
Implementer(s): Houweling, Arthur [Arthur at Salk.edu];
Search NeuronDB for information about:  GabaA; GabaB; AMPA; NMDA; I Na,t; I L high threshold; I T low threshold; I A; I K; I M; I K,Ca; I CAN; I Sodium; I Calcium; I Potassium;
/
MyFirstNEURON
MyFirstNEURONmanual_files
readme.txt
ampa.mod
ampa2.mod
cadyn.mod
gabaA.mod
gabaA2.mod
gabaB.mod
gabaB2.mod
HH1.mod
HH2.mod
ia.mod *
iahp.mod
iahp2.mod *
ic.mod *
ican.mod
ih.mod *
il.mod *
im.mod *
it.mod *
it2.mod
leak.mod *
nmda.mod
nmda2.mod
synstim.mod
about.hoc
e1.par
e10.par
e11a.par
e11b.par
e12.par
e13.par
e14.par
e15a.par
e15b.par
e16a.par
e16b.par
e16c.par
e17a.par
e17b.par
e3.par
e5.par
e7.par
manual.htm
mcontrl1.hoc
mcontrl2.hoc
mcontrl3.hoc
methods.htm
mosinit.hoc
my1stnrn.hoc
parpanl1.hoc
parpanl2.hoc
parpanl3.hoc
plotcurr.hoc
                            
COMMENT
-----------------------------------------------------------------------------
Simple synaptic mechanism derived for first order kinetics of
binding of transmitter to postsynaptic receptors.

A. Destexhe & Z. Mainen, The Salk Institute, March 12, 1993.
Last modif. Sept 8, 1993.

Reference:

Destexhe, A., Mainen, Z. and Sejnowski, T.J.  An efficient method for 
computing synaptic conductances based on a kinetic model of receptor binding.
Neural Computation, 6: 14-18, 1994.
-----------------------------------------------------------------------------

  MODIFIED KINETIC MODEL FOR G-PROTEIN GATED SYNAPTIC CHANNELS

For a large family of synaptic receptors, the neurotransmitter does not gate
the ionic channel directly, but through an intracellular second-messenger,
based on the activation of G-proteins.  The most probable mechanism for many
of these neurotransmitters is the direct activation/deactivation of a K+
channel by the G-protein itself.  In this family of receptors, the cholinergic
(muscarinic M2) and GABAergic (GABA_B) receptors are the most extensively
studied.

For the GABA_B-mediated synaptic response, it is assumed that the transmitter
GABA binds to a receptor which catalyzes the intracellular activation of a
G-protein subunit (G_alpha), which itself diffuses and binds to an associated
K+ channel.  The present file contains a first-order model for GABA-B
receptors, which was shown to be equivalent to a more detailed model of the
entire G-protein cascade (Destexhe et al., J. Computational Neuroscience, 1:
195-231, 1994).

Parameters estimated from whole cell recordings of synaptic currents on
hippocampal neurons (Otis et al, J. Physiol. 463: 391-407, 1993).   The model
was directly fit to averaged currents (see Destexhe et al., J. Neurophysiol.
72: 803-818, 1994).

-----------------------------------------------------------------------------
ENDCOMMENT

INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}

NEURON {
	POINT_PROCESS GABAB1
	POINTER pre
	RANGE C, R, R0, R1, g, gmax, lastrelease, Prethresh
	NONSPECIFIC_CURRENT i
	GLOBAL Cmax, Cdur, Alpha, Beta, Erev, Deadtime, Rinf, Rtau
}

UNITS {
	(nA) = (nanoamp)
	(mV) = (millivolt)
	(umho) = (micromho)
	(mM) = (milli/liter)
}

PARAMETER {

	Cmax	= 1	(mM)		: max transmitter concentration
	Cdur	= 85	(ms)		: transmitter duration (rising phase)
	Alpha	= 0.016	(/ms mM)	: forward (binding) rate
	Beta	= 0.0047 (/ms)		: backward (unbinding) rate
	Erev	= -95	(mV)		: reversal potential (potassium)
	Prethresh = 0 			: voltage level nec for release
	Deadtime = 1	(ms)		: mimimum time between release events
	gmax		(umho)		: maximum conductance
}

ASSIGNED {
	v		(mV)		: postsynaptic voltage
	i 		(nA)		: current = g*(v - Erev)
	g 		(umho)		: conductance
	C		(mM)		: transmitter concentration
	R				: fraction of open channels
	R0				: open channels at start of release
	R1				: open channels at end of release
	Rinf				: steady state channels open
	Rtau		(ms)		: time constant of channel binding
	pre 				: pointer to presynaptic variable
	lastrelease	(ms)		: time of last spike
}

INITIAL {
	R = 0
	C = 0
	Rinf = Cmax*Alpha / (Cmax*Alpha + Beta)
	Rtau = 1 / ((Alpha * Cmax) + Beta)
	lastrelease = -999
}

BREAKPOINT {
	SOLVE release
	g = gmax * R
	i = g*(v - Erev)
}

PROCEDURE release() { LOCAL q
	:will crash if user hasn't set pre with the connect statement 

	q = ((t - lastrelease) - Cdur)		: time since last release ended

						: ready for another release?
	if (q > Deadtime) {
		if (pre > Prethresh) {		: spike occured?
			C = Cmax			: start new release
			R0 = R
			lastrelease = t
		}
						
	} else if (q < 0) {			: still releasing?
	
		: do nothing
	
	} else if (C == Cmax) {			: in dead time after release
		R1 = R
		C = 0.
	}

	if (C > 0) {				: transmitter being released?

	   R = Rinf + (R0 - Rinf) * exptable (- (t - lastrelease) / Rtau)
				
	} else {				: no release occuring

  	   R = R1 * exptable (- Beta * (t - (lastrelease + Cdur)))
	}

	VERBATIM
	return 0;
	ENDVERBATIM
}

FUNCTION exptable(x) { 
	TABLE  FROM -10 TO 10 WITH 2000

	if ((x > -10) && (x < 10)) {
		exptable = exp(x)
	} else {
		exptable = 0.
	}
}