All elements
This page summarizes all the element types currently supported by the proof-of-concept interpreter. The explanations are somewhat cursory so it is probably better to look at the examples to work out what is going on.
There is one block for each element type. All element names are in fixed width bold. Attribute names are in normal fixed width. Each block shows the attributes supported by an element and then the types of children allowed.
Model structure
Models can be spread over multiple files. The root element in each file is Lems.
Lems
Include
Dimension
Unit
ComponentType
Component
Include
file
the name or relative path of a file to be included
Files are included where the Include declaration occurs. The enclosing Lems block is stripped
off and the rest of the content included as is.
Units and dimensions
Defining ComponentType and Component elements
Dimension
A Dimenson element associated a name with a particular combination of the standards SI base dimensions, mass, lenght, time, current, temperature and amount if substance (moles)
name
The name t be used when referring to this dimension from variable declaration or units
m
Mass
l
Length
t
Time
i
Current
k
Temperature
n
Amunt of substance
Unit
A Unit asociates a symbol with a dimension and a power of ten. For non-metric units a scale can be provided, as in '1 inch = 0.0254 m'. In this case there is a degeneracy between the power and the scale which is best resolved by not using the two together. The offset parameter is available for units which are not zero-offset, such as farenheit.
name
Name...
symbol
The symbol is used to refer to this unit inside compound expressions coutaining a number and a unit symbol. Such expressions can only occur on the right hand side of assignments statements
dimension
Reference to the dimension for this unit
power
Power of ten
scale
Scale, only to be used for scales which are not powers of ten
offset
Offset for non zero-offset units
Assertion
ComponentType
Root element for defining component types.
name
The name of the component type. This can be uses as an XML element name in the shorthand form whendefining components.
eXtends
The component type that this type inherits field definitions for, if any
abouts
Metadata about a component type can be included anywhere by wrapping it in an About element, though this is not necessary: LEMS does not use the body text of XML elements itself, so this is free for the modeler to include descriptive text or other markup of thier own.
metas
Structured metadata can be put in Meta elements. The content is read into a generic xml data structure. Other tools can then do their own thing with it. Each Meta element should set the context attribute, so tools can use the getMeta(context) method to retrieve elements that match a particular context.
Target
Parameter
Sets the name an dimensionality of a parameter that must be supplied when a component is defined curresponding to the enclosing ComponentType
name
The name of the parameter. This isthe attibute name when the parameter is supplied in a component definition
dimension
The dimension, or 'none'. This should be the ID of a deminsion element defined elsewhere
DerivedParameter
A parameter that comes from other parameter values in the model rather than being set explicitly. Its value can be supplied either with the 'value' attribute that evaluates within the scope of the definition, or with the 'select' attribute which gives a path to 'primary' version of the parameter. For example, setting select='//MembranePotential[species=channel/species]/reversal' within the appropriate context allows a channel's reversal potential to taken from a single global setting according to its permeant ion, rather than explicitly supplied locally.
select
Path to the parameter that supplies the value. Exactly one of 'select' and 'value' is required.
value
Expression that supplies the value. Exactly one of 'select' and 'value' is required.
Fixed
Fixes the value of a parameter in the parent class, so that it does not have to be supplied separately in component definitions.
parameter
value
Requirement
A Requirement gives the name and dimension of a quantity (parameter or variable) that should be accessible within the scope of a model component. This is only applicable for elements that can be included as children of other elements, where the scope comprises its own parameters and those in the scope of its enclosing element. Once a requirement has been declared, then the quantity can be used within the Dynamics definition of the component. It is the responsibility of an implementation to check that the component is only used in a context in which the requirement is met. A typical example is in defining membrand bound components which require access to the membrane potential but where the variable that holds the potential itself is defined in the top level component.
name
name
dimension
reference to a dimension
Exposure
A quantity that is made available to other component in the simulation. All variables in a Dynamics definition are private. If other components need access to them then the definition has to explicitly link them to an exposure defined in the component class
name
name
dimension
Reference to a dimension
Child
Specifies that a component can have a child of a particular type. The name supplied here can be used in path expressions to access the component. This is useful, for example, where a component can have multiple children of the same type but with different roles, such as the forward and reverse transition rates in a channel.
name
type
Reference to a component class, the value should be the name of the target class.
Children
Specifies that a component can have children of a particular class. The class may refer to an extendedtype, in which case components of any class that extends the specified target class should be valid as child components
name
type
The class of component allowed as children.
Link
Like a ComponentRef, but resolved relative to the enclosing object so the target must already be in the model. One or the other should be deprecated. The Link element has the same properties as ComponentRef. The Link element just establishes a connection with the target component, but leaves it in its existing place in the hierarchy. Variables in the target component can be accessed via the name of the link element.
name
type
Target type
ComponentReference
A reference to another component. The target component can be accessed with path expressions in the same way as a child component, but can be defined independently
name
type
Target type
EventPort
A port on a component that can send or receive events, depending on the direction speicfied.
name
direction
'IN' or 'OUT'
Text
Holds textual information that does not change the model but is needed for other purposes such as labelling graphs.
name
Path
Duplicates some functionality of PathParameter - the two should be merged.
name
Attachments
Specifies that a component can accept attached components of a particular class. Attached components can be added at build time dependent on other events. For scoping and access purposes they are like child components. The cannonical use of attachments is in adding synapses to a cell when a network connection is made.
name
type
Constant
A constant quantity: like a parameter for which the value is supplied in the class definition itself rather than when a component is defined.
name
symbol
value
dimension
Insertion
IntegerParameter
name
The name of the parameter. This isthe attibute name when the parameter is supplied in a component definition
dimension
The dimension, or 'none'. This should be the ID of a deminsion element defined elsewhere
Dynamics
Specifies the dynamical behavior of components build from this ComponentType.
StateVariable
name
dimension
exposure
If this variable is to be accessed from outside, it should be linked to an Exposure that is defined in the ComponentType.
StateAssignment
Has 'variable' and 'value' fields
TimeDerivative
Has a variable and a value. The value is the rate of change of the variable.
DerivedVariable
A quantity that depends algebraically on other quantities in the model. The 'value' field can be set to a mathematical expression, or the select field to a path expression. If the path expression produces multiple matches, then the 'reduce' field says how these are reduced to a single value by taking the sum or product.
name
select
dimension
reduce
Either 'add' or 'multiply'
exposure
OnStart
OnCondition
OnEvent
Event handler block
port
the port to lesten on
EventOut
KineticScheme
A kinetic scheme does not itself introduce any new elements or state variables. It is rather a way of connecting quantities in existing components by saying that quantities in the edge elements should be interpreted as transition rates among quantities in the node elements.
name
nodes
edges
Nodes
The children attribute should point to a children declaration in the parent element. The variable field specifies the variable in the state elements that is governed by the scheme.
children
variable
Edges
children
The element that provides the transitions for the scheme
sourceNodeName
The name of the attribute in the rate element that defines the source of the transition
targetNodeName
forwardRate
reverseRate
Regime
OnEntry
Transition
Structure
MultiInstantiate
CoInstantiate
Choose
ChildInstance
ForEach
EventConnection
With
Simulation
Record
quantity
path to the parameter that will contain the path to the quantity to be recorded
scale
path to the element that defines the scale for rendering the quantity dimensionless
color
hex format color suggestion for how the data should be displayed
DataDisplay
Run
The run element provides a way to make a model runnable. It should point to the parameters that set the step size etc. The target parameters have to be dimensionally consistent.
component
name of the component reference that will set the component to be run
variable
increment
path to the parameter that sets the step size
total
path to the parameter that sets the total span of the independent variable to be run