Home > Computational Neuroscience > Neuron > NMODL Files
KEYWORD { statements }
v
(millivolts)t
(milliseconds)celsius
(C)diam
(um)area
(um^2) PARAMETER {
g = 0.001 (siemens/cm2) < 0, 1e9 >
}
PARAMETER
g = 0.001 (siemens/cm2) < 0, 1e9 > : variable = value (units) <minimum, maximum value that can be entered via gui>
NEURON
block’s RANGE
statement will have a GLOBAL
scope, meaning that chaning the value will affect every instance of that mechanism throughout an entire model.STATE
If a model involves differential equations, families of algebraic equations or kinetic reaction schemes, their dependent variables or unknowns are listed in the STATE
block.
STATE
variables or STATE
S.ASSIGNED
Can be used to declare two kinds of variables:
v, celsius, t
and ionic variables.The second group omits variables that are unknons in simmultaneous linear or nonlinear algebraic equations, or that are dependent variables in differential equations, or kinetic reaction schemes
hoc
level unless it’s declared in a RANGE
or GLOBAL
statementi
isn’t a state variable because the model does not define it in terms of a differential equation, i does not have dynamics of its own, further it is a known set of equations by direct assignment.v
is also similarly declared in the ASSIGNED
block. In this case v
is a driving force rather than a STATE
variable.NEURON
The NEURON
blockdefines what the model of the mechanism looks like from the outside.
INITIAL
Code in the INITIAL
block is executed when the run system’s finitialize()
method is called.
BREAKPOINT
The BREAKPOINT
block is the main computation block in NMODL.
BREAKPOINT
all variables should be consistent with the independent variable (t
)DERIVATIVE
Used to assign values to the derivatives of those STATE
S that are described by differential equations.
y' = expr
SOLVE
statement in the BREAKPOINT
blockSOLVE
statements should explicity invoke one of the integration methods appropriate for systems in which state variables can vary widely during a time step.The cnexp
method combines second order accuracy with computational efficiency is a good choice for most programs
KINETIC
FUNCTION
Functions defined by the FUNCTION
block are vailable at the hoc level and other mechanisms by adding the suffix to the mechanism that they’re defined in.
RANGE
varuables can be called from hoc directly (ie: GLOBAL
is allowed)NET_RECEIVE
Artificial cell models don’t have BREAKPOINT, KINETTIC or DERIVITIVE
. They only act when a new event arrives, these calculations are carried out in the NET_RECIEVE
block.
SUFFIX
Two purposes of SUFFIX
:
insert
statement.mod file
: comment here
NEURON {
SUFFIX leak
RANGE i
}
NEURON file
cable{
nseg = 1 //Number of segments per this section
insert leak
}
print cable.i_leak(0.5)
POINT_PROCESS
Identifies the mechanism be be a point process, so it will be managed in hoc
using an object oriented syntax (synapses).
NONSPECIFIC_CURRENT
The NONSPECIFIC_CURRENT
has two purposes:
i
specified after (Ex: NONSPECIFIC_CURRENT i
) will be reckonded in charge balance equationsRANGE
hoc
interpreterRANGE
should be declared in a PARAMETER
or ASSIGNED
block.RANGE
is GLOBAL
GLOBAL
:
”COMMENT
and end with ENDCOMMENT
COMMENT
This is a
multiple line
comment
ENDCOMMENT
v,celsius,t,diam,area,dt
: A passive leak current
NEURON { : Visible from the NEURON programming environment
SUFFIX leak : How the mechanism will be refered to by NEURON code (insert leak)
NONSPECIFIC_CURRENT i : will be reckonded in charge balance equations
RANGE i, e, g : Values here will need to appear in PARAMETER or ASSIGNED, will be different for each segment/section
}
PARAMETER { : Variables specified here are assigned by user or changed by hoc
g = 0.001 (siemens/cm2) < 0, 1e9 > : variable = value (units) <min, max (in hoc/gui)>
e = -65 (millivolt)
}
ASSIGNED { : values that will appear on the lefthand side of an assignment statement, or are driving values
i (milliamp/cm2)
v (millivolt)
}
BREAKPOINT {
i = g*(v - e)
}
This page is part of a collection of pages on various topics of computational neuroscience. Please direct questions and suggestions to the author Tyler Banks [website][github] at tyler@tylerbanks.net.