diff --git a/include/evalhyd/detail/determinist/efficiencies.hpp b/include/evalhyd/detail/determinist/efficiencies.hpp index 6ae18ff67ee925025ec18d90aa5252252def1757..df893670f3f70e4b900903e9417d368f5a3c0ce4 100644 --- a/include/evalhyd/detail/determinist/efficiencies.hpp +++ b/include/evalhyd/detail/determinist/efficiencies.hpp @@ -150,8 +150,18 @@ namespace evalhyd auto obs_filtered = xt::filter(obs, !xt::isnan(obs)); + // ------------------------------------------------- + // TODO: use `xt::argsort` with `xt::sorting_method::stable` + // when this becomes possible with `xtensor` to + // consistently sort ties across compilers + // https://github.com/xtensor-stack/xtensor/issues/2677 + // note that the second sorting (to get the + // rank) does not need the stable method + // 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 obs_rank = xt::eval(xt::argsort(obs_sort)); diff --git a/include/evalhyd/evald.hpp b/include/evalhyd/evald.hpp index f56db11eed76781139529369e982a5744a82e07c..19cbdbcecde37ea6f5e82ce593c273916d04bae4 100644 --- a/include/evalhyd/evald.hpp +++ b/include/evalhyd/evald.hpp @@ -237,8 +237,14 @@ namespace evalhyd utils::check_metrics( metrics, {"MAE", "MARE", "MSE", "RMSE", - "NSE", "KGE", "KGE_D", "KGEPRIME", "KGEPRIME_D", - "KGENP", "KGENP_D", + "NSE", "KGE", "KGE_D", "KGEPRIME", "KGEPRIME_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"} ); diff --git a/tests/expected/evald/KGENP.csv b/tests/expected/evald/KGENP.csv deleted file mode 100644 index 3e088123e0d0e51b5c6f11008a6f160b97e66a77..0000000000000000000000000000000000000000 --- a/tests/expected/evald/KGENP.csv +++ /dev/null @@ -1,51 +0,0 @@ -0.9036539739696192 -0.9027202285746003 -0.9019977744615374 -0.9015525097648488 -0.9010290108380212 -0.9003040948659129 -0.8996615651511857 -0.8994432376233472 -0.8990693877782125 -0.8987623050295679 -0.8982933538071468 -0.8977263330753746 -0.8972804487105244 -0.8968736237332382 -0.8965158170509794 -0.8959240538930912 -0.8956088844977960 -0.8953049670887201 -0.8949959973850025 -0.8946686546931807 -0.8943180913344442 -0.8940540542782509 -0.8936315062401508 -0.8932721531864458 -0.8929006117952354 -0.8925743794038026 -0.8921942933568537 -0.8918475994381289 -0.8914777323237183 -0.8911202294650304 -0.8908850799093402 -0.8903841444710436 -0.8897912175356095 -0.8891414857878273 -0.8887725206219910 -0.8882460712953549 -0.8876344734042736 -0.8869275556096269 -0.8859565996562880 -0.8853084287982771 -0.8850111077065166 -0.8845232332464146 -0.8836640329167520 -0.8826896031412772 -0.8818597270752163 -0.8807203525836853 -0.8792796617623018 -0.8777823056554275 -0.8749598563418928 -0.8718242288507813 -0.8614867900158781 diff --git a/tests/expected/evald/KGENP_D.csv b/tests/expected/evald/KGENP_D.csv deleted file mode 100644 index fb3a5c3531e4d92f9f7849b440bdb2f3775f2315..0000000000000000000000000000000000000000 --- a/tests/expected/evald/KGENP_D.csv +++ /dev/null @@ -1,51 +0,0 @@ -0.9520968140872715,0.9497765351583353,1.0668239858924582 -0.9523234104346022,0.9499605171079959,1.0684568980300118 -0.9524785970175452,0.9500741432348777,1.0696675053044051 -0.9528296617810154,0.9501160335929643,1.0705581846521615 -0.9528691565669057,0.9502337695934666,1.0713951161082431 -0.9528811246838422,0.9500393279828702,1.0722704389155211 -0.9530251410243112,0.9498915009792210,1.0731457617227991 -0.9531077210311729,0.9499496825957654,1.0735373535050023 -0.9531248753321152,0.9499396120529464,1.0740517976110342 -0.9533263386338794,0.9498873351942252,1.0745611228702399 -0.9533403014369719,0.9498539983260041,1.0751830627596215 -0.9533849824068681,0.9497273044373882,1.0758920230450484 -0.9535234136261000,0.9496601087761085,1.0765318788983218 -0.9535397700525799,0.9495354662866569,1.0770053722297441 -0.9535417647387360,0.9494905674176269,1.0774558307504485 -0.9534974827060710,0.9493484046086818,1.0781263996846790 -0.9535365785547302,0.9492972712034291,1.0785359074307741 -0.9535804616501640,0.9492265991089008,1.0789198209427380 -0.9536075893818866,0.9491619974453277,1.0793037344547021 -0.9537137066853901,0.9491650765239747,1.0798002625968421 -0.9537619780903672,0.9491350202913762,1.0802711965048515 -0.9538162335538126,0.9491315924723295,1.0806474317465762 -0.9537982813784079,0.9490598383917315,1.0811465193121295 -0.9538058611858010,0.9490004286134792,1.0815841807157685 -0.9538082548091883,0.9489625645445023,1.0820474363535382 -0.9540715533817909,0.9489310578873620,1.0826002718107666 -0.9540559948297734,0.9489579598218398,1.0831019187997328 -0.9540803300008777,0.9488668916806536,1.0835088671224147 -0.9541493461418781,0.9487590811954164,1.0839593256431190 -0.9541533355141902,0.9487666979551599,1.0844277001277152 -0.9542821922398730,0.9487387792434008,1.0847834599821353 -0.9543216870257634,0.9486800858387021,1.0854130781417561 -0.9543895063550701,0.9485263682674370,1.0861169195803568 -0.9544425650068218,0.9483531735489698,1.0868719494872194 -0.9544872459767180,0.9482801928686959,1.0873224080079240 -0.9547828584650491,0.9481534173885801,1.0880697596445472 -0.9548550661038993,0.9480523537998038,1.0888222301279968 -0.9548363160540321,0.9478976549520498,1.0896156513860558 -0.9548311298700263,0.9477531014579976,1.0907520353814693 -0.9548889757685526,0.9476282681201116,1.0915224218288104 -0.9551718222654847,0.9476574803442240,1.0920496630519076 -0.9555324615225040,0.9475728061854791,1.0927842175714655 -0.9555899084837992,0.9475197380039366,1.0938489377113123 -0.9556369830770827,0.9473232139636073,1.0949674057428342 -0.9556114510942848,0.9472245686602775,1.0959246300993313 -0.9556154404665970,0.9469956731534295,1.0972017823824649 -0.9557502812507480,0.9466231399592477,1.0988244568263661 -0.9559716914140729,0.9464090285170748,1.1006314097560101 -0.9560881810855880,0.9459322640378260,1.1038434861394426 -0.9565314003494690,0.9459453672837206,1.1077849981956065 -0.9556242170856838,0.9446729017186131,1.1189773567810644 diff --git a/tests/test_determinist.cpp b/tests/test_determinist.cpp index 57cd89206c39f11cff13601cb49207fae9179c03..8e0c2497e7c6647b3be44330e85cfd29b192c093 100644 --- a/tests/test_determinist.cpp +++ b/tests/test_determinist.cpp @@ -30,7 +30,14 @@ using namespace xt::placeholders; // required for `_` to work std::vector<std::string> all_metrics_d = { "MAE", "MARE", "MSE", "RMSE", - "NSE", "KGE", "KGE_D", "KGEPRIME", "KGEPRIME_D", "KGENP", "KGENP_D", + "NSE", "KGE", "KGE_D", "KGEPRIME", "KGEPRIME_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" };