• Thibault Hallouin's avatar
    reorder positional parameters so that metrics are last · 709745a6
    Thibault Hallouin authored
    This is because in the CLI, metrics is a sequence of unknown length,
    so it was only possible to make it last positional parameters. In order
    to keep the interfaces harmonised across Python/R/C++ APIs and the CLI,
    metrics needed to be put last positional parameter.
    709745a6
test_probabilist.cpp 1.78 KiB
#include <istream>
#include <fstream>
#include <vector>
#include <gtest/gtest.h>
#include <xtensor/xtensor.hpp>
#include <xtensor/xmanipulation.hpp>
#include <xtensor/xcsv.hpp>
#include "evalhyd/probabilist.hpp"
TEST(ProbabilistTests, TestBrier) {
    // read in data
    std::ifstream ifs;
    ifs.open("./data/q_obs.csv");
    xt::xtensor<double, 2> observed = xt::load_csv<int>(ifs);
    ifs.close();
    ifs.open("./data/q_frc.csv");
    xt::xtensor<double, 2> forecast = xt::load_csv<double>(ifs);
    ifs.close();
    // compute scores
    xt::xtensor<double, 1> thresholds = {690, 534, 445};
    std::vector<xt::xtensor<double, 2>> metrics =
            evalhyd::evalp(
                    xt::transpose(observed), xt::transpose(forecast),
                    {"BS", "BSS", "BS_CRD", "BS_LBD"},
                    thresholds
    // check results
    // Brier scores
    xt::xtensor<double, 2> bs =
            {{0.10615136},
             {0.07395622},
             {0.08669186}};
    EXPECT_TRUE(xt::allclose(metrics[0], bs));
    // Brier skill scores
    xt::xtensor<double, 2> bss =
            {{0.5705594},
             {0.6661165},
             {0.5635126}};
    EXPECT_TRUE(xt::allclose(metrics[1], bss));
    // Brier calibration-refinement decompositions
    xt::xtensor<double, 2> bs_crd =
            {{0.011411758, 0.1524456, 0.2471852},
             {0.005532413, 0.1530793, 0.2215031},
             {0.010139431, 0.1220601, 0.1986125}};
    EXPECT_TRUE(xt::allclose(metrics[2], bs_crd));
    // Brier likelihood-based decompositions
    xt::xtensor<double, 2> bs_lbd =
            {{0.012159881, 0.1506234, 0.2446149},
             {0.008031746, 0.1473869, 0.2133114},
             {0.017191279, 0.1048221, 0.1743227}};
    EXPECT_TRUE(xt::allclose(metrics[3], bs_lbd));