#**************************************************************************** # Script to test examples of CST_SaveExp # Eva RifĂ  Rovira # 29/11/2024 #**************************************************************************** # Tests 1: Multidimensional array and Dates, without metadata and coordinates # (1) Minimal use case, without Dates data <- array(1:5, dim = c(sdate = 5, lon = 4, lat = 4)) SaveExp(data, ftime_dim = NULL, memb_dim = NULL, dat_dim = NULL, var_dim = NULL, single_file = TRUE) SaveExp(data, ftime_dim = NULL, memb_dim = NULL, dat_dim = NULL, var_dim = NULL, sdate_dim = NULL, single_file = TRUE) # same result # (2) Forecast time dimension, without Dates data <- array(1:5, dim = c(ftime = 5, lon = 4, lat = 4)) SaveExp(data, ftime_dim = 'ftime', memb_dim = NULL, dat_dim = NULL, var_dim = NULL, sdate_dim = NULL, single_file = TRUE) # (2) Start date dimension, without Dates data <- array(1:5, dim = c(sdate = 5, lon = 4, lat = 4)) SaveExp(data, ftime_dim = NULL, memb_dim = NULL, dat_dim = NULL, var_dim = NULL, sdate_dim = 'sdate', single_file = TRUE) # (3) Only forecast time dimension (no sdate), with Dates data <- array(1:5, dim = c(ftime = 5, lon = 4, lat = 4)) dates <- c('20000101', '20010102', '20020103', '20030104', '20040105') dates <- as.Date(dates, format = "%Y%m%d", tz = "UTC") dim(dates) <- c(ftime = 5) SaveExp(data, ftime_dim = 'ftime', memb_dim = NULL, dat_dim = NULL, var_dim = NULL, sdate_dim = NULL, Dates = dates, single_file = FALSE) # For this case we have the same result using: single_file = FALSE /TRUE. # (4) Forecast time and 1 sdate, with Dates data <- array(1:5, dim = c(sdate = 1, ftime = 5, lon = 4, lat = 4)) dates <- c('20000101', '20010102', '20020103', '20030104', '20040105') dates <- as.Date(dates, format = "%Y%m%d", tz = "UTC") dim(dates) <- c(sdate = 1, ftime = 5) SaveExp(data, ftime_dim = 'ftime', memb_dim = NULL, dat_dim = NULL, var_dim = NULL, sdate_dim = 'sdate', Dates = dates, single_file = TRUE) SaveExp(data, ftime_dim = 'ftime', memb_dim = NULL, dat_dim = NULL, var_dim = NULL, sdate_dim = 'sdate', Dates = dates, single_file = FALSE) ################################################################################ # Tests 2: Test sample data from CSTools # (a) Data loaded with Start # (1) lonlat_temp_st$exp in a single file with units 'hours since' data <- lonlat_temp_st$exp CST_SaveExp(data = data, ftime_dim = 'ftime', var_dim = 'var', dat_dim = 'dataset', sdate_dim = 'sdate', single_file = TRUE) # Now we read the output with Start: sdate <- as.vector(lonlat_temp_st$exp$coords$sdate) path <- paste0(getwd(),"/$var$_", sdate[1], "_", sdate[length(sdate)], ".nc") out <- Start(dat = path, var = 'tas', lon = 'all', lat = 'all', ftime = 'all', sdate = 'all', member = 'all', return_vars = list(lon = 'dat', lat = 'dat', ftime = NULL, sdate = NULL), retrieve = TRUE) attributes(out)$Variables$common$ftime # (2) lonlat_temp_st$exp in a single file with units of time frequency data <- lonlat_temp_st$exp CST_SaveExp(data = data, ftime_dim = 'ftime', var_dim = 'var', dat_dim = 'dataset', sdate_dim = 'sdate', single_file = TRUE, units_hours_since = FALSE) # Now we read the output with Start: sdate <- as.vector(lonlat_temp_st$exp$coords$sdate) path <- paste0(getwd(),"/$var$_", sdate[1], "_", sdate[length(sdate)], ".nc") out <- Start(dat = path, var = 'tas', lon = 'all', lat = 'all', ftime = 'all', sdate = 'all', member = 'all', return_vars = list( lon = 'dat', lat = 'dat', ftime = NULL, sdate = NULL), retrieve = TRUE) attributes(out)$Variables$common$ftime # [1] "1 months" "2 months" "3 months" # (3) lonlat_temp_st$exp in separated files with units of hours since data <- lonlat_temp_st$exp CST_SaveExp(data = data, ftime_dim = 'ftime', var_dim = 'var', dat_dim = 'dataset', sdate_dim = 'sdate', single_file = FALSE) sdate <- as.vector(lonlat_temp_st$exp$coords$sdate) path <- paste0(getwd(),"/dat1/$var$/$var$_$sdate$.nc") out <- Start(dat = path, var = 'tas', sdate = sdate, lon = 'all', lat = 'all', ftime = 'all', member = 'all', return_vars = list(lon = 'dat', lat = 'dat', ftime = NULL), retrieve = TRUE) # (4) lonlat_prec_st$exp in a single file with units of time frequency data <- lonlat_prec_st CST_SaveExp(data = data, ftime_dim = 'ftime', var_dim = 'var', dat_dim = 'dataset', sdate_dim = 'sdate', single_file = TRUE, units_hours_since = FALSE) # Now we read the output with Start: sdate <- as.vector(data$coords$sdate) path <- paste0(getwd(),"/$var$_", sdate[1], "_", sdate[length(sdate)], ".nc") out <- Start(dat = path, var = 'prlr', lon = 'all', lat = 'all', ftime = 'all', sdate = 'all', member = 'all', return_vars = list( lon = 'dat', lat = 'dat', ftime = NULL, sdate = NULL), retrieve = TRUE) attributes(out)$Variables$common$sdate # [1] "1 months" "2 months" "3 months" # (b) Data loaded with Load data <- lonlat_temp$exp data <- lonlat_temp$obs dtaa <- lonlat_prec CST_SaveExp(data = data, ftime_dim = 'ftime', var_dim = NULL, dat_dim = 'dataset', sdate_dim = 'sdate', single_file = TRUE, units_hours_since = FALSE) # Error ################################################################################ # Test 3: Special cases # (1) two variables and two datasets in separated files repos <- "/esarchive/exp/ecmwf/system5_m1/monthly_mean/$var$_f6h/$var$_$sdate$.nc" repos2 <- "/esarchive/exp/ecmwf/system4_m1/monthly_mean/$var$_f6h/$var$_$sdate$.nc" data3 <- Start(dat = list(list(name = 'system4_m1', path = repos2), list(name = 'system5_m1', path = repos)), var = c('tas', 'sfcWind'), sdate = c('20160101', '20170101'), ensemble = indices(1), time = indices(1:2), lat = indices(1:10), lon = indices(1:10), synonims = list(lat = c('lat', 'latitude'), lon = c('lon', 'longitude')), return_vars = list(time = 'sdate', longitude = 'dat', latitude = 'dat'), metadata_dims = c('dat', 'var'), retrieve = T ) cube3 <- as.s2dv_cube(data3) CST_SaveExp(data = cube3, ftime_dim = 'time', var_dim = 'var', memb_dim = 'ensemble', dat_dim = 'dat') # We read again the data with start repos <- paste0(getwd(), "/system4_m1/$var$/$var$_$sdate$.nc") repos2 <- paste0(getwd(), "/system5_m1/$var$/$var$_$sdate$.nc") data3out <- Start(dat = list(list(name = 'system4_m1', path = repos2), list(name = 'system5_m1', path = repos)), var = c('tas', 'sfcWind'), sdate = c('20160101', '20170101'), ensemble = indices(1), time = indices(1:2), lat = indices(1:10), lon = indices(1:10), synonims = list(lat = c('lat', 'latitude'), lon = c('lon', 'longitude')), return_vars = list(time = 'sdate', longitude = 'dat', latitude = 'dat'), metadata_dims = c('dat', 'var'), retrieve = T) summary(data3out) summary(data3) dim(data3) dim(data3out) # (1) two variables and two datasets in the same file CST_SaveExp(data = cube3, ftime_dim = 'time', var_dim = 'var', memb_dim = 'ensemble', dat_dim = 'dat', single_file = TRUE) ################################################################################