Commit 85ecd375 authored by Thibault Hallouin's avatar Thibault Hallouin
Browse files

bring back KGENP and KGENP_D

fixes #5
1 merge request!7release v0.1.2
Pipeline #50029 passed with stage
in 4 minutes and 4 seconds
Showing with 119 additions and 34 deletions
+119 -34
...@@ -18,7 +18,7 @@ project( ...@@ -18,7 +18,7 @@ project(
find_package(xtl 0.7.5 REQUIRED) find_package(xtl 0.7.5 REQUIRED)
message(STATUS "Found xtl: ${xtl_INCLUDE_DIRS}/xtl") message(STATUS "Found xtl: ${xtl_INCLUDE_DIRS}/xtl")
find_package(xtensor 0.24.6 REQUIRED) find_package(xtensor 0.24.7 REQUIRED)
message(STATUS "Found xtensor: ${xtensor_INCLUDE_DIRS}/xtensor") message(STATUS "Found xtensor: ${xtensor_INCLUDE_DIRS}/xtensor")
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
......
...@@ -9,7 +9,9 @@ Yet to be versioned and released. Only available from *dev* branch until then. ...@@ -9,7 +9,9 @@ Yet to be versioned and released. Only available from *dev* branch until then.
* add support for minute and hourly time steps in bootstrapping functionality * add support for minute and hourly time steps in bootstrapping functionality
(`CPP#9 <https://gitlab.irstea.fr/HYCAR-Hydro/evalhyd/evalhyd-cpp/-/issues/9>`_) (`CPP#9 <https://gitlab.irstea.fr/HYCAR-Hydro/evalhyd/evalhyd-cpp/-/issues/9>`_)
* add `"KGENP"` and `"KGENP_D"` as deterministic evaluation metrics since
stable sorting is now available in ``xtensor``
(`CPP#5 <https://gitlab.irstea.fr/HYCAR-Hydro/evalhyd/evalhyd-cpp/-/issues/5>`_)
v0.1.1 v0.1.1
------ ------
......
...@@ -150,29 +150,22 @@ namespace evalhyd ...@@ -150,29 +150,22 @@ namespace evalhyd
auto obs_filtered = auto obs_filtered =
xt::filter(obs, !xt::isnan(obs)); xt::filter(obs, !xt::isnan(obs));
// ------------------------------------------------- auto prd_sort = xt::argsort(
// TODO: use `xt::argsort` with `xt::sorting_method::stable` xt::eval(prd_filtered), {0},
// when this becomes possible with `xtensor` to xt::sorting_method::stable
// consistently sort ties across compilers );
// https://github.com/xtensor-stack/xtensor/issues/2677 auto obs_sort = xt::argsort(
// note that the second sorting (to get the xt::eval(obs_filtered), {0},
// rank) does not need the stable method xt::sorting_method::stable
// because there will be no ties after the );
// first sorting
auto prd_sort = xt::argsort(xt::eval(prd_filtered));
auto obs_sort = xt::argsort(xt::eval(obs_filtered));
// -------------------------------------------------
auto prd_rank = xt::eval(xt::argsort(prd_sort)); auto prd_rank = xt::eval(xt::argsort(prd_sort));
auto obs_rank = xt::eval(xt::argsort(obs_sort)); auto obs_rank = xt::eval(xt::argsort(obs_sort));
auto mean_prd_rank = auto mean_rank = (prd_rank.size() - 1) / 2.;
xt::eval(xt::nanmean(prd_rank));
auto mean_obs_rank =
xt::eval(xt::nanmean(obs_rank));
auto prd_rank_err = xt::eval(prd_rank - mean_prd_rank); auto prd_rank_err = xt::eval(prd_rank - mean_rank);
auto obs_rank_err = xt::eval(obs_rank - mean_obs_rank); auto obs_rank_err = xt::eval(obs_rank - mean_rank);
auto r_num = xt::nansum(prd_rank_err * obs_rank_err); auto r_num = xt::nansum(prd_rank_err * obs_rank_err);
......
...@@ -246,13 +246,7 @@ namespace evalhyd ...@@ -246,13 +246,7 @@ namespace evalhyd
metrics, metrics,
{"MAE", "MARE", "MSE", "RMSE", {"MAE", "MARE", "MSE", "RMSE",
"NSE", "KGE", "KGE_D", "KGEPRIME", "KGEPRIME_D", "NSE", "KGE", "KGE_D", "KGEPRIME", "KGEPRIME_D",
// ------------------------------------------------------------ "KGENP", "KGENP_D",
// TODO: bring back when `xt::argsort` supports stable sorting
// so that the r_spearman component of KGENP and KGENP_D
// yields consistent results across compilers
// https://github.com/xtensor-stack/xtensor/issues/2677
// "KGENP", "KGENP_D",
// ------------------------------------------------------------
"CONT_TBL"} "CONT_TBL"}
); );
......
0.9036196405840838,
0.9027149491299032,
0.9019964203149340,
0.9015473483249743,
0.9010227409078427,
0.9002935342284578,
0.8996776226282514,
0.8994216492339094,
0.8990977208488355,
0.8987350709875637,
0.8982532429397716,
0.8976861184526075,
0.8972152067006425,
0.8968237918617401,
0.8964733361016016,
0.8958912350965430,
0.8955633883538662,
0.8952428069377452,
0.8949345862320413,
0.8946525212872837,
0.8942745923214641,
0.8940089723492346,
0.8935943964262417,
0.8932560897547058,
0.8928803002007193,
0.8925226440231935,
0.8921614576327788,
0.8918237045929703,
0.8914308286219610,
0.8910650664139746,
0.8908211410044876,
0.8903097144311038,
0.8897023851839844,
0.8890303874814716,
0.8886702633964977,
0.8882116628141731,
0.8875818375621527,
0.8868808169065676,
0.8858920353229134,
0.8852878632825192,
0.8849502078228993,
0.8844861762981348,
0.8836425483698741,
0.8826408130506563,
0.8818114019975033,
0.8806522435640054,
0.8792440943389407,
0.8777199708282357,
0.8749280250179110,
0.8718181395679226,
0.8615027580099652
0.9520277979462711,0.9497765351583353,1.0668239858924582,
0.9523126391293594,0.9499605171079959,1.0684568980300118,
0.9524758044569267,0.9500741432348777,1.0696675053044051,
0.9528188904757725,0.9501160335929643,1.0705581846521615,
0.9528559916382756,0.9502337695934666,1.0713951161082431,
0.9528587841988941,0.9500393279828702,1.0722704389155211,
0.9530594496261958,0.9498915009792210,1.0731457617227991,
0.9530614443123518,0.9499496825957654,1.0735373535050023,
0.9531859127284913,0.9499396120529464,1.0740517976110342,
0.9532672959236593,0.9498873351942252,1.0745611228702399,
0.9532529341833356,0.9498539983260041,1.0751830627596215,
0.9532968172787694,0.9497273044373882,1.0758920230450484,
0.9533793972856310,0.9496601087761085,1.0765318788983218,
0.9534292644395331,0.9495354662866569,1.0770053722297441,
0.9534472166149378,0.9494905674176269,1.0774558307504485,
0.9534240782555273,0.9493484046086818,1.0781263996846790,
0.9534344506235389,0.9492972712034291,1.0785359074307741,
0.9534404346820071,0.9492265991089008,1.0789198209427380,
0.9534687592254235,0.9491619974453277,1.0793037344547021,
0.9536770044601183,0.9491650765239747,1.0798002625968421,
0.9536626427197945,0.9491350202913762,1.0802711965048515,
0.9537129088109277,0.9491315924723295,1.0806474317465762,
0.9537129088109277,0.9490598383917315,1.0811465193121295,
0.9537687600232979,0.9490004286134792,1.0815841807157685,
0.9537611802159048,0.9489625645445023,1.0820474363535382,
0.9539506754007324,0.9489310578873620,1.0826002718107666,
0.9539789999441488,0.9489579598218398,1.0831019187997328,
0.9540240798512762,0.9488668916806536,1.0835088671224147,
0.9540384415916000,0.9487590811954164,1.0839593256431190,
0.9540224841023514,0.9487666979551599,1.0844277001277152,
0.9541297982175484,0.9487387792434008,1.0847834599821353,
0.9541433620834098,0.9486800858387021,1.0854130781417561,
0.9541752770619071,0.9485263682674370,1.0861169195803568,
0.9541728834385198,0.9483531735489698,1.0868719494872194,
0.9542379102072081,0.9482801928686959,1.0873224080079240,
0.9546978848348001,0.9481534173885801,1.0880697596445472,
0.9547242146920604,0.9480523537998038,1.0888222301279968,
0.9547194274452857,0.9478976549520498,1.0896156513860558,
0.9546683634796901,0.9477531014579976,1.0907520353814693,
0.9548367149912633,0.9476282681201116,1.0915224218288104,
0.9550158378080793,0.9476574803442240,1.0920496630519076,
0.9554363176497810,0.9475728061854791,1.0927842175714655,
0.9555336583341977,0.9475197380039366,1.0938489377113123,
0.9555081263513999,0.9473232139636073,1.0949674057428342,
0.9554829933058333,0.9472245686602775,1.0959246300993313,
0.9554327272147001,0.9469956731534295,1.0972017823824649,
0.9556533395035625,0.9466231399592477,1.0988244568263661,
0.9557989515929564,0.9464090285170748,1.1006314097560101,
0.9559976223341019,0.9459322640378260,1.1038434861394426,
0.9565134481740643,0.9459453672837206,1.1077849981956065,
0.9556740842395858,0.9446729017186131,1.1189773567810644
...@@ -31,13 +31,7 @@ using namespace xt::placeholders; // required for `_` to work ...@@ -31,13 +31,7 @@ using namespace xt::placeholders; // required for `_` to work
std::vector<std::string> all_metrics_d = { std::vector<std::string> all_metrics_d = {
"MAE", "MARE", "MSE", "RMSE", "MAE", "MARE", "MSE", "RMSE",
"NSE", "KGE", "KGE_D", "KGEPRIME", "KGEPRIME_D", "NSE", "KGE", "KGE_D", "KGEPRIME", "KGEPRIME_D",
// --------------------------------------------------------------------- "KGENP", "KGENP_D",
// TODO: bring back when `xt::argsort` supports stable sorting
// so that the r_spearman component of KGENP and KGENP_D
// yields consistent results across compilers
// https://github.com/xtensor-stack/xtensor/issues/2677
// "KGENP", "KGENP_D",
// ---------------------------------------------------------------------
"CONT_TBL" "CONT_TBL"
}; };
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment