From 905db76d6eb1a5ef06e9faf4c6475f422e3a424c Mon Sep 17 00:00:00 2001 From: Delaigue Olivier <olivier.delaigue@irstea.priv> Date: Wed, 6 Mar 2019 08:41:11 +0100 Subject: [PATCH] v1.2.7.10 UPDATE: ErrorCrit_* fun can now run with SCA and SWE --- DESCRIPTION | 2 +- NEWS.rmd | 8 +++++--- R/ErrorCrit_KGE.R | 10 +++++++++- R/ErrorCrit_KGE2.R | 10 +++++++++- R/ErrorCrit_NSE.R | 10 +++++++++- R/ErrorCrit_RMSE.R | 10 +++++++++- 6 files changed, 42 insertions(+), 8 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 6fb0b7d4..125da67c 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Package: airGR Type: Package Title: Suite of GR Hydrological Models for Precipitation-Runoff Modelling -Version: 1.2.7.9 +Version: 1.2.7.10 Date: 2019-03-06 Authors@R: c( person("Laurent", "Coron", role = c("aut", "trl"), comment = c(ORCID = "0000-0002-1503-6204")), diff --git a/NEWS.rmd b/NEWS.rmd index 48f4ef9f..81a14a71 100644 --- a/NEWS.rmd +++ b/NEWS.rmd @@ -13,7 +13,7 @@ output: -### 1.2.7.9 Release Notes (2019-03-06) +### 1.2.7.10 Release Notes (2019-03-06) @@ -32,7 +32,7 @@ output: - <code>CreateInputsCrit()</code> now presents a <code>varObs</code> argument in order to prepare an <code>InputsCrit</code> object in order run a criterion on other variable than observed discharges with the <code>ErrorCrit()</code> function (e.g. SCA, SWE). -- <code>CreateInputsCrit()</code> now presents a <code>weights</code> argument in order to prepare an <code>InputsCrit</code> object in order to compute a composite criterion (<code>Compo</code> class) with <code>ErrorCrit()</code> or <code>Calibration_Michel()</code>. +- <code>CreateInputsCrit()</code> now presents a <code>weights</code> argument in order to prepare an <code>InputsCrit</code> object in order to compute a composite criterion (<code>Compo</code> class) with <code>ErrorCrit()</code> or <code>Calibration_Michel()</code>. - <code>CreateInputsCrit()</code> now presents a <code>warnings</code> argument to replace the verbose action (the <code>verbose</code> argument is keep to print messages). @@ -45,7 +45,9 @@ output: - <code>ErrorCrit_*()</code> functions now return an error message if the <code>InputsCrit</code> object is of class <code>Multi</code> or <code>Compo</code>. -- <code>ErrorCrit()</code> function can now run on a multiple <code>InputsCrit</code>. It returns a list of <code>InputsCrit</code>. +- <code>ErrorCrit()</code> function can now run on a multiple or a composite <code>InputsCrit</code>. It returns a list of <code>InputsCrit</code>. + +- <code>ErrorCrit()</code> and <code>ErrorCrit_*()</code> functions can now run on Q, SCA or SWE. - <code>Calibration_Michel()</code> function can now run on a composite <code>InputsCrit</code>. It returns a composite value of error and the list of <code>InputsCrit</code> used to calculate this composite criterion. diff --git a/R/ErrorCrit_KGE.R b/R/ErrorCrit_KGE.R index c5796743..219e2596 100644 --- a/R/ErrorCrit_KGE.R +++ b/R/ErrorCrit_KGE.R @@ -41,7 +41,15 @@ ErrorCrit_KGE <- function(InputsCrit, OutputsModel, warnings = TRUE, verbose = T ##Data_preparation_______________________________ VarObs <- InputsCrit$obs VarObs[!InputsCrit$BoolCrit] <- NA - VarSim <- OutputsModel$Qsim + if (InputsCrit$varObs == "Q") { + VarSim <- OutputsModel$Qsim + } + if (InputsCrit$varObs == "SCA") { + VarSim <- rowMeans(sapply(OutputsModel$CemaNeigeLayers[InputsCrit$groupLayer], FUN = "[[", "Gratio")) + } + if (InputsCrit$varObs == "SWE") { + VarSim <- rowMeans(sapply(OutputsModel$CemaNeigeLayers[InputsCrit$groupLayer], FUN = "[[", "SnowPack")) + } VarSim[!InputsCrit$BoolCrit] <- NA ##Data_transformation diff --git a/R/ErrorCrit_KGE2.R b/R/ErrorCrit_KGE2.R index 868a614e..156a58b2 100644 --- a/R/ErrorCrit_KGE2.R +++ b/R/ErrorCrit_KGE2.R @@ -41,7 +41,15 @@ ErrorCrit_KGE2 <- function(InputsCrit, OutputsModel, warnings = TRUE, verbose = ##Data_preparation_______________________________ VarObs <- InputsCrit$obs VarObs[!InputsCrit$BoolCrit] <- NA - VarSim <- OutputsModel$Qsim + if (InputsCrit$varObs == "Q") { + VarSim <- OutputsModel$Qsim + } + if (InputsCrit$varObs == "SCA") { + VarSim <- rowMeans(sapply(OutputsModel$CemaNeigeLayers[InputsCrit$groupLayer], FUN = "[[", "Gratio")) + } + if (InputsCrit$varObs == "SWE") { + VarSim <- rowMeans(sapply(OutputsModel$CemaNeigeLayers[InputsCrit$groupLayer], FUN = "[[", "SnowPack")) + } VarSim[!InputsCrit$BoolCrit] <- NA ##Data_transformation diff --git a/R/ErrorCrit_NSE.R b/R/ErrorCrit_NSE.R index db3b8ad3..35a3126d 100644 --- a/R/ErrorCrit_NSE.R +++ b/R/ErrorCrit_NSE.R @@ -41,7 +41,15 @@ ErrorCrit_NSE <- function(InputsCrit, OutputsModel, warnings = TRUE, verbose = T ##Data_preparation_______________________________ VarObs <- InputsCrit$obs VarObs[!InputsCrit$BoolCrit] <- NA - VarSim <- OutputsModel$Qsim + if (InputsCrit$varObs == "Q") { + VarSim <- OutputsModel$Qsim + } + if (InputsCrit$varObs == "SCA") { + VarSim <- rowMeans(sapply(OutputsModel$CemaNeigeLayers[InputsCrit$groupLayer], FUN = "[[", "Gratio")) + } + if (InputsCrit$varObs == "SWE") { + VarSim <- rowMeans(sapply(OutputsModel$CemaNeigeLayers[InputsCrit$groupLayer], FUN = "[[", "SnowPack")) + } VarSim[!InputsCrit$BoolCrit] <- NA ##Data_transformation diff --git a/R/ErrorCrit_RMSE.R b/R/ErrorCrit_RMSE.R index fd3fa6d4..1fef793f 100644 --- a/R/ErrorCrit_RMSE.R +++ b/R/ErrorCrit_RMSE.R @@ -41,7 +41,15 @@ ErrorCrit_RMSE <- function(InputsCrit, OutputsModel, warnings = TRUE, verbose = ##Data_preparation_______________________________ VarObs <- InputsCrit$obs VarObs[!InputsCrit$BoolCrit] <- NA - VarSim <- OutputsModel$Qsim + if (InputsCrit$varObs == "Q") { + VarSim <- OutputsModel$Qsim + } + if (InputsCrit$varObs == "SCA") { + VarSim <- rowMeans(sapply(OutputsModel$CemaNeigeLayers[InputsCrit$groupLayer], FUN = "[[", "Gratio")) + } + if (InputsCrit$varObs == "SWE") { + VarSim <- rowMeans(sapply(OutputsModel$CemaNeigeLayers[InputsCrit$groupLayer], FUN = "[[", "SnowPack")) + } VarSim[!InputsCrit$BoolCrit] <- NA ##Data_transformation -- GitLab