HOLMES¶
HydrOLogical Modeling Educational Software
HOLMES is a web-based hydrological modeling tool designed for teaching operational hydrology. Developed at Université Laval, Québec, Canada.
Features¶
- Guided Modeling Pipeline: stations → weather → model → calibration → simulation → projection, with an interactive station map — every step documented in the user guide
- Twenty Hydrological Models: from GR4J to SACRAMENTO, all documented in the concepts section
- Snow Modeling: CemaNeige degree-day model with multi-elevation band support
- Automatic Calibration: SCE-UA and DDS optimization algorithms
- Climate Projections: ClimEx and ESPO-G6-R2 scenarios fetched per station
- High Performance: Rust-powered computational engine with Python integration
Quick Start¶
Install HOLMES (Python ≥ 3.12):
Start the dashboard:
Open your browser at http://127.0.0.1:8000.
On startup the server downloads the prebuilt dataset from the repository's data release, so no credentials are needed.
The CLI also provides holmes experiment to run batch calibration experiments; holmes download and holmes package are maintainer commands to rebuild and package the datasets.
Architecture Overview¶
HOLMES uses a three-tier architecture:
| Layer | Technology | Purpose |
|---|---|---|
| Frontend | Vanilla JavaScript, D3.js, Leaflet | Interactive web interface |
| Backend | Python, Starlette, Uvicorn | API routing, data loading, orchestration |
| Compute | Rust (holmes-rs), PyO3 | High-performance numerical models |
Communication between frontend and backend uses WebSockets for real-time updates during calibration.
License¶
HOLMES is released under the MIT License.