1. 27 Dec, 2022 2 commits
  2. 21 Dec, 2022 1 commit
  3. 01 Dec, 2022 3 commits
  4. 20 Oct, 2022 1 commit
    • Thibault Hallouin's avatar
      pave the way for summary statistics on bootstrap samples · d37e69d2
      Thibault Hallouin authored
      Ultimately, the objective is for the user to be able to get the raw
      sampled metric values, or the mean and standard deviation of the sampled
      metric values, or a series of quantiles of the sampled metric values.
      There are still problems with the standard deviation on rtensor, and
      the computation of the quantiles does not work on n-dim expressions yet.
      So the second and third options are not possible yet, so only the raw
      values can be returned. Nonetheless, the machinery and the choice of
      where to introduce the summary functionality could be implemented,
      which is the purpose of this commit. A new parameter of the bootstrap
      experiment called "summary" is added: it can be given a value of 0 (to
      get the raw values). In the future, it would also take a value of 1 for
      mean+std, and 2 for quantiles.
      d37e69d2
  5. 12 Oct, 2022 1 commit
    • Thibault Hallouin's avatar
      explicitly add subsets dimension to `evald` · 3e42e722
      Thibault Hallouin authored
      In order to harmonise with `evalp`, and in view to use `evald` in `evalp`,
      the subsets dimension (corresponding to the temporal masks) needed to be
      explicitly included in the output of `evald` rather than allowing a
      limited number of masks corresponding to the number of time series
      evaluated to be used.
      3e42e722
  6. 06 Oct, 2022 1 commit
    • Thibault Hallouin's avatar
      implement bootstrapping method for metric uncertainty estimation · 16ce8f4e
      Thibault Hallouin authored
      The bootstrapping method is based on a non-overlapping block sampling
      with replacement, where the blocks are years of data. The number of
      samples and the sample length (i.e the number of year blocks) are both
      customisable.
      
      The method is accessible both for deterministic and probabilistic
      evaluation where a new axis is added. For now, the metrics for all the
      samples are returned, but in the future, some summary statistics would
      be implemented (e.g. quantiles or mean/standard deviation).
      
      /!\ For determinist evaluation, the n-dimensional functionality became
          untenable such that the number of dimensions was fixed and
          restricted to 2D tensors.
      
      New unit tests are included to test both the bootstrapping generator
      and the numerical results obtained with the bootstrapping turned on.
      16ce8f4e
  7. 30 Sep, 2022 1 commit
  8. 15 Sep, 2022 1 commit
  9. 13 Sep, 2022 1 commit
    • Thibault Hallouin's avatar
      allow masking conditions to be specified on predictions · f31664dd
      Thibault Hallouin authored
      An earlier implementation of the masking conditions assumed that the
      conditions on streamflow would only be on the observations, but this is
      not always the case. For example, reliability scores cannot be done on
      the observed streamflow and need to be performed on the predicted
      streamflow. So this is now possible as the condition syntax is changed
      and now *q_obs*/*q_prd_median*/*q_prd_mean* in place of *q*.
      f31664dd
  10. 02 Sep, 2022 1 commit
  11. 31 Aug, 2022 1 commit
    • Thibault Hallouin's avatar
      implement functionality to generate temporal masks from conditions · b13d2f21
      Thibault Hallouin authored
      This functionality is inherited from `evalhyd-cli`. It allows the user
      to provide conditions as strings to specify how to generate temporal
      subsets. Conditions can be based on observed streamflow values (e.g.
      q>800, q<=120) or on time indices (e.g. to select particular events).
      
      This functionality is made available both for determinist and
      probabilist evaluation, unlike in  `evalhyd-cli` where it was only
      available for probabilist evaluation.
      
      This is documented in the docstrings, and new unit tests are written.
      b13d2f21
  12. 30 Aug, 2022 1 commit
    • Thibault Hallouin's avatar
      move away from fully generic API for evald · 7ded7f39
      Thibault Hallouin authored
      The use of `xexpression` and template parameter was showing its limits
      as the data type could not be different between the different n-dim
      inputs (e.g. masks had to be as double rather than bool). Since there is
      no real need to be able to use `evald` on `xarray`, the genericity of
      its API is reduced so that it now expects inputs to be tensor only. The
      number of dimensions for the tensors becomes a template parameter.
      7ded7f39
  13. 25 Aug, 2022 1 commit
  14. 23 Aug, 2022 3 commits
  15. 11 Jul, 2022 1 commit
  16. 08 Jul, 2022 1 commit
  17. 07 Jul, 2022 2 commits
  18. 15 Jun, 2022 1 commit
  19. 13 Jun, 2022 1 commit
    • Thibault Hallouin's avatar
      return squeezed xarray · 91aec5e1
      Thibault Hallouin authored
      Since the metrics are typically summary statistics, their size is not
      very big, so that using xtensor instead of xarray as a data structure is
      not as critical as for input data. In turn, using xarray allows for
      metrics of different sizes to be returned without unnecessary size 1
      dimensions (e.g. when only one threshold is given, or when no temporal
      masking is performed). So all output metrics are now returned in their
      "natural" shape (e.g. 1D for mono-component metrics, 2D for
      multi-component metrics), plus any additional dimension linked to
      multi-thresholds, multi-masking, etc.
      91aec5e1
  20. 02 Jun, 2022 3 commits
  21. 25 May, 2022 1 commit
  22. 24 May, 2022 1 commit
  23. 17 May, 2022 1 commit
  24. 16 May, 2022 1 commit