GroMEt - GaloisInc/ASKE-E GitHub Wiki
GroMEt specification
Concepts in EASEL and Gromet
Constants
- UID
- Name
- Metadata
- Type
- Literals
State Variables
- UID
- Name
- Metadata
- Type
- Initial condition
Event
- UID
- Name
- Metadata
- Predicate
- Boolean expression of state variables and constants
- Rate
- Expression of state variables and constants
- Effect
- Assignment expression for state variables of state variables and constants
Measure
- UID
- Name
- Metadata
- State variable
- Time domain
Fold
- UID
- Name
- Metadata
- Measures
- Expression of measures and constants
Result
- UID
- Name
- Metadata
- Measure
- Value
EASEL SIR Model
model SIR:
let beta = 0.4
let gamma = 0.04
let s_initial = 997
let i_initial = 3
let r_initial = 0
state S = s_initial
state I = i_initial
state R = r_initial
let total_population = S + I + R
assert total_population == s_initial + i_initial + r_initial # total population is constant
event Infect:
when:
S > 0 and I > 0
rate:
beta * S * I / total_population
effect:
S -= 1
I += 1
event Remove:
when:
I > 0
rate:
gamma * I
effect:
I -= 1
R += 1
GroMEt Fragments
"variable": {
"uid": "sir_s",
"name": "s",
"object_ref": "",
"metadata": ["susceptible"],
}
"variable": {
"uid": "sir_i",
"name": "i",
"object_ref": "",
"metadata": ["infected"],
}
"box": {
"uid": "sir_infect",
"name": "infect",
"type": "box",
"box_type:": "function",
"wiring": "",
"metadata": "",
"function_type": "assign"
}