Local Streamlit dashboard for exploring MOSAIC processed data — cholera transmission drivers across Sub-Saharan Africa
# Mosaic Data Dashboard
A local Streamlit dashboard for the MOSAIC team to explore the processed datasets
backing the MOSAIC project — an agent-based metapopulation simulation of cholera
transmission across Sub-Saharan Africa. The dashboard reads directly from a local
clone of MOSAIC-data
and lets a modeler pick a country and see every relevant data layer (WHO cholera
cases, ENSO, WASH, demographics, OAG flight mobility, immunity, vaccine
effectiveness, symptomatic fraction, similarity matrix) side by side, with
time-series overlays that surface relationships between environmental/structural
drivers and outbreak outcomes.
## Quickstart
Requires uv and Python >=3.11. Clone the repo, then:
```bash
uv sync && uv run streamlit run src/mosaic_dashboard/app.py
```
The first command installs the project into a local `.venv/` and pins the
dependency graph via `uv.lock`. The second launches Streamlit on
localhost. No external network calls happen in the hot path — once
`uv sync` has finished, the dashboard is fully offline.
## Configuring the data path
The dashboard reads CSV/shapefile inputs from a local checkout of
`MOSAIC-data/processed/`. It resolves the data root in this order (first match
wins):
1. **Sidebar override** — Each Streamlit session exposes a text input in the
sidebar where you can paste an alternate path. This applies for the current
browser session only and is NOT persisted to disk.
2. **`config.toml` at the repo root** — Set `[data] root = "..."` here for a
per-checkout default. Committed to git, so a teammate cloning the repo
inherits whatever you check in.
3. **Default** — `~/MOSAIC/MOSAIC-data/processed/` if neither of the above is
set. Matches the documented teammate convention.
**WSL2 / non-standard layouts:** If your `MOSAIC-data/` lives somewhere other
than `~/MOSAIC/MOSAIC-data/`, edit the `root` value in `config.toml`. Both
absolute paths and `~`-prefixed paths are accepted; `~` is expanded against the
current user's home dir …