From 7ebf9d232615059a1159a3e86f6b0a271339c4ef Mon Sep 17 00:00:00 2001 From: vagudets Date: Fri, 14 Jun 2024 12:20:05 +0200 Subject: [PATCH] Fix bug in loading daily data when frequency is specified as 'daily'; modify unit test to consider this case --- modules/Loading/R/load_seasonal.R | 7 ++++--- modules/Loading/R/load_tas_tos.R | 22 +++++++++++++--------- tests/recipes/recipe-seasonal_daily_1.yml | 2 +- 3 files changed, 18 insertions(+), 13 deletions(-) diff --git a/modules/Loading/R/load_seasonal.R b/modules/Loading/R/load_seasonal.R index 42b74b16..7e0867e4 100644 --- a/modules/Loading/R/load_seasonal.R +++ b/modules/Loading/R/load_seasonal.R @@ -71,8 +71,8 @@ load_seasonal <- function(recipe) { } else if (store.freq == "monthly_mean") { frequency <- "monthly_mean" } - var_dir_obs <- reference_descrip[[store.freq]][variable] - var_dir_exp <- exp_descrip[[store.freq]][variable] + var_dir_obs <- reference_descrip[[frequency]][variable] + var_dir_exp <- exp_descrip[[frequency]][variable] # ----------- obs.path <- paste0(archive$src, obs.dir, "$var_dir$", @@ -97,7 +97,8 @@ load_seasonal <- function(recipe) { } else { split_multiselected_dims = FALSE } - + + browser() # Load hindcast #------------------------------------------------------------------- hcst <- Start(dat = hcst.path, diff --git a/modules/Loading/R/load_tas_tos.R b/modules/Loading/R/load_tas_tos.R index ea231b56..07f746cb 100644 --- a/modules/Loading/R/load_tas_tos.R +++ b/modules/Loading/R/load_tas_tos.R @@ -40,30 +40,34 @@ load_tas_tos <- function(recipe) { idxs$hcst <- get_timeidx(sdates$hcst, recipe$Analysis$Time$ftime_min, recipe$Analysis$Time$ftime_max, - time_freq=store.freq) + time_freq = store.freq) if (!(is.null(sdates$fcst))) { idxs$fcst <- get_timeidx(sdates$fcst, recipe$Analysis$Time$ftime_min, recipe$Analysis$Time$ftime_max, - time_freq=store.freq) + time_freq = store.freq) } # get esarchive datasets dict: archive <- read_yaml("conf/archive.yml")[[recipe$Run$filesystem]] exp_descrip <- archive$System[[exp.name]] - freq.hcst <- unlist(exp_descrip[[store.freq]][variable[1]]) reference_descrip <- archive$Reference[[ref.name]] - freq.obs <- unlist(reference_descrip[[store.freq]][variable[1]]) obs.dir <- reference_descrip$src fcst.dir <- exp_descrip$src hcst.dir <- exp_descrip$src fcst.nmember <- exp_descrip$nmember$fcst hcst.nmember <- exp_descrip$nmember$hcst + + if (store.freq %in% c("daily", "daily_mean")) { + frequency <- "daily_mean" + } else if (store.freq == "monthly_mean") { + frequency <- "monthly_mean" + } - var_dir_obs <- reference_descrip[[store.freq]][variable] - var_dir_exp <- exp_descrip[[store.freq]][variable] + var_dir_obs <- reference_descrip[[frequency]][variable] + var_dir_exp <- exp_descrip[[frequency]][variable] # ----------- obs.path <- paste0(archive$src, obs.dir, "$var_dir$", @@ -256,7 +260,7 @@ load_tas_tos <- function(recipe) { dim(dates) <- hcst$dims[c("sday", "sweek", "syear", "time")] # Separate Start() call for monthly vs daily data - if (store.freq == "monthly_mean") { + if (frequency == "monthly_mean") { dates_file <- format(as.Date(dates, '%Y%m%d'), "%Y%m") dim(dates_file) <- dim(dates) @@ -265,7 +269,7 @@ load_tas_tos <- function(recipe) { # Define variables for blended tas-tos datasets if (recipe$Analysis$Datasets$Reference$name == 'BEST'){ variable <- 'tas' - var_dir_obs <- reference_descrip[[store.freq]][variable] + var_dir_obs <- reference_descrip[[frequency]][variable] } obs <- Start(dat = obs.path, @@ -287,7 +291,7 @@ load_tas_tos <- function(recipe) { retrieve = TRUE) - } else if (store.freq == "daily_mean") { + } else if (frequency == "daily_mean") { # Get year and month for file_date dates_file <- sapply(dates, format, '%Y%m') diff --git a/tests/recipes/recipe-seasonal_daily_1.yml b/tests/recipes/recipe-seasonal_daily_1.yml index 42603c2c..4378730f 100644 --- a/tests/recipes/recipe-seasonal_daily_1.yml +++ b/tests/recipes/recipe-seasonal_daily_1.yml @@ -4,7 +4,7 @@ Description: Analysis: Horizon: Seasonal Variables: - - {name: tas, freq: daily_mean} + - {name: tas, freq: daily} Datasets: System: - name: ECMWF-SEAS5 -- GitLab