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.
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
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.
SPEI
A simple Python package to calculate and visualize some popular drought indices such as the SPI, SPEI and SGI.
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
VS2DPY
Python implementation of the VS2D unsaturated zone model.
pedon
Python package for (unsaturated) soil properties including pedotransfer functions.
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.
nlmod
Python code to process, build and visualize MODFLOW models in the Netherlands. Model data is stored in a xarray Datasets and geopandas GeoDataFrames.
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.
HydroAnalysis
Python package to calculate indices and metrics useful in the everyday job of a hydrologist.
HydroPandas
Module for loading time series data into custom DataFrames
traval
Tools for applying automatic error detection schemes to timeseries
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.
pydsstools
Python library for simple HEC-DSS functions.
eWaterCycle
Platform to do computational hydrology using many of the above mentioned models