Commit 354817f0 authored by Thibault Hallouin's avatar Thibault Hallouin
Browse files

rename template parameters to C for container

Showing with 53 additions and 53 deletions
+53 -53
...@@ -28,7 +28,7 @@ namespace evalhyd ...@@ -28,7 +28,7 @@ namespace evalhyd
/// ///
/// :Template Parameters: /// :Template Parameters:
/// ///
/// A: Any inherited class of ``xt::xcontainer<...>`` /// C: Any inherited class of ``xt::xcontainer<...>``
/// The type of data structure for the input data (e.g. /// The type of data structure for the input data (e.g.
/// ``xt::xtensor<...>``, ``xt::xarray<...>``). /// ``xt::xtensor<...>``, ``xt::xarray<...>``).
/// ///
...@@ -136,15 +136,15 @@ namespace evalhyd ...@@ -136,15 +136,15 @@ namespace evalhyd
/// evalhyd::evald(obs, prd, {"NSE"}, "none", 1, -9, msk); /// evalhyd::evald(obs, prd, {"NSE"}, "none", 1, -9, msk);
/// ///
/// \endrst /// \endrst
template <class A> template <class C>
std::vector<xt::xarray<double>> evald( std::vector<xt::xarray<double>> evald(
const xt::xexpression<A>& q_obs, const xt::xexpression<C>& q_obs,
const xt::xexpression<A>& q_prd, const xt::xexpression<C>& q_prd,
const std::vector<std::string>& metrics, const std::vector<std::string>& metrics,
const std::string& transform = "none", const std::string& transform = "none",
const double exponent = 1, const double exponent = 1,
double epsilon = -9, double epsilon = -9,
const xt::xexpression<A>& t_msk = A() const xt::xexpression<C>& t_msk = C()
) )
{ {
auto q_obs_ = q_obs.derived_cast(); auto q_obs_ = q_obs.derived_cast();
...@@ -153,7 +153,7 @@ namespace evalhyd ...@@ -153,7 +153,7 @@ namespace evalhyd
// initialise a mask if none provided // initialise a mask if none provided
// (corresponding to no temporal subset) // (corresponding to no temporal subset)
A msk; C msk;
if (t_msk_.size() < 1) if (t_msk_.size() < 1)
msk = xt::ones<bool>(q_obs_.shape()); msk = xt::ones<bool>(q_obs_.shape());
else else
...@@ -204,8 +204,8 @@ namespace evalhyd ...@@ -204,8 +204,8 @@ namespace evalhyd
} }
// apply streamflow transformation if requested // apply streamflow transformation if requested
A obs; C obs;
A prd; C prd;
if ( transform == "none" || (transform == "pow" && exponent == 1)) if ( transform == "none" || (transform == "pow" && exponent == 1))
{ {
...@@ -266,7 +266,7 @@ namespace evalhyd ...@@ -266,7 +266,7 @@ namespace evalhyd
); );
// instantiate determinist evaluator // instantiate determinist evaluator
eh::determinist::Evaluator<A> evaluator(obs, prd, msk); eh::determinist::Evaluator<C> evaluator(obs, prd, msk);
// declare maps for memoisation purposes // declare maps for memoisation purposes
std::unordered_map<std::string, std::vector<std::string>> elt; std::unordered_map<std::string, std::vector<std::string>> elt;
......
...@@ -23,7 +23,7 @@ namespace evalhyd ...@@ -23,7 +23,7 @@ namespace evalhyd
namespace determinist namespace determinist
{ {
template <class A> template <class C>
class Evaluator class Evaluator
{ {
// define type for function to be used to "mask" (i.e. yield NaNs) the // define type for function to be used to "mask" (i.e. yield NaNs) the
...@@ -34,38 +34,38 @@ namespace evalhyd ...@@ -34,38 +34,38 @@ namespace evalhyd
xt::detail::bitwise_or, xt::detail::bitwise_or,
xt::xfunction< xt::xfunction<
xt::math::isnan_fun, xt::math::isnan_fun,
const A& const C&
>, >,
xt::xfunction< xt::xfunction<
xt::detail::logical_not, xt::detail::logical_not,
const A& const C&
> >
>, >,
xt::xscalar<float>, xt::xscalar<float>,
const A& const C&
> nan_function; > nan_function;
private: private:
// members for input data // members for input data
const A& _q_obs; const C& _q_obs;
const A& _q_prd; const C& _q_prd;
nan_function q_obs; nan_function q_obs;
nan_function q_prd; nan_function q_prd;
// members for computational elements // members for computational elements
A mean_obs; C mean_obs;
A mean_prd; C mean_prd;
A quad_err; C quad_err;
A quad_obs; C quad_obs;
A quad_prd; C quad_prd;
A r_pearson; C r_pearson;
A bias; C bias;
public: public:
// constructor method // constructor method
Evaluator(const xt::xexpression<A>& obs, Evaluator(const xt::xexpression<C>& obs,
const xt::xexpression<A>& prd, const xt::xexpression<C>& prd,
const xt::xexpression<A>& msk) : const xt::xexpression<C>& msk) :
_q_obs{obs.derived_cast()}, _q_obs{obs.derived_cast()},
_q_prd{prd.derived_cast()}, _q_prd{prd.derived_cast()},
// "mask" (i.e. use NaN) observations where predictions are // "mask" (i.e. use NaN) observations where predictions are
...@@ -87,10 +87,10 @@ namespace evalhyd ...@@ -87,10 +87,10 @@ namespace evalhyd
{}; {};
// members for evaluation metrics // members for evaluation metrics
A RMSE; C RMSE;
A NSE; C NSE;
A KGE; C KGE;
A KGEPRIME; C KGEPRIME;
// methods to compute elements // methods to compute elements
void calc_mean_obs(); void calc_mean_obs();
...@@ -116,8 +116,8 @@ namespace evalhyd ...@@ -116,8 +116,8 @@ namespace evalhyd
// \assign mean_obs: // \assign mean_obs:
// Mean observed streamflow. // Mean observed streamflow.
// shape: ({... ,} 1) // shape: ({... ,} 1)
template <class A> template <class C>
void Evaluator<A>::calc_mean_obs() void Evaluator<C>::calc_mean_obs()
{ {
mean_obs = xt::nanmean(q_obs, -1, xt::keep_dims); mean_obs = xt::nanmean(q_obs, -1, xt::keep_dims);
} }
...@@ -130,8 +130,8 @@ namespace evalhyd ...@@ -130,8 +130,8 @@ namespace evalhyd
// \assign mean_prd: // \assign mean_prd:
// Mean predicted streamflow. // Mean predicted streamflow.
// shape: ({... ,} 1) // shape: ({... ,} 1)
template <class A> template <class C>
void Evaluator<A>::calc_mean_prd() void Evaluator<C>::calc_mean_prd()
{ {
mean_prd = xt::nanmean(q_prd, -1, xt::keep_dims); mean_prd = xt::nanmean(q_prd, -1, xt::keep_dims);
} }
...@@ -147,8 +147,8 @@ namespace evalhyd ...@@ -147,8 +147,8 @@ namespace evalhyd
// \assign quad_err: // \assign quad_err:
// Quadratic errors between observations and predictions. // Quadratic errors between observations and predictions.
// shape: ({... ,} time) // shape: ({... ,} time)
template <class A> template <class C>
void Evaluator<A>::calc_quad_err() void Evaluator<C>::calc_quad_err()
{ {
quad_err = xt::square(q_obs - q_prd); quad_err = xt::square(q_obs - q_prd);
} }
...@@ -164,8 +164,8 @@ namespace evalhyd ...@@ -164,8 +164,8 @@ namespace evalhyd
// \assign quad_obs: // \assign quad_obs:
// Quadratic errors between observations and mean observation. // Quadratic errors between observations and mean observation.
// shape: ({... ,} time) // shape: ({... ,} time)
template <class A> template <class C>
void Evaluator<A>::calc_quad_obs() void Evaluator<C>::calc_quad_obs()
{ {
quad_obs = xt::square(q_obs - mean_obs); quad_obs = xt::square(q_obs - mean_obs);
} }
...@@ -181,8 +181,8 @@ namespace evalhyd ...@@ -181,8 +181,8 @@ namespace evalhyd
// \assign quad_prd: // \assign quad_prd:
// Quadratic errors between predictions and mean prediction. // Quadratic errors between predictions and mean prediction.
// shape: ({... ,} time) // shape: ({... ,} time)
template <class A> template <class C>
void Evaluator<A>::calc_quad_prd() void Evaluator<C>::calc_quad_prd()
{ {
quad_prd = xt::square(q_prd - mean_prd); quad_prd = xt::square(q_prd - mean_prd);
} }
...@@ -210,8 +210,8 @@ namespace evalhyd ...@@ -210,8 +210,8 @@ namespace evalhyd
// \assign r_pearson: // \assign r_pearson:
// Pearson correlation coefficients. // Pearson correlation coefficients.
// shape: ({... ,} time) // shape: ({... ,} time)
template <class A> template <class C>
void Evaluator<A>::calc_r_pearson() void Evaluator<C>::calc_r_pearson()
{ {
// calculate error in timing and dynamics $r_{pearson}$ // calculate error in timing and dynamics $r_{pearson}$
// (Pearson's correlation coefficient) // (Pearson's correlation coefficient)
...@@ -238,8 +238,8 @@ namespace evalhyd ...@@ -238,8 +238,8 @@ namespace evalhyd
// \assign bias: // \assign bias:
// Biases. // Biases.
// shape: ({... ,} 1) // shape: ({... ,} 1)
template <class A> template <class C>
void Evaluator<A>::calc_bias() void Evaluator<C>::calc_bias()
{ {
// calculate $bias$ // calculate $bias$
bias = xt::nansum(q_prd, -1, xt::keep_dims) bias = xt::nansum(q_prd, -1, xt::keep_dims)
...@@ -254,8 +254,8 @@ namespace evalhyd ...@@ -254,8 +254,8 @@ namespace evalhyd
// \assign RMSE: // \assign RMSE:
// Root-mean-square errors. // Root-mean-square errors.
// shape: ({... ,} 1) // shape: ({... ,} 1)
template <class A> template <class C>
void Evaluator<A>::calc_RMSE() void Evaluator<C>::calc_RMSE()
{ {
// compute RMSE // compute RMSE
RMSE = xt::sqrt(xt::nanmean(quad_err, -1, xt::keep_dims)); RMSE = xt::sqrt(xt::nanmean(quad_err, -1, xt::keep_dims));
...@@ -272,12 +272,12 @@ namespace evalhyd ...@@ -272,12 +272,12 @@ namespace evalhyd
// \assign NSE: // \assign NSE:
// Nash-Sutcliffe efficiencies. // Nash-Sutcliffe efficiencies.
// shape: ({... ,} 1) // shape: ({... ,} 1)
template <class A> template <class C>
void Evaluator<A>::calc_NSE() void Evaluator<C>::calc_NSE()
{ {
// compute squared errors operands // compute squared errors operands
A f_num = xt::nansum(quad_err, -1, xt::keep_dims); C f_num = xt::nansum(quad_err, -1, xt::keep_dims);
A f_den = xt::nansum(quad_obs, -1, xt::keep_dims); C f_den = xt::nansum(quad_obs, -1, xt::keep_dims);
// compute NSE // compute NSE
NSE = 1 - (f_num / f_den); NSE = 1 - (f_num / f_den);
...@@ -306,8 +306,8 @@ namespace evalhyd ...@@ -306,8 +306,8 @@ namespace evalhyd
// \assign KGE: // \assign KGE:
// Kling-Gupta efficiencies. // Kling-Gupta efficiencies.
// shape: ({... ,} 1) // shape: ({... ,} 1)
template <class A> template <class C>
void Evaluator<A>::calc_KGE() void Evaluator<C>::calc_KGE()
{ {
// calculate error in spread of flow $alpha$ // calculate error in spread of flow $alpha$
auto alpha = detail::std_dev(q_prd, mean_prd) auto alpha = detail::std_dev(q_prd, mean_prd)
...@@ -344,8 +344,8 @@ namespace evalhyd ...@@ -344,8 +344,8 @@ namespace evalhyd
// \assign KGEPRIME: // \assign KGEPRIME:
// Modified Kling-Gupta efficiencies. // Modified Kling-Gupta efficiencies.
// shape: ({... ,} 1) // shape: ({... ,} 1)
template <class A> template <class C>
void Evaluator<A>::calc_KGEPRIME() void Evaluator<C>::calc_KGEPRIME()
{ {
// calculate error in spread of flow $gamma$ // calculate error in spread of flow $gamma$
auto gamma = (detail::std_dev(q_prd, mean_prd) / mean_prd) auto gamma = (detail::std_dev(q_prd, mean_prd) / mean_prd)
......
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