My attempt to list interesting open source python projects that can be used in the field of Hydrology. Suggestions as issues or pull requests are welcome!
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.
Raoul A. Collenteur, Eawag.
Project Name | Description (Longer Header to Widen Column) | PyPI Conda | Docs | CI | Paper |
---|---|---|---|---|---|
CMF | Catchment Modelling Framework, a hydrologic modelling toolbox. (Version: 2.0.0, Last Update: π’ 24-01-19) | ||||
VIC | The Variable Infiltration Capacity (VIC) Macroscale Hydrologic Model. (Version: 0.0.1, Last Update: π΄ 16-06-18) | ||||
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) | ||||
wrfhydropy | wrfhydrpy is a Python API for the WRF-Hydro modelling system. (Version: 0.0.21, Last Update: π’ 24-02-16) | ||||
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. | ||||
RRMPG | Rainfall-Runoff modelling playground. | ||||
LHMP | Lumped Hydrological Models Playground. | ||||
SMARTPy | Python implementation of the rainfall-runoff model SMART (Version: 0.2.2, Last Update: π΄ 22-02-14) | ||||
PyStream | Python implementation of the STREAM hydrological rainfall-runoff model. (Version: 0.1, Last Update: π΄ 15-06-18) | ||||
HydPy | A framework for the development and application of hydrological models based on Python. (Version: 6.1.1, Last Update: π’ 24-09-23) | ||||
Catchmod | CATCHMOD is widely used rainfall runoff model in the United Kingdom. It was introduced by Wilby (1994). | ||||
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) | ||||
PyTOPKAPI | PyTOPKAPI is a BSD licensed Python library implementing the TOPKAPI Hydrological model (Liu and Todini, 2002). | ||||
mhmpy | A Python-API for the mesoscale Hydrological Model. (Version: 0.0.0, Last Update: π΄ 19-08-26) | ||||
SuperflexPy | SuperflexPy: A new open source framework for building conceptual hydrological models (Version: 1.3.2, Last Update: π’ 23-11-25) | ||||
NeuralHydrology | Python library to train neural networks with a strong focus on hydrological applications. (Version: 1.11.0, Last Update: π’ 24-08-02) | ||||
DRYP | Dryland Water Partition model. | ||||
LuKars | The LuKARS model is a lumped karst hydrological model to perform studies in karstic environments. | ||||
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) |
Project Name | Description (Longer Header to Widen Column) | PyPI Conda | Docs | CI | Paper |
---|---|---|---|---|---|
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) | ||||
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. | ||||
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) | ||||
Improver | IMPROVER is a library of algorithms for meteorological post-processing and verification. (Version: 1.9.0, Last Update: ) | ||||
MetSim | MetSim is a meteorological simulator and forcing disaggregator for hydrologic modeling and climate applications. (Version: 2.4.4, Last Update: π’ 23-11-06) | ||||
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) | ||||
PyCat | Climate Analysis Tool written in python (Version: 0.1.1, Last Update: π΄ 15-04-13) | ||||
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.11.0, Last Update: π’ 24-08-27) | ||||
Evaporation | Calculation of evaporation and transpiration. (Version: 2.0.1, Last Update: π’ 24-04-16) | ||||
rainymotion | Python library for radar-based precipitation nowcasting based on optical flow techniques. | ||||
pyet | A python-package for calculating reference and potential evaporation. (Version: 1.3.1, Last Update: π’ 24-03-15) | ||||
SPEI | A simple Python package to calculate and visualize some popular drought indices such as the SPI, SPEI and SGI. (Version: 0.5.0, Last Update: π’ 24-09-18) |
Project Name | Description (Longer Header to Widen Column) | PyPI Conda | Docs | CI | Paper |
---|---|---|---|---|---|
Pytesmo | python Toolbox for the Evaluation of Soil Moisture Observations. (Version: 0.16.0, Last Update: π΄ 23-09-12) | ||||
Phydrus | Python implementation of the HYDRUS-1D unsaturated zone model (Version: 0.2.0, Last Update: π΄ 21-03-30) | ||||
VS2DPY | Python implementation of the VS2D unsaturated zone model. (Version: 0.3.0, Last Update: π΄ 22-12-07) | ||||
pedon | Python package for (unsaturated) soil properties including pedotransfer functions. (Version: 0.0.6, Last Update: π’ 24-01-22) |
Project Name | Description (Longer Header to Widen Column) | PyPI Conda | Docs | CI | Paper |
---|---|---|---|---|---|
FloPy | The Python interface to MODFLOW. (Version: 3.8.1, Last Update: π’ 24-09-05) | ||||
imod-python | Make massive MODFLOW models. | ||||
Idfpy | A simple module for reading and writing iMOD IDF files. IDF is a simple binary format used by the iMOD groundwater modelling software. | ||||
WellApplication | Set of tools for groundwater level and water chemistry analysis. (Version: 0.5.6, Last Update: π΄ 18-05-30) | ||||
TIMML | A Multi-Layer, Analytic Element Model. (Version: 6.4.1, Last Update: π’ 24-02-13) | ||||
TTim | A Multi-Layer, Transient, Analytic Element Model. (Version: 0.6.6, Last Update: π’ 24-02-14) | ||||
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) | ||||
Anaflow | A python-package containing analytical solutions for the groundwater flow equation (Version: 1.1.0, Last Update: π΄ 23-04-16) | ||||
WellTestPy | A python-package for handling well based field campaigns. (Version: 1.2.0, Last Update: π΄ 23-04-18) | ||||
HydroGeoSines | Signal In the Noise Exploration Software for Hydrogeological Datasets. | ||||
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) |
Project Name | Description (Longer Header to Widen Column) | PyPI Conda | Docs | CI | Paper |
---|---|---|---|---|---|
Hydropy | Analysis of hydrological oriented time series. (Version: 0.1.2, Last Update: π΄ 17-02-03) | ||||
Pastas | Analysis of hydrological time series using time series models. (Version: 1.7.0, Last Update: π’ 24-09-06) | π’ | |||
Hydrostats | Tools for use in comparison studies, specifically for use in the field of hydrology. (Version: 0.78, Last Update: π΄ 19-04-24) | ||||
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) | ||||
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) | ||||
HydroPandas | Module for loading time series data into custom DataFrames (Version: 0.12.2, Last Update: π’ 24-07-12) | ||||
traval | Tools for applying automatic error detection schemes to timeseries (Version: 0.5.0, Last Update: π’ 24-08-15) |
Project Name | Description (Longer Header to Widen Column) | PyPI Conda | Docs | CI | Paper |
---|---|---|---|---|---|
PcRaster | Is a collection of software targeted at the development and deployment of spatio-temporal environmental models. (Version: 4.4.1, Last Update: ) | ||||
PyGeoprocessing | A Python/Cython based library that provides a set of commonly used raster, vector, and hydrological operations for GIS processing. (Version: 2.4.4, Last Update: π’ 24-05-21) | ||||
Pysheds | Simple and fast watershed delineation in python. (Version: 0.4, Last Update: π’ 24-05-09) | ||||
Lidar | Terrain and hydrological analysis based on LiDAR-derived digital elevation models (DEM). (Version: 0.8.3, Last Update: π’ 24-06-06) |
Project Name | Description (Longer Header to Widen Column) | PyPI Conda | Docs | CI | Paper |
---|---|---|---|---|---|
LMFIT | Non-Linear Least Squares Minimization, with flexible Parameter settings, based on scipy.optimize.leastsq, and with many additional classes and methods for curve fitting. (Version: 1.3.2, Last Update: π’ 24-07-19) | ||||
SPOTpy | A Statistical Parameter Optimization Tool for Python. (Version: 1.6.2, Last Update: π΄ 23-02-28) | ||||
PyGLUE | Generalised Likelihood Uncertainty Estimation (GLUE) Framework. (Version: 0.0.4, Last Update: π΄ 12-01-06) | ||||
Pyemu | Python modules for model-independent uncertainty analyses, data-worth analyses, and interfacing with PEST(++). (Version: 1.3.7, Last Update: π’ 24-08-14) | ||||
HPGL | High Performance Geostatistics Library. | ||||
HydroErr | Goodness of Fit metrics for use in comparison studies, specifically in the field of hydrology. (Version: 1.24, Last Update: π΄ 19-04-23) | ||||
Climate-indices | Climate indices for drought monitoring, community reference implementations in Python. (Version: 2.0.1, Last Update: π’ 24-09-19) | ||||
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) | ||||
xskillscore | Metrics for verifying forecasts. (Version: 0.0.26, Last Update: π’ 24-03-10) |
Project Name | Description (Longer Header to Widen Column) | PyPI Conda | Docs | CI | Paper |
---|---|---|---|---|---|
HKVFEWSPY | Connection to the Delft FEWS servers. (Version: 1.0.2, Last Update: π΄ 23-02-21) | ||||
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) | ||||
Ecohydrolib | Libraries and command-line scripts for performing ecohydrology data preparation workflows. (Version: 1.29, Last Update: π΄ 15-07-02) | ||||
Ulmo | Clean, simple and fast access to public hydrology and climatology data. (Version: 0.8.8, Last Update: π΄ 21-09-02) | ||||
PyHIS | PyHIS is a python library for querying CUAHSI*-HIS** web services. (Version: 0.1.1-alpha, Last Update: π΄ 11-11-15) | ||||
Wetterdienst | Python Toolset For Accessing Weather Data From German Weather Service. (Version: 0.95.1, Last Update: π’ 24-09-04) | ||||
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.10, Last Update: π’ 24-08-05) |
Project Name | Description (Longer Header to Widen Column) | PyPI Conda | Docs | CI | Paper |
---|---|---|---|---|---|
ESMPY | Earth System Modeling Framework (ESMF) Python interface. (Version: 8.6.1, Last Update: ) | ||||
PyHSPF | Python extensions to the Hydrological Simulation Program in Fortran (HSPF). (Version: 0.2.4, Last Update: π΄ 17-08-10) | ||||
PYWR | Spatial allocation tool. (Version: 1.26.0, Last Update: π’ 24-06-25) | ||||
SPHY | Spatial Processes in HYdrology (SPHY) model. (Version: 2.2.1, Last Update: π΄ 19-05-26) | ||||
xsboringen | (In Dutch) A python library for processing and plotting borehole and CPT data, developed for open data formats in the Netherlands. | ||||
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) | ||||
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.8.0, Last Update: π’ 24-05-13) | ||||
EFlowCalc | Calculator of Streamflow Characteristics. (Version: 0.1.0, Last Update: π΄ 21-04-26) | ||||
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) | ||||
Hydrointerp | A Python package for interpolating hydrologic data. (Version: 1.2.13, Last Update: π΄ 22-05-11) | ||||
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) | ||||
Shyft | Shyft is the open-source toolbox for the energy-market domain, funded and supported by Statkraft. (Version: 18.0.0.post1, Last Update: π’ 24-09-03) | ||||
Hydroshare | HydroShare is a collaborative website for better access to data and models in the hydrologic sciences. | ||||
Hydrobox | Hydrological preprocessing and analysis toolbox build upon pandas and numpy. (Version: 0.2.0, Last Update: π΄ 21-05-20) | ||||
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) | ||||
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) | ||||
Mesas | Multiresolution Estimation of StorAge Selection functions. (Version: 1.20240418, Last Update: ) | ||||
pydsstools | Python library for simple HEC-DSS functions. (Version: 2.3.2, Last Update: π’ 24-01-13) | ||||
eWaterCycle | Platform to do computational hydrology using many of the above mentioned models. (Version: 2.3.1, Last Update: π’ 24-09-17) |