Awesome
Open Source Python Packages in Hydrology
My attempt to list interesting open source python projects that can be used in the field of Hydrology. In a 2024 update, I automated various tasks to maintain the quality of this list, and added more information about the packages that can serve as quality indicators. The description now lists when the last update on Pypi/Conda was, to highlight whether a package is probably active (🟢) or inactive (🔴). Also information about the FAIR repository, description paper, and Continuous Integration testing (CI) is included. All this in the hope that more and more packages develop according to common research software developement best practices. Suggestions as issues or pull requests are welcome!
Raoul A. Collenteur, Eawag.
Categories
- Catchment Hydrology
- Data Collection
- Evaluation
- Geospatial
- Groundwater
- Meteorological tools
- Miscellaneous
- Optimization and Uncertainty
- Statistics
- Unsaturated Zone
- Legacy Packages
Catchment Hydrology
Name | Description | PyPI Conda | Docs | CI | Paper |
---|---|---|---|---|---|
CMF | Catchment Modelling Framework, a hydrologic modelling toolbox. (Version: 2.0.0, Last Update: 🟢 24-01-19) | ||||
HydPy | A framework for the development and application of hydrological models based on Python. (Version: 6.1.1, Last Update: 🟢 24-09-23) | 🟢 | |||
NeuralHydrology | Python library to train neural networks with a strong focus on hydrological applications. (Version: 1.11.0, Last Update: 🟢 24-08-02) | 🟢 | |||
PyTOPKAPI | PyTOPKAPI is a BSD licensed Python library implementing the TOPKAPI Hydrological model (Liu and Todini, 2002). | ||||
SMARTPy | Python implementation of the rainfall-runoff model SMART (Version: 0.2.2, Last Update: 🔴 22-02-14) | ||||
SUMMA | A hydrologic modeling framework that can be used for the systematic analysis of alternative model conceptualizations with respect to flux parameterizations, spatial configurations, and numerical solution techniques. (Version: 1.2.0, Last Update: 🔴 19-01-16) | ||||
SuperflexPy | SuperflexPy: A new open source framework for building conceptual hydrological models (Version: 1.3.2, Last Update: 🟢 23-11-25) | ||||
VIC | The Variable Infiltration Capacity (VIC) Macroscale Hydrologic Model. (Version: 0.0.1, Last Update: 🔴 16-06-18) | ||||
wrfhydropy | wrfhydrpy is a Python API for the WRF-Hydro modelling system. (Version: 0.0.21, Last Update: 🟢 24-02-16) | ||||
Xanthos | Xanthos is an open-source hydrologic model, written in Python, designed to quantify and analyze global water availability. (Version: 2.4.1, Last Update: 🔴 21-08-10) |
Groundwater
Name | Description | PyPI Conda | Docs | CI | Paper |
---|---|---|---|---|---|
Anaflow | A python-package containing analytical solutions for the groundwater flow equation (Version: 1.1.0, Last Update: 🔴 23-04-16) | 🟢 | |||
FloPy | The Python interface to MODFLOW. (Version: 3.8.2, Last Update: 🟢 24-10-03) | 🟢 | |||
GeoArchPy | Stochastic geological modeling (Version: 1.0.10, Last Update: 🟢 24-11-03) | ||||
Gravi4GW | A tool for conversion between Δg and groundwater storage changes. | ||||
imod-python | Make massive MODFLOW models. (Version: 0.17.2, Last Update: 🟢 24-09-17) | 🟢 | |||
NLmod | Python code to process, build and visualize MODFLOW models in the Netherlands. Model data is stored in a xarray Datasets and geopandas GeoDataFrames. (Version: 0.8.1, Last Update: 🟢 24-07-25) | 🟢 | |||
Pastas | Analysis of hydrological time series using time series models. (Version: 1.7.0, Last Update: 🟢 24-09-06) | 🟢 | |||
PyHELP | A Python library for the assessment of spatially distributed groundwater recharge and hydrological components with HELP. (Version: 0.4.0, Last Update: 🔴 22-06-20) | ||||
PyKasso | Simulate stochastic karst conduit networks (Version: 0.1.3, Last Update: 🔴 23-04-17) | ||||
TimML | A Multi-Layer, Analytic Element Model. (Version: 6.5.0, Last Update: 🟢 24-09-27) | 🟢 | |||
TTim | A Multi-Layer, Transient, Analytic Element Model. (Version: 0.6.7, Last Update: 🟢 24-09-27) | 🟢 | |||
WellApplication | Set of tools for groundwater level and water chemistry analysis. (Version: 0.5.6, Last Update: 🔴 18-05-30) | ||||
WellTestPy | A python-package for handling well based field campaigns. (Version: 1.2.0, Last Update: 🔴 23-04-18) | 🟢 |
Meteorological tools
Name | Description | PyPI Conda | Docs | CI | Paper |
---|---|---|---|---|---|
Evaporation | Calculation of evaporation and transpiration. (Version: 2.0.1, Last Update: 🟢 24-04-16) | ||||
Improver | IMPROVER is a library of algorithms for meteorological post-processing and verification. (Version: 1.9.0, Last Update: 🔴 No date) | 🟢 | |||
MELODIST | MELODIST is an open-source toolbox written in Python for disaggregating daily meteorological time series to hourly time steps. (Version: 0.1.6, Last Update: 🟢 24-06-07) | 🟢 | |||
MetPy | MetPy is a collection of tools in Python for reading, visualizing and performing calculations with weather data. (Version: 1.6.3, Last Update: 🟢 24-08-26) | 🟢 | |||
MetSim | MetSim is a meteorological simulator and forcing disaggregator for hydrologic modeling and climate applications. (Version: 2.4.4, Last Update: 🔴 23-11-06) | ||||
pyet | A python-package for calculating reference and potential evaporation. (Version: 1.3.1, Last Update: 🟢 24-03-15) | 🟢 | |||
pyfao56 | A Python implementation of the FAO-56 dual crop coefficient approach for crop water use estimation and irrigation scheduling. (Version: 1.3.0, Last Update: 🟢 24-03-21) | ||||
PySteps | pySTEPS is a community-driven initiative for developing and maintaining an easy to use, modular, free and open source Python framework for short-term ensemble prediction systems. (Version: 1.12.0, Last Update: 🟢 24-10-07) | 🟢 | |||
SPEI | Calculate and visualize some popular drought indices such as the SPI, SPEI and SGI. (Version: 0.5.1, Last Update: 🟢 24-09-26) |
Unsaturated Zone
Name | Description | PyPI Conda | Docs | CI | Paper |
---|---|---|---|---|---|
pedon | Python package for (unsaturated) soil properties including pedotransfer functions. (Version: 0.0.6, Last Update: 🟢 24-01-22) | ||||
Phydrus | Python implementation of the HYDRUS-1D unsaturated zone model (Version: 0.2.0, Last Update: 🔴 21-03-30) | ||||
Pytesmo | python Toolbox for the Evaluation of Soil Moisture Observations. (Version: 0.16.0, Last Update: 🔴 23-09-12) | ||||
VS2DPY | Python implementation of the VS2D unsaturated zone model. (Version: 0.3.0, Last Update: 🔴 22-12-07) |
Evaluation
Name | Description | PyPI Conda | Docs | CI | Paper |
---|---|---|---|---|---|
HydroErr | Goodness of Fit metrics for use in comparison studies, specifically in the field of hydrology. (Version: 1.24, Last Update: 🔴 19-04-23) | ||||
Hydrostats | Tools for use in comparison studies, specifically for use in the field of hydrology. (Version: 0.78, Last Update: 🔴 19-04-24) | ||||
traval | Tools for applying automatic error detection schemes to timeseries (Version: 0.5.1, Last Update: 🟢 24-09-27) | ||||
xskillscore | Metrics for verifying forecasts. (Version: 0.0.26, Last Update: 🟢 24-03-10) |
Miscellaneous
Name | Description | PyPI Conda | Docs | CI | Paper |
---|---|---|---|---|---|
ESMPY | Earth System Modeling Framework (ESMF) Python interface. (Version: 8.7.0, Last Update: 🔴 No date) | ||||
eWaterCycle | Platform to do computational hydrology using many of the above mentioned models. (Version: 2.3.1, Last Update: 🟢 24-09-17) | 🟢 | |||
htimeseries | This module provides the HTimeseries class, which is a layer on top of pandas, offering a little more functionality. (Version: 7.0.0, Last Update: 🟢 24-04-14) | ||||
Hydrobox | Hydrological preprocessing and analysis toolbox build upon pandas and numpy. (Version: 0.2.0, Last Update: 🔴 21-05-20) | ||||
Hydrofunctions | A suite of convenience functions for working with hydrology data in an interactive Python session. (Version: 0.2.4, Last Update: 🔴 23-06-14) | ||||
Hydrointerp | A Python package for interpolating hydrologic data. (Version: 1.2.13, Last Update: 🔴 22-05-11) | ||||
IRIS | A powerful, format-agnostic, and community-driven Python library for analysing and visualising Earth science data. (Version: 1.0.7, Last Update: 🔴 20-02-07) | ||||
iRONS | iRONS (interactive Reservoir Operation Notebooks and Software) is a python package that enables the simulation, forecasting and optimisation of reservoir systems. (Version: 1.0, Last Update: 🔴 22-11-12) | ||||
Landlab | The Landlab project creates an environment in which scientists can build a numerical landscape model without having to code all of the individual components. (Version: 2.9.2, Last Update: 🟢 24-10-18) | ||||
Mesas | Multiresolution Estimation of StorAge Selection functions. (Version: 1.20240418, Last Update: 🔴 No date) | ||||
pydsstools | Python library for simple HEC-DSS functions. (Version: 2.3.2, Last Update: 🟢 24-01-13) | ||||
PyHSPF | Python extensions to the Hydrological Simulation Program in Fortran (HSPF). (Version: 0.2.4, Last Update: 🔴 17-08-10) | ||||
PyMT | PyMT is an Open Source Python package that provides the necessary tools used for the coupling of models that expose the Basic Model Interface (BMI). (Version: 0.5.1, Last Update: 🔴 10-09-06) | ||||
pyopenrivercam | Surface velocity, object tracking, and river flow measurements (Version: 0.6.1, Last Update: 🟢 24-09-26) | ||||
pywatershed | A hydrologic model in Python (Version: 2.1, Last Update: 🔴 18-03-24) | 🟢 | |||
PYWR | Spatial allocation tool. (Version: 1.27.1, Last Update: 🟢 24-10-20) | ||||
river-route | Hydrologic river routing of gridded runoff depths or catchment volumes on vector stream networks (Version: 1.0.2, Last Update: 🟢 24-09-24) | ||||
Shyft | Shyft is the open-source toolbox for the energy-market domain, funded and supported by Statkraft. (Version: 20.0.0.post1, Last Update: 🟢 24-10-11) | ||||
SPHY | Spatial Processes in HYdrology (SPHY) model. (Version: 2.2.1, Last Update: 🔴 19-05-26) | ||||
Wetland | Wetland is a toolset for mapping surface water and wetland hydrological dynamics using fine-resolution aerial imagery within Google Earth Engine (GEE). (Version: 0.1.0, Last Update: 🔴 18-10-19) |
Data Collection
Name | Description | PyPI Conda | Docs | CI | Paper |
---|---|---|---|---|---|
Dataretrieval | Dataretrieval is a Python package for obtaining USGS or EPA water quality data, streamflow data, and metadata directly from web services. (Version: 1.0.11, Last Update: 🟢 24-10-25) | ||||
Ecohydrolib | Libraries and command-line scripts for performing ecohydrology data preparation workflows. (Version: 1.29, Last Update: 🔴 15-07-02) | ||||
HKVFEWSPY | Connection to the Delft FEWS servers. (Version: 1.0.2, Last Update: 🔴 23-02-21) | ||||
HydroPandas | Module for loading time series data into custom DataFrames (Version: 0.12.5, Last Update: 🟢 24-10-09) | ||||
Openradar | Library for processing a set of dutch, german and belgian precipitation radars into calibrated composites. (Version: 1.0.1, Last Update: 🔴 19-10-31) | ||||
PyHIS | PyHIS is a python library for querying CUAHSI*-HIS** web services. (Version: 0.1.1-alpha, Last Update: 🔴 11-11-15) | ||||
Ulmo | Clean, simple and fast access to public hydrology and climatology data. (Version: 0.8.8, Last Update: 🔴 21-09-02) | ||||
Wetterdienst | Python Toolset For Accessing Weather Data From German Weather Service. (Version: 0.97.0, Last Update: 🟢 24-10-06) |
Geospatial
Name | Description | PyPI Conda | Docs | CI | Paper |
---|---|---|---|---|---|
HPGL | High Performance Geostatistics Library. | ||||
Lidar | Terrain and hydrological analysis based on LiDAR-derived digital elevation models (DEM). (Version: 0.8.3, Last Update: 🟢 24-06-06) | ||||
PcRaster | Is a collection of software targeted at the development and deployment of spatio-temporal environmental models. (Version: 4.4.1, Last Update: 🔴 No date) | ||||
PyGeoprocessing | A Python/Cython based library that provides a set of commonly used raster, vector, and hydrological operations for GIS processing. (Version: 2.4.6, Last Update: 🟢 24-10-15) | ||||
Pysheds | Simple and fast watershed delineation in python. (Version: 0.4, Last Update: 🟢 24-05-09) |
Optimization and Uncertainty
Name | Description | PyPI Conda | Docs | CI | Paper |
---|---|---|---|---|---|
Pyemu | Python modules for model-independent uncertainty analyses, data-worth analyses, and interfacing with PEST(++). (Version: 1.3.7, Last Update: 🟢 24-08-14) | ||||
SPOTpy | A Statistical Parameter Optimization Tool for Python. (Version: 1.6.2, Last Update: 🔴 23-02-28) |
Statistics
Name | Description | PyPI Conda | Docs | CI | Paper |
---|---|---|---|---|---|
Climate-indices | Climate indices for drought monitoring, community reference implementations in Python. (Version: 2.0.1, Last Update: 🟢 24-09-19) | ||||
EFlowCalc | Calculator of Streamflow Characteristics. (Version: 0.1.0, Last Update: 🔴 21-04-26) | ||||
HydroLM | The HydroLM package contains a class and functions for automating linear regressions OLS for hydrologists. (Version: 1.0.7, Last Update: 🔴 19-01-15) | ||||
PySDI | Pysdi is a set of open source scripts that compute non-parametric standardized drought indices (SDI) using raster data sets as input data. (Version: 0.2.6.3.1, Last Update: 🔴 20-02-25) |
Legacy Packages
These packages are not maintained anymore, or might not meet a minimum set of requirements, but might still be useful for some users.
Name | Description | PyPI Conda | Docs | CI | Paper |
---|---|---|---|---|---|
Catchmod | CATCHMOD is widely used rainfall runoff model in the United Kingdom. It was introduced by Wilby (1994). (Version: 1.1.0, Last Update: 🔴 19-01-08) | ||||
DRYP | Dryland Water Partition model. | ||||
EXP-HYDRO | EXP-HYDRO is a catchment scale hydrological model that operates at a daily time-step. It takes as inputs the daily values of precipitation, air temperature, and potential evapotranspiration, and simulates daily streamflow at the catchment outlet. | ||||
HydroAnalysis | Python package to calculate indices and metrics useful in the everyday job of a hydrologist. (Version: 1.0.0, Last Update: 🔴 21-11-20) | ||||
Hydropy | Analysis of hydrological oriented time series. (Version: 0.1.2, Last Update: 🔴 17-02-03) | ||||
LHMP | Lumped Hydrological Models Playground. | ||||
LuKars | The LuKARS model is a lumped karst hydrological model to perform studies in karstic environments. | ||||
mhmpy | A Python-API for the mesoscale Hydrological Model. (Version: 0.0.0, Last Update: 🔴 19-08-26) | ||||
PyEto | PyETo is a Python library for calculating reference crop evapotranspiration (ETo), sometimes referred to as potential evapotranspiration (PET). The library provides numerous functions for estimating missing meteorological data. | ||||
PyGLUE | Generalised Likelihood Uncertainty Estimation (GLUE) Framework. (Version: 0.0.4, Last Update: 🔴 12-01-06) | ||||
PyStream | Python implementation of the STREAM hydrological rainfall-runoff model. (Version: 0.1, Last Update: 🔴 15-06-18) | ||||
RRMPG | Rainfall-Runoff modelling playground. | ||||
wflow | wflow consists of a set of Python programs that can be run on the command line and perform hydrological simulations. The models are based on the PCRaster Python framework (Version: 2020.1.2, Last Update: 🔴 20-11-26) | ||||
xsboringen | A python library for processing and plotting borehole and CPT data, developed for open data formats in the Netherlands. |
Background Info
UPDATE: The Pypa package authority has now added "Hydrology" as a classifier so we can start collecting python packages used by the hydrological community! If you are maintaining a python package, please add Topic :: Scientific/Engineering :: Hydrology
to your setup.py so people can find your package.