HydroModPy
A Python toolbox for deploying catchment-scale shallow groundwater models.
HydroModPy v1.0: the version cited in the paper
This
v1.0branch is the version described in the technical note submitted to Hydrology and Earth System Sciences (EGUsphere preprint, 2026). It is the reference cited by the paper and is kept up to date with fixes, so the paper link always points to a working v1.0.HydroModPy v2 is the actively developed version on the
mainbranch, with new features and a redesigned interface.
Link Paper (preprint) https://doi.org/10.5194/egusphere-2026-868 v1.0 documentation https://docs.hydromodpy.fr/v1.0/ v2 documentation (latest) https://docs.hydromodpy.fr/main/ Forum (Google Group) https://groups.google.com/g/hydromodpy
Presentation
HydroModPy was initiated in 2018 to streamline the setup and deployment of hydrogeological models in catchments across the crystalline basement regions of Normandy and Brittany (France). The platform integrates multiple open-source libraries (e.g., FloPy, WhiteboxTools), providing a unified and reproducible framework that is easily accessible to the scientific community. The development of HydroModPy is driven by two main objectives:
First, it automates the extraction and discretization of watersheds from Digital Elevation Models (DEMs) and enriches them with key hydrogeological datasets (e.g., piezometry, hydrography, geology) compiled from local, national, and global databases. This workflow ensures a standardized and reproducible approach for building and running simulation ensembles across multiple catchments using consistent input data.
Second, it facilitates the visualization, analysis, and comparison of outputs from the different modelling components integrated within the platform. Beyond research applications, HydroModPy also serves as an educational tool, enabling students and researchers to explore hydrogeological modelling workflows in a practical and reproducible environment.
Authors
Alexandre Gauvain [1,2], Ronan Abhervé [1,3,4], Bastien Boivin [1], Alexandre Coche [1], Martin Le Mesnil [1], Tristan Babey [1], Enzo Maugan [1], Théa Touzeau [1], Imene Issolah [11], Clément Roques [3], Camille Bouchez [1], Jean Marçais [5], Sarah Leray [6], Etienne Marti [6], Etienne Bresciani [7], Ronny Figueroa [3], Mathias Pélissier [3], Simon Carlier [3], Luca Guillaumot [8], Rock S. Bagagnan [1], Camille Vautier [1], Laurent Longuevergne [1], June Sallou [9], Johan Bourcier [10], Benoit Combemale [11], Philip Brunner [3], Luc Aquilina [1], Jean-Raynald de Dreuzy [1].
- [1] Geosciences Rennes -- UMR 6118, CNRS, Université de Rennes, Rennes, France
- [2] Laboratoire de Météorologie Dynamique (LMD), CNRS, Sorbonne Université, Paris, France
- [3] Centre for Hydrogeology and Geothermics (CHYN), Université de Neuchâtel, Neuchâtel, Switzerland
- [4] UMR SAS 1069, INRAE, Centre Bretagne-Normandie, Rennes, France
- [5] UR RiverLy, INRAE, Centre Lyon-Grenoble Auvergne-Rhône-Alpes, Villeurbanne, France
- [6] Pontificia Universidad Católica de Chile, Santiago, Chile
- [7] Instituto de Ciencias de la Ingeniería, Universidad de O'Higgins, Rancagua, Chile
- [8] BRGM - French Geological Survey, F-45060 Orléans, France
- [9] INF, Wageningen University & Research, Wageningen, Netherlands
- [10] ISA/LIUPPA, Université de Pau et des Pays de l'Adour, Pau, France
- [11] Inria, IRISA, CNRS, Université de Rennes, Rennes, France
Installation
The recommended way to install HydroModPy is with pip from PyPI. A conda
environment is also provided for the full scientific stack.
Prerequisites
- Python 3.11 to 3.13.
- Important: your local path should not contain white spaces, to stay compatible with the MODFLOW-MODPATH suite.
Install with pip (recommended)
Install HydroModPy from PyPI:
# without Spyder and JupyterLab
pip install "hydromodpy==1.0.*" # latest 1.0.X, never 1.1 nor 2.0
# including Spyder and JupyterLab
pip install "hydromodpy[ide]==1.0.*"
The ==1.0.* specifier always resolves to the latest 1.0.X patch and never
crosses over to the v2 series. Use ==1.0.0 only to pin one exact release.
MODFLOW, MODPATH and MT3DMS binaries ship with the package. The PyHELP binary downloads itself on the first call to the corresponding module.
Install with conda
Ready-to-use environment files live in the install/ directory (clone the
repository first, see "Get the source code" below):
env_hydromodpy.yml: full runtime stack, including Spyder.env_hydromodpy_pkg.yml: same stack, then runspip install -e ..to expose the cloned repository as an editable package.env_hydromodpy_light.yml: minimal headless stack (no IDE, no 3D viewer).requirements-docker-light.txt: pip requirements for a light Docker/server image.
# from the repository root
conda env create -f install/env_hydromodpy.yml
conda activate hydromodpy
Get the source code
Needed for the conda environments above and for development (editable) installs.
- Option 1: download the
.ziparchive directly from the GitHub project. - Option 2: clone the repository with a Git client such as GitHub Desktop.
- Option 3: use the command line:
git clone https://github.com/HydroModPy/HydroModPy.git
cd HydroModPy
git checkout v1.0
For development (editable) mode from the clone:
pip install -e .
Launch HydroModPy
HydroModPy v1.0 was primarily developed for use with Spyder, so we recommend launching it from this IDE:
- Activate the environment:
conda activate hydromodpy
- Open Spyder or Jupyter:
spyder
# or
jupyter notebook
- Import HydroModPy in Python:
import hydromodpy
from hydromodpy import Watershed
# Check version
print(hydromodpy.__version__)
Examples
Run the example scripts in examples/ in this order:
00_quick_test_of_wide_hydromodpy_capabilities
01_simplified_example_presented_in_the_paper
02_basic_features_and_overview_of_possibilities
03_hydrographic_network_in_steady_state
04_streamflow_intermittence_in_transient
05_piezometry_in_a_heterogeneous_coastal_aquifer
06_particle_tracking_and_residence_times
07_analytical_solution_for_streamflow_recession
08_exponential_distribution_of_residence_times
09_transport_model_for_an_agricultural_catchment
10_coupling_with_land_surface_model_pyhelp
11_run_from_scratch_without_plots
The same examples are available as notebooks in the documentation.
Documentation
- v1.0 documentation: https://docs.hydromodpy.fr/v1.0/
- v2 documentation (latest development): https://docs.hydromodpy.fr/main/
The v1.0 documentation is built and published automatically to
https://docs.hydromodpy.fr/v1.0/ on every update of the v1.0 branch.
Publications
Papers published using HydroModPy:
Bagagnan, R. S., Abhervé, R., Laverman, A. M., & Vautier, C. (2026). Groundwater controls on legacy antibiotics and pesticides in an intensive agricultural headwater catchment. Journal of Hydrology, 66. https://doi.org/10.1016/j.jhydrol.2026.135118
Abhervé, R., Roques, C., de Dreuzy, J.-R., Van Der Veen, T., Dumaine, L., Chatton, E., Brunner, P., Aquilina, L., & Servière, L. (2025). Projected climate change impacts on groundwater-surface water connectivity in a compartmentalized mountain headwater bedrock aquifer. Water Resources Research, 61(10). https://doi.org/10.1029/2025WR040083
Floriancic, M. G., Abhervé, R., Bouchez, C., Martinez, J. J., & Roques, C. (2024). Evidence of Groundwater Seepage and Mixing at the Vicinity of a Knickpoint in a Mountain Stream. Geophysical Research Letters, 51. https://doi.org/10.1029/2024GL111325
Le Mesnil, M., Gauvain, A., Gresselin, F., Aquilina, L., & de Dreuzy, J.-R. (2024). Characterizing coastal aquifer heterogeneity from a single piezometer head chronicle. Journal of Hydrology, 642. https://doi.org/10.1016/j.jhydrol.2024.131859
Abhervé, R., Roques, C., De Dreuzy, J.-R., Datry, T., Brunner, P., Longuevergne, L., & Aquilina, L. (2024). Improving calibration of groundwater flow models using headwater streamflow intermittence. Hydrological Processes, 38(6). https://doi.org/10.1002/hyp.15167
Abhervé, R., Roques, C., Gauvain, A., Longuevergne, L., Louaisil, S., Aquilina, L., & de Dreuzy, J.-R. (2023). Calibration of groundwater seepage against the spatial distribution of the stream network to assess catchment-scale hydraulic properties. Hydrology and Earth System Sciences, 27(17), 3221-3239. https://doi.org/10.5194/hess-27-3221-2023
How to cite
If HydroModPy supports your work, please cite the technical note:
Gauvain, A., Abhervé, R., Boivin, B., Coche, A., Le Mesnil, M., Babey, T., Maugan, E., Touzeau, T., Issolah, I., Roques, C., Bouchez, C., Marçais, J., Leray, S., Marti, E., Bresciani, E., Figueroa, R., Pélissier, M., Carlier, S., Guillaumot, L., Bagagnan, R. S., Vautier, C., Longuevergne, L., Sallou, J., Bourcier, J., Combemale, B., Brunner, P., Aquilina, L., and de Dreuzy, J.-R. (2026). Technical note: HydroModPy (V1.0.0) - a Python toolbox for deploying catchment-scale shallow groundwater models. EGUsphere [preprint]. https://doi.org/10.5194/egusphere-2026-868
License
HydroModPy is released under the Eclipse Public License v2.0 (EPL-2.0). See LICENSE.
Contact
For any question regarding HydroModPy, please contact:
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hydromodpy-1.0.0.tar.gz.
File metadata
- Download URL: hydromodpy-1.0.0.tar.gz
- Upload date:
- Size: 26.7 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c6de21d2aad681450c95d1001b764d4d8e62065050d3f70604c8aefed1ba4d44
|
|
| MD5 |
d5743307672a72b352b386a921f2e859
|
|
| BLAKE2b-256 |
50b9e78cd9950db3c6d194c8280caa7e8dd81fd994f7d08795106d4928644f70
|
Provenance
The following attestation bundles were made for hydromodpy-1.0.0.tar.gz:
Publisher:
publish.yml on HydroModPy/HydroModPy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
hydromodpy-1.0.0.tar.gz -
Subject digest:
c6de21d2aad681450c95d1001b764d4d8e62065050d3f70604c8aefed1ba4d44 - Sigstore transparency entry: 2409525328
- Sigstore integration time:
-
Permalink:
HydroModPy/HydroModPy@29aa362b8b773daa8aadedbe8bfc18921f90da4f -
Branch / Tag:
refs/heads/v1.0 - Owner: https://github.com/HydroModPy
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@29aa362b8b773daa8aadedbe8bfc18921f90da4f -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file hydromodpy-1.0.0-py3-none-any.whl.
File metadata
- Download URL: hydromodpy-1.0.0-py3-none-any.whl
- Upload date:
- Size: 26.8 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
55b2899d4d046c5d68b926a9ab0cd2532d4ca766db404f57f186e7816928fb8f
|
|
| MD5 |
8312c4320288e8c1619adb208648f5ec
|
|
| BLAKE2b-256 |
6a1007d47bd37b5fc0038628a55024d48be0ea4b41136db3bcb25ba9ad48189b
|
Provenance
The following attestation bundles were made for hydromodpy-1.0.0-py3-none-any.whl:
Publisher:
publish.yml on HydroModPy/HydroModPy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
hydromodpy-1.0.0-py3-none-any.whl -
Subject digest:
55b2899d4d046c5d68b926a9ab0cd2532d4ca766db404f57f186e7816928fb8f - Sigstore transparency entry: 2409525480
- Sigstore integration time:
-
Permalink:
HydroModPy/HydroModPy@29aa362b8b773daa8aadedbe8bfc18921f90da4f -
Branch / Tag:
refs/heads/v1.0 - Owner: https://github.com/HydroModPy
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@29aa362b8b773daa8aadedbe8bfc18921f90da4f -
Trigger Event:
workflow_dispatch
-
Statement type: