diff --git a/modules/Crossval/Crossval_metrics.R b/modules/Crossval/Crossval_metrics.R index 4c48ad8e62e75c2548a92ad625a8bed960936028..af1a442509e6723477012ed0e30fc77b5a82db05 100644 --- a/modules/Crossval/Crossval_metrics.R +++ b/modules/Crossval/Crossval_metrics.R @@ -9,6 +9,7 @@ source("modules/Crossval/R/tmp/Corr.R") source("modules/Crossval/R/tmp/Bias.R") source("modules/Crossval/R/tmp/SprErr.R") source("modules/Crossval/R/tmp/Eno.R") +source("modules/Crossval/R/tmp/CST_MergeDims.R") ## data_crossval is the result from function full_crossval_anomalies or similar. ## this is a list with the required elements: diff --git a/modules/Saving/R/get_times.R b/modules/Saving/R/get_times.R index 52d773c5c57b521ac5d08a2a70196e430413bdf3..dd335386dfa4245c978e467931ac690f678879ac 100644 --- a/modules/Saving/R/get_times.R +++ b/modules/Saving/R/get_times.R @@ -12,13 +12,13 @@ # Generate time dimensions and the corresponding metadata. ## TODO: This addresses subseasonal case, but does not work well ## when there is missing data. - if (any(c("sweek", "sday") %in% names(dim(data_cube$attrs$Dates)))) { - central_day <- (dim(data_cube$attrs$Dates)[["sday"]] + 1) / 2 - central_week <- (dim(data_cube$attrs$Dates)[["sweek"]] + 1) / 2 + for (aux_dim in c("sweek", "sday")) { + if (aux_dim %in% names(dim(data_cube$attrs$Dates))) { + central_value <- (dim(data_cube$attrs$Dates)[[aux_dim]] + 1) / 2 data_cube$attrs$Dates <- Subset(data_cube$attrs$Dates, - along = c("sday", "sweek"), - indices = list(sday = central_day, - sweek = central_week)) + along = c(aux_dim), + indices = list(central_value)) + } } dates <- as.PCICt(ClimProjDiags::Subset(data_cube$attrs$Dates, 'syear', 1), cal = calendar) diff --git a/modules/Saving/R/save_metrics.R b/modules/Saving/R/save_metrics.R index 725135f96e6bfe2163862b0e9f071b34e2dbda94..26295b372415352d53ad37d1108e086d81d890ba 100644 --- a/modules/Saving/R/save_metrics.R +++ b/modules/Saving/R/save_metrics.R @@ -56,6 +56,8 @@ save_metrics <- function(recipe, } else { fcst.sdate <- paste0("1970", sprintf('%02d', init_month), '01') } + } else if (fcst.horizon == 'subseasonal') { + fcst.sdate <- as.character(recipe$Analysis$Time$sdate) } else { if (!is.null(recipe$Analysis$Time$fcst_year)) { fcst.sdate <- paste0(recipe$Analysis$Time$fcst_year,