Architecture

The main entry point is src/simulator.py.

At a high level:

  1. InputProperties reads the JSON input.

  2. ModelParameters loads shared parameter dictionaries and data files.

  3. Network creates nodes and dynamic compartment indices.

  4. Treatment models distribute vaccines and antivirals.

  5. Disease models advance compartment states.

  6. Travel models move exposure pressure across nodes.

  7. Writer emits daily outputs and metadata.

Model Families

  • Disease models live in src/models/disease/.

  • Travel models live in src/models/travel/.

  • Treatment and intervention models live in src/models/treatments/.

  • Base classes and shared data structures live in src/baseclasses/.

Dynamic Compartments

The active Compartments enum is created from the input JSON compartment list. This makes the same population storage work for SEIRS, SEITRS, SEIHRD, and future compartment sets. Code that accesses compartments should use Compartments.S.value, Compartments.T.value, and similar labels rather than hard-coded indices.