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
    • Value

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"
}