An evaluator for streamflow time series in Python
hydroeval
is an open-source evaluator
of goodness of fit between
simulated and observed streamflow time series in Python. It is licensed
under GNU GPL-3.0. The package provides a bundle of the most commonly
used objective functions in hydrological science. The package is designed
to calculate all objective functions in a vectorised manner (using
numpy, and therefore C code
in the background) which makes for very efficient computation of the
objective functions.
If you are using hydroeval
, please consider citing the software as
follows (click on the link to get the DOI of a specific version):
Hallouin, T. (XXXX). hydroeval: an evaluator for streamflow time series in Python (Version X.X.X). Zenodo. https://doi.org/10.5281/zenodo.2591217
Brief overview of the API
import hydroeval as he
simulations = [5.3, 4.2, 5.7, 2.3]
evaluations = [4.7, 4.3, 5.5, 2.7]
nse = he.evaluator(he.nse, simulations, evaluations)
kge, r, alpha, beta = he.evaluator(he.kge, simulations, evaluations)
Objective functions available
The objective functions currently available in hydroeval
to evaluate the fit
between observed and simulated streamflow time series are as follows:
Original Kling-Gupta Efficiency (
kge
) and its three components (r, α, β)Modified Kling-Gupta Efficiency (
kgeprime
) and its three components (r, γ, β)Non-Parametric Kling-Gupta Efficiency (
kgenp
) and its three components (r, α, β)Root Mean Square Error (
rmse
)Mean Absolute Relative Error (
mare
)Percent Bias (
pbias
)
Moreover, some objective functions can be calculated in a bounded version following Mathevet et al. (2006):
Bounded Nash-Sutcliffe Efficiency (
nse_c2m
)Bounded Original Kling-Gupta Efficiency (
kge_c2m
)Bounded Modified Kling-Gupta Efficiency (
kgeprime_c2m
)Bounded Non-Parametric Kling-Gupta Efficiency (
kgenp_c2m
)
Finally, the evaluator
can take an optional argument transform.
This argument allows to apply a transformation on both the observed and the
simulated streamflow time series prior the calculation of the objective function.
The possible transformations are as follows:
Inverted flows (using
transform='inv'
)Square Root-transformed flows (using
transform='sqrt'
)Natural Logarithm-transformed flows (using
transform='log'
)
Acknowledgement
Early versions of this tool were developed with the financial support of Ireland’s Environmental Protection Agency (Grant Number 2014-W-LS-5).