Bidirectional Reach (BReach)

https://img.shields.io/pypi/v/pybreach.svg https://img.shields.io/travis/stijnvanhoey/pybreach.svg Documentation Status https://zenodo.org/badge/88784240.svg

This Python Package provides an implementation of the methodology presented in Identification of temporal consistency in rating curve data: Bidirectional Reach (BReach). BReach identifies the consistency of rating curve data based on a quality analysis of model results. Results of this analysis enable the detection of changes in data consistency.

Features

The BReach methodology consists of different steps, that are described in Van Eerdenbrugh et al., 2016 :

  • Step 1: Selection of a model structure for the analysis;
  • Step 2: Sampling of the parameter space;
  • Step 3: Assessment of acceptable model results;
  • Step 4: Assessment of different degrees of tolerance;
  • Step 5: Assessment of the bidirectional reach for all degrees of tolerance;
  • Step 6: Identification of consistent data periods.

The current scope of the package is to support the execution of steps 4, 5 and 6. Based on a two-dimensional matrix of performance measures (calculated for each data point and a given number of parameter sets), the package calculates the maximum left and right reaches in each data point for different degrees of tolerance and provides the visualisation(s) to interpret the data.

Input

A user has thus to prepare steps 1 - 3 of the methodology prior to the use of the pybreach package. Inputs for the package are:

  • A two-dimensional matrix (numpy ndarray) of shape NxM with N the number of model realisations and M the number of model evaluation points (time steps, measured values). This matrix contains binary information that results from step 3 (value ‘1’ = acceptable model result, value ‘0’ = nonacceptable model result).
  • A list containing different degrees of tolerance, defining the percentage of points that are allowed to be nonacceptable in the BReach analysis. In both Van Eerdenbrugh et al., 2016 and Van Eerdenbrugh et al., 2017, degrees of tolerance of 0 %, 5 %, 10 %, 20 % and 40 % are used.

Ouput

The script pybreach.py calculates the maximum left and right reach for a given matrix with model evaluations. The result is a numpy ndarray of shape NxM in which N is the number of model evaluation points and M is 2 * the amount of degrees of tolerance. Columns (2*i-1) contain the maximum left reaches and columns 2*i contain the maximum right reaches for all data points and degree of tolerance i.

The script breachplot.py returns a BReach plot for a given BReach result.

Credits

This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.