From d144517e56acb7d36c08038c0363dca9222c10a6 Mon Sep 17 00:00:00 2001 From: THEERTHA KARIYATHAN Date: Tue, 4 Feb 2025 15:26:31 +0100 Subject: [PATCH 1/2] ref_period and NA bug --- R/PeriodStandardization.R | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/R/PeriodStandardization.R b/R/PeriodStandardization.R index b71270f..d9cedb2 100644 --- a/R/PeriodStandardization.R +++ b/R/PeriodStandardization.R @@ -87,7 +87,7 @@ #'class(data) <- 's2dv_cube' #'SPEI <- CST_PeriodStandardization(data = data) #'@export -CST_PeriodStandardization <- function(data, data_cor = NULL, time_dim = 'syear', +CST_PeriodStandardization <- function(data, data_cor = NULL, time_dim = 'syear', dates = NULL, leadtime_dim = 'time', memb_dim = 'ensemble', ref_period = NULL, handle_infinity = FALSE, @@ -125,7 +125,10 @@ CST_PeriodStandardization <- function(data, data_cor = NULL, time_dim = 'syear', if (is.null(data_cor)) { data$data <- std - data$attrs$Variable$varName <- paste0(data$attrs$Variable$varName, ' standardized') + data_longname <- data$attrs$Variable$metadata[[data$attrs$Variable$varName]]$longname + if (!is.null(data_longname)) { + data$attrs$Variable$metadata[[data$attrs$Variable$varName]]$longname <- paste(data_longname, 'standardized') + } if (return_params) { return(list(spei = data, params = params)) } else { @@ -133,7 +136,10 @@ CST_PeriodStandardization <- function(data, data_cor = NULL, time_dim = 'syear', } } else { data_cor$data <- std - data_cor$attrs$Variable$varName <- paste0(data_cor$attrs$Variable$varName, ' standardized') + data_cor_longname <- data_cor$attrs$Variable$metadata[[data_cor$attrs$Variable$varName]]$longname + if (!is.null(data_cor_longname)) { + data_cor$attrs$Variable$metadata[[data_cor$attrs$Variable$varName]]$longname <- paste(data_cor_longname, 'standardized') + } data_cor$attrs$Datasets <- c(data_cor$attrs$Datasets, data$attrs$Datasets) data_cor$attrs$source_files <- c(data_cor$attrs$source_files, data$attrs$source_files) return(data_cor) @@ -611,8 +617,8 @@ PeriodStandardization <- function(data, data_cor = NULL, dates = NULL, } if (handle_infinity) { # could also use "param_error" ?; we are giving it the min/max value of the grid point - spei_mod[is.infinite(spei_mod) & spei_mod < 0] <- min(spei_mod[!is.infinite(spei_mod)]) - spei_mod[is.infinite(spei_mod) & spei_mod > 0] <- max(spei_mod[!is.infinite(spei_mod)]) + spei_mod[is.infinite(spei_mod) & spei_mod < 0] <- min(spei_mod[!is.infinite(spei_mod)],na.rm = T) + spei_mod[is.infinite(spei_mod) & spei_mod > 0] <- max(spei_mod[!is.infinite(spei_mod)],na.rm = T) } if (return_params) { return(list(spei = spei_mod, params = params_result)) @@ -644,4 +650,4 @@ PeriodStandardization <- function(data, data_cor = NULL, dates = NULL, } else { return(NA) } -} \ No newline at end of file +} -- GitLab From f4897b6b55571d197b2ceb32db5fdf95f63997d3 Mon Sep 17 00:00:00 2001 From: THEERTHA KARIYATHAN Date: Fri, 7 Feb 2025 12:29:27 +0100 Subject: [PATCH 2/2] na.rm in max/min() --- .Rbuildignore | 2 ++ .gitignore | 1 + R/PeriodStandardization.R | 6 +++--- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.Rbuildignore b/.Rbuildignore index 2a2a753..da90668 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -12,3 +12,5 @@ ^cran-comments\.md$ ./vignettes/*.md ^inst/doc/paper-figure-PlotForecastPDF\.R$ +^.*\.Rproj$ +^\.Rproj\.user$ diff --git a/.gitignore b/.gitignore index 23a5603..022a306 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,4 @@ Rplots.pdf *.RData !data/*.RData .\.nfs* +.Rproj.user diff --git a/R/PeriodStandardization.R b/R/PeriodStandardization.R index d9cedb2..dcef847 100644 --- a/R/PeriodStandardization.R +++ b/R/PeriodStandardization.R @@ -87,7 +87,7 @@ #'class(data) <- 's2dv_cube' #'SPEI <- CST_PeriodStandardization(data = data) #'@export -CST_PeriodStandardization <- function(data, data_cor = NULL, time_dim = 'syear', dates = NULL, +CST_PeriodStandardization <- function(data, data_cor = NULL, time_dim = 'syear', leadtime_dim = 'time', memb_dim = 'ensemble', ref_period = NULL, handle_infinity = FALSE, @@ -617,8 +617,8 @@ PeriodStandardization <- function(data, data_cor = NULL, dates = NULL, } if (handle_infinity) { # could also use "param_error" ?; we are giving it the min/max value of the grid point - spei_mod[is.infinite(spei_mod) & spei_mod < 0] <- min(spei_mod[!is.infinite(spei_mod)],na.rm = T) - spei_mod[is.infinite(spei_mod) & spei_mod > 0] <- max(spei_mod[!is.infinite(spei_mod)],na.rm = T) + spei_mod[is.infinite(spei_mod) & spei_mod < 0] <- min(spei_mod[!is.infinite(spei_mod)],na.rm = TRUE) + spei_mod[is.infinite(spei_mod) & spei_mod > 0] <- max(spei_mod[!is.infinite(spei_mod)],na.rm = TRUE) } if (return_params) { return(list(spei = spei_mod, params = params_result)) -- GitLab