From 479045e0962cd1f5572d1ba0bb40b82bdf4556e7 Mon Sep 17 00:00:00 2001 From: vagudets Date: Wed, 2 Apr 2025 11:22:18 +0200 Subject: [PATCH] Bugfix: Ensure daily max/min variables (e.g. tasmin, tasmax) are loaded correctly with corresponding observations --- conf/archive_seasonal.yml | 3 ++- modules/Loading/R/get_timeidx.R | 5 +++-- modules/Loading/R/load_seasonal.R | 7 +++---- modules/Loading/R/load_subseasonal.R | 4 ++-- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/conf/archive_seasonal.yml b/conf/archive_seasonal.yml index c2c16d09..520ceffc 100644 --- a/conf/archive_seasonal.yml +++ b/conf/archive_seasonal.yml @@ -259,7 +259,8 @@ esarchive: daily_mean: {"tas":"daily_mean/tas_f6h/", "prlr":"daily/prlr_s0-24h/", "sfcWind":"daily_mean/sfcWind_f6h/", "uas":"daily_mean/uas_f6h/", "vas":"daily_mean/vas_f6h/", - "psl":"daily_mean/psl_f6h/", "tdps":"daily_mean/tdps_f6h/"} + "psl":"daily_mean/psl_f6h/", "tdps":"daily_mean/tdps_f6h/", + "tasmin":"daily/tasmin/", "tasmax":"daily/tasmax/"} monthly_mean: {"tas":"monthly_mean/tas_f6h/", "rsds":"monthly_mean/rsds_s0-24h/", "prlr":"monthly_mean/prlr_s0-24h/", "sfcWind":"monthly_mean/sfcWind_f6h/", "tasmin":"monthly_mean/tasmin_f24h/", "tasmax":"monthly_mean/tasmax_f24h/", diff --git a/modules/Loading/R/get_timeidx.R b/modules/Loading/R/get_timeidx.R index d2c66dde..dfd23ee0 100644 --- a/modules/Loading/R/get_timeidx.R +++ b/modules/Loading/R/get_timeidx.R @@ -32,13 +32,14 @@ get_timeidx <- function(sdates, ltmin, ltmax, #sday = 1, sweek = 1, for (sdate in 1:length(sdates)) { - day_seq <- seq(idx_min[sdate], idx_max[sdate], by='days') + day_seq <- seq(idx_min[sdate], idx_max[sdate], by = 'days') indxs[sdate,] <- day_seq[!(format(day_seq, "%m%d") == "0229")] } + # browser() indxs <- as.POSIXct(indxs*86400, tz = 'UTC', origin = '1970-01-01') lubridate::hour(indxs) <- 12 - lubridate::minute(indxs) <- 00 + lubridate::minute(indxs) <- 01 dim(indxs) <- c(file_date = length(sdates), time = time_length) diff --git a/modules/Loading/R/load_seasonal.R b/modules/Loading/R/load_seasonal.R index 70b7d534..919d5424 100644 --- a/modules/Loading/R/load_seasonal.R +++ b/modules/Loading/R/load_seasonal.R @@ -271,15 +271,14 @@ load_seasonal <- function(recipe) { # Set hour to 12:00 to ensure correct date retrieval for daily data lubridate::hour(dates) <- 12 lubridate::minute(dates) <- 00 - # Restore correct dimensions - dim(dates) <- dim(dates_file) - + dim(idxs$hcst) <- dim(dates_file) + obs <- Start(dat = obs.path, var = variable, var_dir = var_dir_obs, var_dir_depends = 'var', file_date = sort(unique(dates_file)), - time = dates, + time = idxs$hcst, time_var = 'time', time_across = 'file_date', merge_across_dims = TRUE, diff --git a/modules/Loading/R/load_subseasonal.R b/modules/Loading/R/load_subseasonal.R index 9fa30202..da316a61 100644 --- a/modules/Loading/R/load_subseasonal.R +++ b/modules/Loading/R/load_subseasonal.R @@ -265,14 +265,14 @@ load_subseasonal <- function(recipe) { lubridate::hour(dates) <- 12 lubridate::minute(dates) <- 00 # Restore correct dimensions - dim(dates) <- dim(dates_file) + dim(idxs$hcst) <- dim(dates_file) obs <- Start(dat = obs.path, var = variable, var_dir = var_dir_obs, var_dir_depends = 'var', file_date = sort(unique(dates_file)), - time = dates, + time = idxs$hcst, time_var = 'time', time_across = 'file_date', merge_across_dims = TRUE, -- GitLab