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.STATEIf 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 STATES.ASSIGNEDCan 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.NEURONThe NEURON blockdefines what the model of the mechanism looks like from the outside.
INITIALCode in the INITIAL block is executed when the run system’s finitialize() method is called.
BREAKPOINTThe BREAKPOINT block is the main computation block in NMODL.
BREAKPOINT all variables should be consistent with the independent variable (t)DERIVATIVEUsed to assign values to the derivatives of those STATES that are described by differential equations.
y' = exprSOLVE 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
KINETICFUNCTIONFunctions 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_RECEIVEArtificial 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.
SUFFIXTwo 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_PROCESSIdentifies the mechanism be be a point process, so it will be managed in hoc using an object oriented syntax (synapses).
NONSPECIFIC_CURRENTThe NONSPECIFIC_CURRENT has two purposes:
i specified after (Ex: NONSPECIFIC_CURRENT i) will be reckonded in charge balance equationsRANGEhoc interpreterRANGE should be declared in a PARAMETER or ASSIGNED block.RANGE is GLOBALGLOBAL:”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.