Skip to main content

HOLMES

ci holmes ci holmes-rs holmes-hydro pypi version holmes-rs pypi version Supported Python Version Documentation

HOLMES (HydrOLogical Modeling Educational Software) is a software developed to teach operational hydrology. It is developed at Université Laval, Québec, Canada.

📖 Documentation · 📦 PyPI

The dashboard guides students through a modeling pipeline — stations → weather → model → calibration → simulation → projection — starting from an interactive map of hydrometric stations. The backend is Starlette, the frontend is vanilla JavaScript with an Elm architecture (d3 and Leaflet), and communication is mostly over WebSocket. All numerical computation runs in holmes-rs, a Rust extension.

Usage

Installation

pip install holmes-hydro

Running HOLMES

After installation, start the dashboard with:

holmes run

The web interface opens in your browser by itself, at http://127.0.0.1:8000 (debug mode does not open it).

Other commands:

holmes experiment   # run batch calibration experiments
holmes download     # maintainers: build every data product from its true source
holmes package      # maintainers: zip the built products into data-YYYY-MM-DD.zip

Data

The server never builds data. Starting it with holmes run compares the newest data-YYYY-MM-DD.zip asset on the repo's rolling data release against its local copy, and downloads and extracts the archive if it is newer — the terminal shows the progress, old data keeps being served during the swap, and no credentials are ever needed to run the app. Data lives in the per-user data directory (~/.local/share/holmes on Linux, ~/Library/Application Support/holmes on macOS, %LOCALAPPDATA%\holmes\holmes on Windows), overridable with HOLMES_DATA_DIR; map tiles are the one exception, still fetched lazily from CartoDB.

Rebuilding the archive is the maintainer path. holmes download builds every product incrementally from its true source: daily re-runs only fetch the current year (plus the previous year in January) for ERA5 and the ministry grid, always refresh the small streamflow files, recompute the cheap derived products, and skip the static ones (station data, projections). It needs the download extra (pip install 'holmes-hydro[download]', which carries the heavy geo dependencies) and, on a cold ERA5 cell cache, CDS credentials in ~/.cdsapirc or the CDSAPI_URL/CDSAPI_KEY environment variables. holmes package then zips the built products into the dated archive. A nightly GitHub Actions workflow (.github/workflows/data.yml, 07:00 UTC) runs both and replaces the dated zip on the data release; it is toggled with the DATA_REFRESH_ENABLED repository variable (Settings → Actions → Variables) and can always be run manually via workflow dispatch.

Configuration

Customize the server by creating a .env file:

DEBUG=True                  # Enable debug mode (default: False)
RELOAD=True                 # Enable auto-reload on code changes (default: False)
HOST=127.0.0.1              # Server host (default: 127.0.0.1)
PORT=8000                   # Server port (default: 8000)
HOLMES_DATA_DIR=data        # Data directory (default: the per-user data
                            # directory, e.g. ~/.local/share/holmes on Linux)
HOLMES_SKIP_DATA_SYNC=True  # Skip the startup data sync (default: False)

A repo checkout should set HOLMES_DATA_DIR=data to keep using the repo-local data/ directory.

Development

Setup

  1. Install uv:

    curl -LsSf https://astral.sh/uv/install.sh | sh
    
  2. Clone and install in development mode:

    git clone https://github.com/antoinelb/holmes.git
    cd holmes
    uv sync
    

Running

uv run holmes run

Or activate the virtual environment and run directly:

source .venv/bin/activate
holmes run

Code Quality

make static-analysis

Tests

make test       # unit + integration (100% coverage) and the Rust suites
make test-e2e   # Playwright end-to-end tests

References

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

holmes_hydro-4.5.0.tar.gz (37.1 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

holmes_hydro-4.5.0-py3-none-any.whl (330.3 kB view details)

Uploaded Python 3

File details

Details for the file holmes_hydro-4.5.0.tar.gz.

File metadata

  • Download URL: holmes_hydro-4.5.0.tar.gz
  • Upload date:
  • Size: 37.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for holmes_hydro-4.5.0.tar.gz
Algorithm Hash digest
SHA256 ffe59848b88408bb9c1a9894fafbb184f6575c4f5c00d15e8ec98198448e428c
MD5 00509a584acc9daba5edf0949d777731
BLAKE2b-256 6bb21ba3e25b5611d5390fffdfddf5c6cd8adab5f8a1e19d75e5c1ae3183b5af

See more details on using hashes here.

Provenance

The following attestation bundles were made for holmes_hydro-4.5.0.tar.gz:

Publisher: ci-holmes.yml on antoinelb/holmes

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file holmes_hydro-4.5.0-py3-none-any.whl.

File metadata

  • Download URL: holmes_hydro-4.5.0-py3-none-any.whl
  • Upload date:
  • Size: 330.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for holmes_hydro-4.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 adb3c9d3ba5a395678a70796ca0f87354e32684ec44bc035e9b4103746c13904
MD5 04d9e95add41b27973aaeb6a01cd0eaa
BLAKE2b-256 ec48abd4ca0d3babe81385c2b96d36019271263f2a455674762e674491a13b26

See more details on using hashes here.

Provenance

The following attestation bundles were made for holmes_hydro-4.5.0-py3-none-any.whl:

Publisher: ci-holmes.yml on antoinelb/holmes

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

4.5.1

2 files

This release

4.5.0 This release

2 files

4.4.0

2 files

4.3.0

2 files

4.2.1

2 files

4.1.0

2 files

4.0.0

2 files

3.5.0

2 files

3.4.4

2 files

3.4.3

2 files

3.4.2

2 files

3.4.1

2 files

3.4.0

2 files

3.3.8

2 files

3.3.7

2 files

3.3.6

2 files

3.3.5

2 files

3.3.4

2 files

3.3.3

2 files

3.3.2

2 files

3.3.1

2 files

3.3.0

2 files

3.2.5

2 files

3.2.2

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page