NEURON is a simulation environment for modeling individual neurons and networks of neurons. As of version 7.3, Neuron is capable of handling diffusion-reaction models, and integrating diffusion functions into models of synapses and cellular networks.[1] It was primarily developed by Michael Hines, John W. Moore, and Ted Carnevale at Yale and Duke.
NEURON models individual neurons via the use of sections which are subdivided into individual compartments by the program, instead of requiring the user to manually create the compartments. The primary scripting language that is used to interact with it is hoc but a Python interface is also available. The programs for it can be written interactively in a shell, or loaded from a file. NEURON supports parallelization via the MPI protocol. Also, starting with NEURON 7.0 parallelization is possible via internal multithreaded routines, for use on computers with multiple cores.[2]The properties of the membrane channels of the neuron are simulated using compiled mechanisms written using the NMODL language or by compiled routines operating on internal data structures that are set up with a GUI tool (Channel Builder).
NEURON along with the analogous software platform GENESIS are used as the basis for instruction in computational neuroscience in many courses and laboratories around the world.
Examples[edit]
This example will create a simple cell, with a single compartment soma and a multi compartment axon. It will have the dynamics of the cell membrane simulated using Hodgkin-Huxley squid axon kinetics. Then, it will stimulate it using a stimulus, and run for 50 ms.
//create two sections, the body of the neuron and a very long axon
create soma, axon
soma {
//length is set to 100 micrometers
L = 100
//diameter is set to 100 micrometers
diam = 100
//insert a mechanism simulating the standard squid Hodgkin–Huxley channels
insert hh
//insert a mechanism simulating the passive membrane properties
insert pas
}
axon {
L = 5000
diam = 10
insert hh
insert pas
//the axon shall be simulated using 10 compartments. By default a single compartment is used
nseg = 10
}
//connect the proximal end of the axon to the distal end of the soma
connect axon(0), soma(1)
//declare and insert a current clamp into the middle of the soma
objref stim
soma stim = new IClamp(0.5)
//define some parameters of the stimulus: delay, duration (both in ms) and amplitude (in nA)
stim.del = 10
stim.dur = 5
stim.amp = 10
//load a default NEURON library file that defines the run routine
load_file("stdrun.hoc")
//set the simulation to run for 50 ms
tstop = 50
//run the simulation
run()
If run from the GUI, a plot can be generated showing the voltage traces starting from the soma and the distal end of the axon. As expected, the action potential at the end of the axon arrives slightly later than it appears in the soma at the point of stimulation. The plot is membrane voltage versus time.
