Jump to: navigation, search

Difference between revisions of "STEM Expression Language"

(Global Variables)
(Global Variables)
Line 29: Line 29:
* '''t''' - ''absolute simulation time''
* '''t''' - ''absolute simulation time''
* '''timeDelta''' - ''The time step (in ms) used in the simulation. t*timeDelta is the total time (in ms) since the start of the simulation.''
* '''timeDelta''' - ''The time step (in ms) used in the simulation. t*timeDelta is the total (simulated) time (in ms) since the start of the simulation.''
==== Model Parameter Variables ====
==== Model Parameter Variables ====

Revision as of 14:50, 27 June 2013

STEM Expressions

The STEM Expression Language is designed to allow easy access to key components of the STEM modeling and simulation framework by using variable and function-driven equations. The variables and functions are designed to simplify access to STEM APIs for getting compartment values, model parameter values, as well as access to various denominator data through functions.

Operators and Keywords

Currently the expression language is primarily built around simple arithmetic operators, such as +, -, *, and / using infix notation. Parentheses ( and ) perform subexpression grouping and enforce operator precedence.

The equals operator = is used for assignment when defining local variables.

Statements are terminated with a semicolon ;

The delta keyword defines the final statement in an expression. This represents the "return value" for the expression.


There are four types of user variables that are visible to your expressions, three of which a user can change.

  • Global Variables that represent key parts of the simulation state. These are fixed and cannot be edited.
  • Model Parameter variables that represent the model parameters in your model
  • Compartment variables that represent the absolute and relative values of compartments in your model
  • Local variables

A fifth type of variable are system variables. These variables are not visible to the expression language and are only used by STEM API developers.

Global Variables

Global variables are system-defined variables that are helpful as input to determine rates relative to time.


  • t - absolute simulation time
  • timeDelta - The time step (in ms) used in the simulation. t*timeDelta is the total (simulated) time (in ms) since the start of the simulation.

Model Parameter Variables

Model parameters provide access to the rate parameters defined in your disease model - and changeable by editing the value in your disease or as part of an experiment/automatic experiment. Model parameters are generally numeric (double) values and visible by their name as defined in the model.

Examples: transmissionRate, recoveryRate, immunityLossRate

Compartment Variables

Compartment variables provide access to your model's compartment values for each region for a step in the simulation. There are two types of compartment variables:

  • Relative Compartment Value variables - lower case
  • Absolute Compartment Value variables - upper case
Relative Value (lower case)

Relative compartment values are calculated as Compartment Value divided by Region Population Count. They are accessible to expressions using the compartment name beginning with a lower case letter.


  • s - relative population count in 'susceptible' compartment
  • i - relative population count in 'infected' compartment
  • r - relative population count in 'recovered' compartment
Absolute Value (upper case)

Absolute compartment values are the absolute number of population members in a given compartment for a node at the current time step. They are accessible to expressions using the compartment name beginning with an upper case letter.


  • S - absolute population count in 'susceptible' compartment
  • I - absolute population count in 'infected' compartment
  • R - absolute population count in 'recovered' compartment

Local Variables

Expression statements are "local" variables. A user may define statements above the "delta" line that then can be used in subsequent statements in the expression.


myVariable = S*i;
delta transmissionRate*myVariable;


Functions are special procedures/operations that provide access sophisticated data access and manipulation features in STEM. Functions accept zero or more parameters as inputs and return a single output, generally a floating point number. Some functions may not accept user inputs but are still context-sensitive based on the current region and time step, for example the Earth Science functions.

Functions are identified by a name with input parameters wrapped in parentheses. Examples:

  • effective(s) - effective count for the susceptible compartment
  • area() - area for the current region

In addition to the built-in functions listed below, many operations in the Java Math API are also available as STEM functions.

Current STEM Functions:

Function Name Input Type Output Type Description
Disease Modeling API Functions
effective compartment number Calculates the effective count of the compartment, includes population mixing
vaccinations none number Calculates the number of vaccinations for the region/time step
isolations none number Calculates the number of isolations for the region/time step
Earth Science API Functions
area none number Gets the area Earth Science label value
temperature none number Gets the daylight temperature Earth Science label value for the region
nighttemp none number Gets the night temperature Earth Science label value for the region
precipitation none number Gets the precipitation Earth Science label value for the region
ndvi none number Gets the vegetation index Earth Science label value for the region
elevation none number Gets the elevation Earth Science label value for the region


A "comment" - text that is not considered or evaluated as part of the expression - can be entered by prefixing a line with // . This creates a comment for the rest of the line.


// This is a comment
delta tranmissionRate*S*i;

Expression Editor

The Visual Editor's Expression Editor is a simple tool to enter the equations that describe the movement of a population between two compartments for each region for each step of the simulation. The transition value - the delta - as calculated by the equation entered represents a balanced decrease from the source compartment equal to the increase in the target compartment.

Select a Transition

To select a transition, a user may either:

  • Select from the Visual Editor's canvas using the Chooser Tool
  • Select from the Transition drop-down menu


The expressions used in the Expression Editor follow the STEM Expression Language. For full details, see above


The last statement in the expression editor must start with the delta keyword/operator. This is the value used to compute the movement from source to target compartments.

Contextual Content Assist

The content assist feature provides contextual suggestions to assist a user authoring expressions. This includes partial-completion of variables, functions, and operators. In the future, complete documentation will also be available from the content assist window.

STEM ExpressionEditor ContentAssist.png

Content assist is available at all times while editing an expression. To access the content assist prompt, simply type Control-<Space>. You can continue typing to further filter available syntax/semantic options.

Syntax Highlighting / Coloring


STEM ExpressionEditor ForIncidence.png

For internal and reporting purposes, the STEM simulation engine needs to know which transitions represent an increase in disease incidence. The (positive) delta value of the transition will be added to each incidence total after each step.

A transition can account to zero or more incidences that are included in a disease. Under For Incidence, check the box(es) next to the incidence name for a given transition.


Any problems with the syntax (structure) or semantic (types, etc) of your expression will result in an error.

Important note: Errors in the model will prevent the expression compiler from generating the code to update your disease/population model. Please fix any errors before trying to run the model in STEM.

The Expression Editor will notify you of an error in several ways:

  • The part of the expression that is not understood will be underlined in red
  • A small red X icon will appear next to the line in the Expression Editor
  • The transition connection in the Visual Editor will be highlighted red indicating an invalid expression
  • If the Model is saved with an invalid expression, a red icon will appear next to the metamodel file in the Project Explorer

STEM ExpressionEditor Error.png

Error notification in the Visual Editor

STEM ExpressionEditor Error2.png

Error notification in the Project Explorer