/Python-Hydrology-Tools

:droplet: This repository holds a list of open source Python packages interesting to Hydrologists

Open Source Python Packages in Hydrology

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.

R.A. Collenteur, University of Graz.

Hydrological Models

Project Name Description
CMF Catchment Modelling Framework, a hydrologic modelling toolbox.
TopoFlow Spatial hydrologic model (D8-based, fully BMI-compliant).
VIC The Variable Infiltration Capacity (VIC) Macroscale Hydrologic Model.
Xanthos Xanthos is an open-source hydrologic model, written in Python, designed to quantify and analyze global water availability.
WRF-Hydro wrfhydrpy is a Python API for the WRF-Hydro modelling system.
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
PyStream Python implementation of the STREAM hydrological rainfall-runoff model.
HydrPy A framework for the development and application of hydrological models based on Python.
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
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.
SuperflexPy SuperflexPy: A new open source framework for building conceptual hydrological models
NeuralHydrology Python library to train neural networks with a strong focus on hydrological applications.

Meteorological tools

Project Name Description
MetPy MetPy is a collection of tools in Python for reading, visualizing and performing calculations with weather data.
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.
Improver IMPROVER is a library of algorithms for meteorological post-processing and verification.
MetSim MetSim is a meteorological simulator and forcing disaggregator for hydrologic modeling and climate applications.
MELODIST MELODIST is an open-source toolbox written in Python for disaggregating daily meteorological time series to hourly time steps.
PyCat Climate Analysis Tool written in python
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.
Evaporation Calculation of evaporation and transpiration.
rainymotion Python library for radar-based precipitation nowcasting based on optical flow techniques.
pyet A python-package for calculating reference and potential evaporation.

Unsaturated Zone

Project Name Description
Pytesmo python Toolbox for the Evaluation of Soil Moisture Observations.
Phydrus Python implementation of the HYDRUS-1D unsaturated zone model

Groundwater

Project Name Description
Flopy The Python interface to MODFLOW.
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.
TIMML A Multi-Layer, Analytic Element Model.
TTim A Multi-Layer, Transient, Analytic Element Model.
PyHELP A Python library for the assessment of spatially distributed groundwater recharge and hydrological components with HELP.
PyRecharge Spatially distributed groundwater recharge and depletion modeling framework in Python
Anaflow A python-package containing analytical solutions for the groundwater flow equation
WellTestPy A python-package for handling well based field campaigns.
HydroGeoSines Signal In the Noise Exploration Software for Hydrogeological Datasets.

Time Series (Analysis)

Project Name Description
Hydropy Analysis of hydrological oriented time series.
Pastas Analysis of hydrological time series using time series models.
Hydrostats Tools for use in comparison studies, specifically for use in the field of hydrology.
htimeseries This module provides the HTimeseries class, which is a layer on top of pandas, offering a little more functionality.

GIS Related

Project Name Description
PcRaster Is a collection of software targeted at the development and deployment of spatio-temporal environmental models.
PyGeoprocessing a Python/Cython based library that provides a set of commonly used raster, vector, and hydrological operations for GIS processing.
Pysheds Simple and fast watershed delineation in python.
Lidar Terrain and hydrological analysis based on LiDAR-derived digital elevation models (DEM).

Optimization, Uncertainty, Statistics

Project Name Description
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.
SPOTpy A Statistical Parameter Optimization Tool for Python.
PyGLUE Generalised Likelihood Uncertainty Estimation (GLUE) Framework.
Pyemu python modules for model-independent uncertainty analyses, data-worth analyses, and interfacing with PEST(++).
HPGL High Performance Geostatistics Library.
HydroErr Goodness of Fit metrics for use in comparison studies, specifically in the field of hydrology.
Climate-indices Climate indices for drought monitoring, community reference implementations in Python.
HydroLM The HydroLM package contains a class and functions for automating linear regressions OLS for hydrologists.
PySDI pysdi is a set of open source scripts that compute non-parametric standardized drought indices (SDI) using raster data sets as input data.
xskillscore Metrics for verifying forecasts.

Data Collection

Project Name Description
HKVFEWSPY Connection to the Delft FEWS servers
Openradar Library for processing a set of dutch, german and belgian precipitation radars into calibrated composites.
Ecohydrolib Libraries and command-line scripts for performing ecohydrology data preparation workflows.
Ulmo clean, simple and fast access to public hydrology and climatology data.
PyHIS PyHIS is a python library for querying CUAHSI*-HIS** web services
Wetterdienst Python Toolset For Accessing Weather Data From German Weather Service
Dataretrieval dataretrieval is a Python package for obtaining USGS or EPA water quality data, streamflow data, and metadata directly from web services.

Miscellaneous

Project Name Description
ESMPY Earth System Modeling Framework (ESMF) Python interface
PyHSPF Python extensions to the Hydrological Simulation Program in Fortran (HSPF).
PYWR spatial allocation tool
SPHY Spatial Processes in HYdrology (SPHY) model
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).
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.
EFlowCalc Calculator of Streamflow Characteristics.
IRIS A powerful, format-agnostic, and community-driven Python library for analysing and visualising Earth science data.
Hydrointerp A Python package for interpolating hydrologic data.
EFlowCalc EFlowCalc is an open-source calculator of ecological streamflow characteristics in Python.
Hydrofunctions A suite of convenience functions for working with hydrology data in an interactive Python session.
Shyft Shyft is the open-source toolbox for the energy-market domain, funded and supported by Statkraft.
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
Wetland wetland is a toolset for mapping surface water and wetland hydrological dynamics using fine-resolution aerial imagery within Google Earth Engine (GEE).
iRONS iRONS (interactive Reservoir Operation Notebooks and Software) is a python package that enables the simulation, forecasting and optimisation of reservoir systems.
Mesas Multiresolution Estimation of StorAge Selection functions.