NeuralHydrology — A Python library for Deep Learning research in hydrology

Accompanying paper to our open source Python library NeuralHydrology.

Abstract

Since ancient times humans have strived to describe environmental processes related to water. Throughout this history, hydrologists built various process-based prediction models that simulate processes from soil moisture to streamflow generation. More recently, Deep Learning models have emerged as extremely powerful and more accurate alternatives to these traditional modeling approaches. For hydrologists, embracing this new data-driven paradigm is challenging: not only are the models conceptually different, but they are also built, optimized, and evaluated with different strategies and toolsets.

NeuralHydrology is a Python library based on PyTorch that is designed to build, apply, and experiment with Deep Learning models with a strong focus on hydrological applications. Originally designed for our internal research needs, the library was generalized and open-sourced to allow anyone to experiment with Deep Learning models as easily as possible: pre-built models and data loaders allow for quick experiments, yet the framework is also easily extensible to new models, data sets, loss functions, or metrics to suit more advanced use-cases.

NeuralHydrology is targeted towards students and researchers who want to experiment with Deep Learning models for rainfall-runoff modeling or other problems related to hydrology. As such, the library was designed to be picked up by beginners with little programming experience. For example, NeuralHydrology allows to train state-of-the-art rainfall-runoff models by only editing a config file and without touching a single line of code

Paper

Kratzert, F., and Gauch., M., and Nearing, G., and Klotz, D. (2022). NeuralHydrology — A Python library for Deep Learning research in hydrology. Journal of Open Source Software, 7(71), 4050, https://doi.org/10.21105/joss.04050

Code

The library is available on GitHub and the documentation, including some tutorials is available at neuralhydrology.readthedocs.io

Citation

@article{Kratzert2022joss,
author = {Kratzert, F., and Gauch., M., and Nearing, G., and Klotz, D.},  
title = {{NeuralHydrology} --- A Python library for Deep Learning research in hydrology},
journal = {Journal of Open Source Software},
doi = {10.21105/joss.04050}, 
url = {https://doi.org/10.21105/joss.04050}, 
year = {2022}, 
publisher = {The Open Journal}, 
volume = {7}, 
number = {71}, 
pages = {4050}}