From 3565d8b53bc19c43d12c05474e62c05357e3065c Mon Sep 17 00:00:00 2001 From: Delaigue Olivier <olivier.delaigue@irstea.priv> Date: Wed, 17 Apr 2019 18:21:04 +0200 Subject: [PATCH] v1.2.14.12 CLEAN: simplified code of the ErrorCrit_* funs --- DESCRIPTION | 2 +- NEWS.rmd | 2 +- R/ErrorCrit_KGE.R | 39 +++++++++++++-------------------------- R/ErrorCrit_KGE2.R | 37 +++++++++++++------------------------ R/ErrorCrit_NSE.R | 6 +++--- R/ErrorCrit_RMSE.R | 6 +++--- 6 files changed, 34 insertions(+), 58 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 945d5c5b..f90d79b5 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.14.11 +Version: 1.2.14.12 Date: 2019-04-17 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 f73e72a6..a977e3be 100644 --- a/NEWS.rmd +++ b/NEWS.rmd @@ -14,7 +14,7 @@ output: -### 1.2.14.11 Release Notes (2019-04-17) +### 1.2.14.12 Release Notes (2019-04-17) #### New features diff --git a/R/ErrorCrit_KGE.R b/R/ErrorCrit_KGE.R index fcba7fd7..008e64e9 100644 --- a/R/ErrorCrit_KGE.R +++ b/R/ErrorCrit_KGE.R @@ -7,25 +7,18 @@ ErrorCrit_KGE <- function(InputsCrit, OutputsModel, warnings = TRUE, verbose = T EC <- .ErrorCrit(InputsCrit = InputsCrit, Crit = "KGE", OutputsModel = OutputsModel, warnings = warnings) - if (!EC$CritCompute) { - CritValue <- NA - SubCritValues <- NA - SubCritNames <- NA - } else { + CritValue <- NA + SubCritValues <- rep(NA, 3) + SubCritNames <- c("r", "alpha", "beta") + SubCritPrint <- rep(NA, 3) + + if (EC$CritCompute) { ## Other variables preparation meanVarObs <- mean(EC$VarObs[!EC$TS_ignore]) meanVarSim <- mean(EC$VarSim[!EC$TS_ignore]) - iCrit <- 0 - SubCritPrint <- NULL - SubCritNames <- NULL - SubCritValues <- NULL - ## SubErrorCrit KGE rPearson - iCrit <- iCrit + 1 - SubCritPrint[iCrit] <- paste0(EC$CritName, " cor(sim, obs, \"pearson\") =") - SubCritValues[iCrit] <- NA - SubCritNames[iCrit] <- "r" + SubCritPrint[1L] <- paste0(EC$CritName, " cor(sim, obs, \"pearson\") =") Numer <- sum((EC$VarObs[!EC$TS_ignore] - meanVarObs) * (EC$VarSim[!EC$TS_ignore] - meanVarSim)) Deno1 <- sqrt(sum((EC$VarObs[!EC$TS_ignore] - meanVarObs) ^ 2)) @@ -41,14 +34,11 @@ ErrorCrit_KGE <- function(InputsCrit, OutputsModel, warnings = TRUE, verbose = T Crit <- Numer / (Deno1 * Deno2) } if (is.numeric(Crit) & is.finite(Crit)) { - SubCritValues[iCrit] <- Crit + SubCritValues[1L] <- Crit } ## SubErrorCrit KGE alpha - iCrit <- iCrit + 1 - SubCritPrint[iCrit] <- paste0(EC$CritName, " sd(sim)/sd(obs) =") - SubCritValues[iCrit] <- NA - SubCritNames[iCrit] <- "alpha" + SubCritPrint[2L] <- paste0(EC$CritName, " sd(sim)/sd(obs) =") Numer <- sd(EC$VarSim[!EC$TS_ignore]) Denom <- sd(EC$VarObs[!EC$TS_ignore]) @@ -59,14 +49,11 @@ ErrorCrit_KGE <- function(InputsCrit, OutputsModel, warnings = TRUE, verbose = T Crit <- Numer / Denom } if (is.numeric(Crit) & is.finite(Crit)) { - SubCritValues[iCrit] <- Crit + SubCritValues[2L] <- Crit } ## SubErrorCrit KGE beta - iCrit <- iCrit + 1 - SubCritPrint[iCrit] <- paste0(EC$CritName, " mean(sim)/mean(obs) =") - SubCritValues[iCrit] <- NA - SubCritNames[iCrit] <- "beta" + SubCritPrint[3L] <- paste0(EC$CritName, " mean(sim)/mean(obs) =") if (meanVarSim == 0 & meanVarObs == 0) { Crit <- 1 @@ -74,12 +61,12 @@ ErrorCrit_KGE <- function(InputsCrit, OutputsModel, warnings = TRUE, verbose = T Crit <- meanVarSim / meanVarObs } if (is.numeric(Crit) & is.finite(Crit)) { - SubCritValues[iCrit] <- Crit + SubCritValues[3L] <- Crit } ## ErrorCrit if (sum(is.na(SubCritValues)) == 0) { - CritValue <- (1 - sqrt((SubCritValues[1] - 1)^2 + (SubCritValues[2] - 1)^2 + (SubCritValues[3] - 1)^2)) + CritValue <- (1 - sqrt((SubCritValues[1L] - 1)^2 + (SubCritValues[2L] - 1)^2 + (SubCritValues[3L] - 1)^2)) } ## Verbose diff --git a/R/ErrorCrit_KGE2.R b/R/ErrorCrit_KGE2.R index e2f51e28..a9313d90 100644 --- a/R/ErrorCrit_KGE2.R +++ b/R/ErrorCrit_KGE2.R @@ -7,23 +7,18 @@ ErrorCrit_KGE2 <- function(InputsCrit, OutputsModel, warnings = TRUE, verbose = EC <- .ErrorCrit(InputsCrit = InputsCrit, Crit = "KGE2", OutputsModel = OutputsModel, warnings = warnings) - if (!EC$CritCompute) { - CritValue <- NA - } else { + CritValue <- NA + SubCritValues <- rep(NA, 3) + SubCritNames <- c("r", "gamma", "beta") + SubCritPrint <- rep(NA, 3) + + if (EC$CritCompute) { ## Other variables preparation meanVarObs <- mean(EC$VarObs[!EC$TS_ignore]) meanVarSim <- mean(EC$VarSim[!EC$TS_ignore]) - iCrit <- 0 - SubCritPrint <- NULL - SubCritNames <- NULL - SubCritValues <- NULL - ## SubErrorCrit KGE rPearson - iCrit <- iCrit + 1 - SubCritPrint[iCrit] <- paste0(EC$CritName, " cor(sim, obs, \"pearson\") =") - SubCritValues[iCrit] <- NA - SubCritNames[iCrit] <- "r" + SubCritPrint[1L] <- paste0(EC$CritName, " cor(sim, obs, \"pearson\") =") Numer <- sum((EC$VarObs[!EC$TS_ignore] - meanVarObs) * (EC$VarSim[!EC$TS_ignore] - meanVarSim)) Deno1 <- sqrt(sum((EC$VarObs[!EC$TS_ignore] - meanVarObs)^2)) @@ -39,14 +34,11 @@ ErrorCrit_KGE2 <- function(InputsCrit, OutputsModel, warnings = TRUE, verbose = Crit <- Numer / (Deno1 * Deno2) } if (is.numeric(Crit) & is.finite(Crit)) { - SubCritValues[iCrit] <- Crit + SubCritValues[1L] <- Crit } ## SubErrorCrit KGE gamma - iCrit <- iCrit + 1 - SubCritPrint[iCrit] <- paste0(EC$CritName, " cv(sim)/cv(obs) =") - SubCritValues[iCrit] <- NA - SubCritNames[iCrit] <- "gamma" + SubCritPrint[2L] <- paste0(EC$CritName, " cv(sim)/cv(obs) =") if (meanVarSim == 0) { if (sd(EC$VarSim[!EC$TS_ignore]) == 0) { @@ -74,14 +66,11 @@ ErrorCrit_KGE2 <- function(InputsCrit, OutputsModel, warnings = TRUE, verbose = Crit <- CVsim / CVobs } if (is.numeric(Crit) & is.finite(Crit)) { - SubCritValues[iCrit] <- Crit + SubCritValues[2L] <- Crit } ## SubErrorCrit KGE beta - iCrit <- iCrit + 1 - SubCritPrint[iCrit] <- paste0(EC$CritName, " mean(sim)/mean(obs) =") - SubCritValues[iCrit] <- NA - SubCritNames[iCrit] <- "beta" + SubCritPrint[3L] <- paste0(EC$CritName, " mean(sim)/mean(obs) =") if (meanVarSim == 0 & meanVarObs == 0) { Crit <- 1 @@ -89,12 +78,12 @@ ErrorCrit_KGE2 <- function(InputsCrit, OutputsModel, warnings = TRUE, verbose = Crit <- meanVarSim / meanVarObs } if (is.numeric(Crit) & is.finite(Crit)) { - SubCritValues[iCrit] <- Crit + SubCritValues[3L] <- Crit } ## ErrorCrit if (sum(is.na(SubCritValues)) == 0) { - CritValue <- (1 - sqrt((SubCritValues[1] - 1)^2 + (SubCritValues[2] - 1)^2 + (SubCritValues[3] - 1)^2)) + CritValue <- (1 - sqrt((SubCritValues[1L] - 1)^2 + (SubCritValues[2L] - 1)^2 + (SubCritValues[3L] - 1)^2)) } ## Verbose diff --git a/R/ErrorCrit_NSE.R b/R/ErrorCrit_NSE.R index 899dcc6f..4a7a3058 100644 --- a/R/ErrorCrit_NSE.R +++ b/R/ErrorCrit_NSE.R @@ -7,9 +7,9 @@ ErrorCrit_NSE <- function(InputsCrit, OutputsModel, warnings = TRUE, verbose = T EC <- .ErrorCrit(InputsCrit = InputsCrit, Crit = "NSE", OutputsModel = OutputsModel, warnings = warnings) - if (!EC$CritCompute) { - CritValue <- NA - } else { + CritValue <- NA + + if (EC$CritCompute) { ## Other variables preparation meanVarObs <- mean(EC$VarObs[!EC$TS_ignore]) meanVarSim <- mean(EC$VarSim[!EC$TS_ignore]) diff --git a/R/ErrorCrit_RMSE.R b/R/ErrorCrit_RMSE.R index 424b0757..6cab33bc 100644 --- a/R/ErrorCrit_RMSE.R +++ b/R/ErrorCrit_RMSE.R @@ -7,9 +7,9 @@ ErrorCrit_RMSE <- function(InputsCrit, OutputsModel, warnings = TRUE, verbose = EC <- .ErrorCrit(InputsCrit = InputsCrit, Crit = "RMSE", OutputsModel = OutputsModel, warnings = warnings) - if (!EC$CritCompute) { - CritValue <- NA - } else { + CritValue <- NA + + if (EC$CritCompute) { ## ErrorCrit Numer <- sum((EC$VarSim - EC$VarObs)^2, na.rm = TRUE) Denom <- sum(!is.na(EC$VarObs)) -- GitLab