From 27acd9b2356396ea3c2d2a0e6fbf9d598bfc24ff Mon Sep 17 00:00:00 2001 From: Eva Rifa Date: Wed, 3 May 2023 12:03:00 +0200 Subject: [PATCH 1/8] Add some lines to check if the crop domain fits the target grid --- R/zzz.R | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-) diff --git a/R/zzz.R b/R/zzz.R index 381c9d3..7530f80 100644 --- a/R/zzz.R +++ b/R/zzz.R @@ -564,9 +564,67 @@ generate_vars_to_transform <- function(vars_to_transform, picked_vars, transform return(vars_to_transform) } + +check_grid <- function(grid) { + # Check grid. + if (!is.character(grid)) { + stop("Parameter 'grid' must be a character string specifying a ", + "target CDO grid, 'rXxY' or 'tRESgrid', or a path to another ", + "NetCDF file.") + } + if (grepl('^r[0-9]{1,}x[0-9]{1,}$', grid)) { + grid_type <- 'regular' + grid_lons <- as.numeric(strsplit(strsplit(grid, 'x')[[1]][1], 'r')[[1]][2]) + grid_lats <- as.numeric(strsplit(grid, 'x')[[1]][2]) + } else if (grepl('^t[0-9]{1,}grid$', grid)) { + grid_type <- 'gaussian' + grid_t <- as.numeric(strsplit(strsplit(grid, 'grid')[[1]][1], 't')[[1]][2]) + grid_size <- .t2nlatlon(grid_t) + grid_lons <- grid_size[2] + grid_lats <- grid_size[1] + } else { + grid_type <- 'custom' + grid_lons <- NULL + grid_lats <- NULL + if (file.exists(grid)) { + dims_grid <- easyNCDF::NcReadDims(grid) + if (any(names(dims_grid) %in% .KnownLonNames())) { + grid_lons <- unique(dims_grid[which(names(dims_grid) %in% .KnownLonNames())]) + } + if (any(names(dims_grid) %in% .KnownLatNames())) { + grid_lats <- unique(dims_grid[which(names(dims_grid) %in% .KnownLatNames())]) + } + } + } + return(list(grid_type, grid_lons, grid_lats)) +} # Turn indices to values for transform_crop_domain -generate_transform_crop_domain_values <- function(transform_crop_domain, picked_vars) { +generate_transform_crop_domain_values <- function(transform_var, + transform_crop_domain, + picked_vars, + transform_params = NULL) { if (any(transform_crop_domain == 'all')) { + if ('grid' %in% names(transform_params)) { + grid_output <- check_grid(transform_params[['grid']]) + # Longitude spacing check + if (transform_var %in% .KnownLonNames()) { + if (length(grid_output[[2]]) == 1) { + z <- (tail(picked_vars, 1) - picked_vars[1])/360*grid_output[[2]] + if (as.integer(z) < grid_output[[2]]) { + picked_vars[1] <- picked_vars[1] - (360/grid_output[[2]]) + } + } + } + # Latitude spacing check + if (transform_var %in% .KnownLatNames()) { + if (length(grid_output[[3]]) == 1) { + z <- (tail(picked_vars, 1) - picked_vars[1])/180*grid_output[[3]] + if (as.integer(z) < grid_output[[2]]) { + picked_vars[1] <- picked_vars[1] - (180/grid_output[[3]]) + } + } + } + } transform_crop_domain <- c(picked_vars[1], tail(picked_vars, 1)) } else { # indices() if (is.list(transform_crop_domain)) { -- GitLab From be303643b1e02a6bd104111a856643ba8a4f0ef1 Mon Sep 17 00:00:00 2001 From: Eva Rifa Date: Mon, 8 May 2023 15:32:02 +0200 Subject: [PATCH 2/8] Create transform_crop_domain for 'all' values --- R/Start.R | 12 ++++++++---- R/zzz.R | 51 +++++++++++++++++++++++++++++++-------------------- 2 files changed, 39 insertions(+), 24 deletions(-) diff --git a/R/Start.R b/R/Start.R index 54ebdb8..702b776 100644 --- a/R/Start.R +++ b/R/Start.R @@ -2061,24 +2061,28 @@ Start <- function(..., # dim = indices/selectors, transform_crop_domain[[transform_var]] <- generate_transform_crop_domain_values( transform_crop_domain[[transform_var]], - picked_vars = picked_common_vars_ordered[[transform_var]]) + picked_vars = picked_common_vars_ordered[[transform_var]], + transform_var) } else { transform_crop_domain[[transform_var]] <- generate_transform_crop_domain_values( transform_crop_domain[[transform_var]], - picked_vars = picked_common_vars[[transform_var]]) + picked_vars = picked_common_vars[[transform_var]], + transform_var) } } else { # return_vars if (transform_var %in% names(dim_reorder_params)) { transform_crop_domain[[transform_var]] <- generate_transform_crop_domain_values( transform_crop_domain[[transform_var]], - picked_vars = picked_vars_ordered[[i]][[transform_var]]) + picked_vars = picked_vars_ordered[[i]][[transform_var]], + transform_var) } else { transform_crop_domain[[transform_var]] <- generate_transform_crop_domain_values( transform_crop_domain[[transform_var]], - picked_vars = picked_vars[[i]][[transform_var]]) + picked_vars = picked_vars[[i]][[transform_var]], + transform_var) } } } else if (is.atomic(transform_crop_domain[[transform_var]])) { diff --git a/R/zzz.R b/R/zzz.R index 7530f80..a7ff858 100644 --- a/R/zzz.R +++ b/R/zzz.R @@ -599,33 +599,44 @@ check_grid <- function(grid) { return(list(grid_type, grid_lons, grid_lats)) } # Turn indices to values for transform_crop_domain -generate_transform_crop_domain_values <- function(transform_var, - transform_crop_domain, +generate_transform_crop_domain_values <- function(transform_crop_domain, picked_vars, - transform_params = NULL) { + transform_var = NULL) { if (any(transform_crop_domain == 'all')) { - if ('grid' %in% names(transform_params)) { - grid_output <- check_grid(transform_params[['grid']]) - # Longitude spacing check - if (transform_var %in% .KnownLonNames()) { - if (length(grid_output[[2]]) == 1) { - z <- (tail(picked_vars, 1) - picked_vars[1])/360*grid_output[[2]] - if (as.integer(z) < grid_output[[2]]) { - picked_vars[1] <- picked_vars[1] - (360/grid_output[[2]]) - } + transform_crop_domain <- c(picked_vars[1], tail(picked_vars, 1)) + first_value <- picked_vars[1] + last_value <- tail(picked_vars, 1) + dvar <- picked_vars[2] - picked_vars[1] + if (any(transform_var %in% .KnownLatNames())) { + if (dvar > 0) { + if (first_value < 0) { + transform_crop_domain <- c(-90, 90) + } else { + transform_crop_domain <- c(0, 180) + } + } else { + if (last_value < 0) { + transform_crop_domain <- c(90, -90) + } else { + transform_crop_domain <- c(180, 0) } } - # Latitude spacing check - if (transform_var %in% .KnownLatNames()) { - if (length(grid_output[[3]]) == 1) { - z <- (tail(picked_vars, 1) - picked_vars[1])/180*grid_output[[3]] - if (as.integer(z) < grid_output[[2]]) { - picked_vars[1] <- picked_vars[1] - (180/grid_output[[3]]) - } + } + if (any(transform_var %in% .KnownLonNames())) { + if (dvar > 0) { + if (first_value < 0) { + transform_crop_domain <- c(-180, 180) + } else { + transform_crop_domain <- c(0, 360) + } + } else { + if (last_value < 0) { + transform_crop_domain <- c(180, -180) + } else { + transform_crop_domain <- c(360, 0) } } } - transform_crop_domain <- c(picked_vars[1], tail(picked_vars, 1)) } else { # indices() if (is.list(transform_crop_domain)) { transform_crop_domain <- picked_vars[unlist(transform_crop_domain)] -- GitLab From ac6fa0e92b4d355d84808bd9868f8bb68b1a7142 Mon Sep 17 00:00:00 2001 From: Eva Rifa Date: Mon, 8 May 2023 15:35:53 +0200 Subject: [PATCH 3/8] Remove previous modifications --- R/zzz.R | 34 ---------------------------------- 1 file changed, 34 deletions(-) diff --git a/R/zzz.R b/R/zzz.R index a7ff858..8dd47a9 100644 --- a/R/zzz.R +++ b/R/zzz.R @@ -564,40 +564,6 @@ generate_vars_to_transform <- function(vars_to_transform, picked_vars, transform return(vars_to_transform) } - -check_grid <- function(grid) { - # Check grid. - if (!is.character(grid)) { - stop("Parameter 'grid' must be a character string specifying a ", - "target CDO grid, 'rXxY' or 'tRESgrid', or a path to another ", - "NetCDF file.") - } - if (grepl('^r[0-9]{1,}x[0-9]{1,}$', grid)) { - grid_type <- 'regular' - grid_lons <- as.numeric(strsplit(strsplit(grid, 'x')[[1]][1], 'r')[[1]][2]) - grid_lats <- as.numeric(strsplit(grid, 'x')[[1]][2]) - } else if (grepl('^t[0-9]{1,}grid$', grid)) { - grid_type <- 'gaussian' - grid_t <- as.numeric(strsplit(strsplit(grid, 'grid')[[1]][1], 't')[[1]][2]) - grid_size <- .t2nlatlon(grid_t) - grid_lons <- grid_size[2] - grid_lats <- grid_size[1] - } else { - grid_type <- 'custom' - grid_lons <- NULL - grid_lats <- NULL - if (file.exists(grid)) { - dims_grid <- easyNCDF::NcReadDims(grid) - if (any(names(dims_grid) %in% .KnownLonNames())) { - grid_lons <- unique(dims_grid[which(names(dims_grid) %in% .KnownLonNames())]) - } - if (any(names(dims_grid) %in% .KnownLatNames())) { - grid_lats <- unique(dims_grid[which(names(dims_grid) %in% .KnownLatNames())]) - } - } - } - return(list(grid_type, grid_lons, grid_lats)) -} # Turn indices to values for transform_crop_domain generate_transform_crop_domain_values <- function(transform_crop_domain, picked_vars, -- GitLab From fe9aeff84357618cb9385ba0734d74324dd93266 Mon Sep 17 00:00:00 2001 From: Eva Rifa Date: Thu, 11 May 2023 15:24:43 +0200 Subject: [PATCH 4/8] Correct development of all requested longitudes and latitudes --- R/zzz.R | 41 +++++++++-------------------------------- 1 file changed, 9 insertions(+), 32 deletions(-) diff --git a/R/zzz.R b/R/zzz.R index 8dd47a9..22805ff 100644 --- a/R/zzz.R +++ b/R/zzz.R @@ -567,41 +567,18 @@ generate_vars_to_transform <- function(vars_to_transform, picked_vars, transform # Turn indices to values for transform_crop_domain generate_transform_crop_domain_values <- function(transform_crop_domain, picked_vars, - transform_var = NULL) { + transform_var) { if (any(transform_crop_domain == 'all')) { - transform_crop_domain <- c(picked_vars[1], tail(picked_vars, 1)) - first_value <- picked_vars[1] - last_value <- tail(picked_vars, 1) - dvar <- picked_vars[2] - picked_vars[1] - if (any(transform_var %in% .KnownLatNames())) { - if (dvar > 0) { - if (first_value < 0) { - transform_crop_domain <- c(-90, 90) - } else { - transform_crop_domain <- c(0, 180) - } - } else { - if (last_value < 0) { - transform_crop_domain <- c(90, -90) - } else { - transform_crop_domain <- c(180, 0) - } - } - } - if (any(transform_var %in% .KnownLonNames())) { - if (dvar > 0) { - if (first_value < 0) { - transform_crop_domain <- c(-180, 180) - } else { - transform_crop_domain <- c(0, 360) - } + if (transform_var %in% .KnownLatNames()) { + transform_crop_domain <- c(-90, 90) + } else if (transform_var %in% .KnownLonNames()) { + if (any(picked_vars > 180)) { + transform_crop_domain <- c(0, 360) } else { - if (last_value < 0) { - transform_crop_domain <- c(180, -180) - } else { - transform_crop_domain <- c(360, 0) - } + transform_crop_domain <- c(-180, 180) } + } else { + transform_crop_domain <- c(picked_vars[1], tail(picked_vars, 1)) } } else { # indices() if (is.list(transform_crop_domain)) { -- GitLab From b260a2152a3da2391aaa34d337ca174e8d9216c0 Mon Sep 17 00:00:00 2001 From: Eva Rifa Date: Mon, 15 May 2023 14:07:48 +0200 Subject: [PATCH 5/8] Add unit test for issue of one point missing with all coords --- tests/testthat/test-Start-transform-all.R | 146 ++++++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 tests/testthat/test-Start-transform-all.R diff --git a/tests/testthat/test-Start-transform-all.R b/tests/testthat/test-Start-transform-all.R new file mode 100644 index 0000000..8197904 --- /dev/null +++ b/tests/testthat/test-Start-transform-all.R @@ -0,0 +1,146 @@ +# This unit test uses 'all' to do the transformation and tests the output grid. +# The results should be identical and consistent with cdo result (with precision difference). +# The test contains three calls with different target grids: +# two with 'r128x64' (from different original grid) and one with 'r100x50'. + +context("Transform test target grid: lon and lat = 'all'") + +#--------------------------------------------------------------- +# cdo is used to verify the data values +# Test 1: original grid 'r360x180' +library(easyNCDF) +grid1 <- '/esarchive/exp/CMIP6/dcppA-hindcast/CanESM5/DCPP/CCCma/CanESM5/dcppA-hindcast/r1i1p2f1/Omon/tos/gr/v20190429/tos_Omon_CanESM5_dcppA-hindcast_s1980-r1i1p2f1_gr_198101-199012.nc' # "r128x64" +path <- '/esarchive/exp/CMIP6/dcppA-hindcast/CESM1-1-CAM5-CMIP5/DCPP/NCAR/CESM1-1-CAM5-CMIP5/dcppA-hindcast/r1i1p1f1/Omon/tos/gr/v20191016/tos_Omon_CESM1-1-CAM5-CMIP5_dcppA-hindcast_s2015-r1i1p1f1_gr_201511-202512.nc' # r360x180 + +file <- NcOpen(path) +arr <- NcToArray(file, + dim_indices = list(lat = 1:180, lon = 1:360), + vars_to_read = 'tos') +lats <- NcToArray(file, + dim_indices = list(lat = 1:180), vars_to_read = 'lat') +lons <- NcToArray(file, + dim_indices = list(lon = 1:360), vars_to_read = 'lon') +NcClose(file) + +lons <- as.vector(lons) +lats <- as.vector(lats) +suppressWarnings( + arr1 <- s2dv::CDORemap(arr, lons = as.vector(lons), lats = as.vector(lats), + grid = grid1, method = 'con', crop = FALSE) +) +suppressWarnings( + arr2 <- s2dv::CDORemap(arr, lons = as.vector(lons), lats = as.vector(lats), + grid = 'r100x50', method = 'con', crop = FALSE) +) + +#--------------------------------------------------------------- +# Test 2: Original grid 'r432x324' +path <- '/esarchive/exp/CMIP6/dcppA-hindcast/HadGEM3-GC31-MM/DCPP/MOHC/HadGEM3-GC31-MM/dcppA-hindcast/r1i1p1f2/Amon/tas/gn/v20200417/tas_Amon_HadGEM3-GC31-MM_dcppA-hindcast_s2009-r1i1p1f2_gn_201501-201512.nc' # r432x324 +file <- NcOpen(path) + +arr <- NcToArray(file, + dim_indices = list(lat = 1:324, lon = 1:432), + vars_to_read = 'tas') +lats <- NcToArray(file, + dim_indices = list(lat = 1:324), vars_to_read = 'lat') +lons <- NcToArray(file, + dim_indices = list(lon = 1:432), vars_to_read = 'lon') +NcClose(file) + +suppressWarnings( + arr3 <- s2dv::CDORemap(arr, lons = as.vector(lons), lats = as.vector(lats), + grid = 'r128x64', method = 'con', crop = FALSE) +) +#--------------------------------------------------------------- + +path1 <- '/esarchive/exp/CMIP6/dcppA-hindcast/CESM1-1-CAM5-CMIP5/DCPP/NCAR/CESM1-1-CAM5-CMIP5/dcppA-hindcast/r1i1p1f1/Omon/$var$/gr/v20191016/$var$_Omon_CESM1-1-CAM5-CMIP5_dcppA-hindcast_s$sdate$-r1i1p1f1_gr_$sdate$11-202512.nc' + +test_that("1. 'all'", { + suppressWarnings( + res1 <- Start(dat = path1, + var = 'tos', + lat = 'all', + lon = 'all', + sdate = '2015', fmonth = indices(1:2), + transform = CDORemapper, transform_extra_cells = 2, + transform_params = list(grid = grid1, method = 'con'), + transform_vars = c('lon','lat'), + synonims = list(lat = c('lat','latitude'), + lon = c('lon','longitude'), fmonth = c('fmonth','time')), + return_vars = list(lat = NULL, lon = NULL), + retrieve = TRUE) + ) + suppressWarnings( + res2 <- Start(dat = path1, + var = 'tos', + lat = 'all', + lon = 'all', + lat_reorder = CircularSort(-90, 90), + lon_reorder = CircularSort(-180, 180), + sdate = '2015', fmonth = indices(1:2), + transform = CDORemapper, transform_extra_cells = 2, + transform_params = list(grid = 'r100x50', method = 'con'), + transform_vars = c('lon','lat'), + synonims = list(lat = c('lat','latitude'), + lon = c('lon','longitude'), fmonth = c('fmonth','time')), + return_vars = list(lat = NULL, lon = NULL), + retrieve = TRUE) + ) + # res1 + expect_equal( + as.vector(res1), + as.vector(arr1$data_array[,,,1:2]) + ) + expect_equal( + as.vector(attributes(res1)$Variables$common$lon), + as.vector(arr1$lon) + ) + expect_equal( + as.vector(attributes(res1)$Variables$common$lat), + as.vector(arr1$lat) + ) + # res2 + expect_equal( + as.vector(attributes(res2)$Variables$common$lon + 180), + as.vector(arr2$lon) + ) + expect_equal( + as.vector(attributes(res2)$Variables$common$lat), + as.vector(arr2$lat) + ) +}) + +#--------------------------------------------------------------- + +path2 <- '/esarchive/exp/CMIP6/dcppA-hindcast/HadGEM3-GC31-MM/DCPP/MOHC/HadGEM3-GC31-MM/dcppA-hindcast/r1i1p1f2/Amon/$var$/gn/v20200417/$var$_Amon_HadGEM3-GC31-MM_dcppA-hindcast_s$sdate$-r1i1p1f2_gn_$sdate$11-201512.nc' + +test_that("2. test path 2", { + suppressWarnings( + res3 <- Start(dat = path2, + var = 'tas', + lon = 'all', + lat = 'all', + lon_reorder = CircularSort(-180, 180), + sdate = paste0(2015), fmonth = indices(1:2), + transform = CDORemapper, transform_extra_cells = 2, + transform_params = list(grid = "r128x64", method = 'con'), + transform_vars = c('lon','lat'), + synonims = list(lat = c('lat','latitude'), + lon = c('lon','longitude'), fmonth = c('fmonth','time')), + return_vars = list(lat = NULL, lon = NULL, time = 'sdate'), + retrieve = TRUE) + ) + # res3 + expect_equal( + as.vector(attributes(res3)$Variables$common$lon+180), + as.vector(arr3$lon) + ) + expect_equal( + as.vector(attributes(res3)$Variables$common$lat), + as.vector(arr3$lat) + ) +}) + + + + -- GitLab From cef4246712686dfcdd96d2d57b1abea409eb362f Mon Sep 17 00:00:00 2001 From: EVA RIFA ROVIRA Date: Mon, 15 May 2023 16:02:33 +0200 Subject: [PATCH 6/8] Add some minor comments --- tests/testthat/test-Start-transform-all.R | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/tests/testthat/test-Start-transform-all.R b/tests/testthat/test-Start-transform-all.R index 8197904..f59640d 100644 --- a/tests/testthat/test-Start-transform-all.R +++ b/tests/testthat/test-Start-transform-all.R @@ -9,8 +9,8 @@ context("Transform test target grid: lon and lat = 'all'") # cdo is used to verify the data values # Test 1: original grid 'r360x180' library(easyNCDF) -grid1 <- '/esarchive/exp/CMIP6/dcppA-hindcast/CanESM5/DCPP/CCCma/CanESM5/dcppA-hindcast/r1i1p2f1/Omon/tos/gr/v20190429/tos_Omon_CanESM5_dcppA-hindcast_s1980-r1i1p2f1_gr_198101-199012.nc' # "r128x64" -path <- '/esarchive/exp/CMIP6/dcppA-hindcast/CESM1-1-CAM5-CMIP5/DCPP/NCAR/CESM1-1-CAM5-CMIP5/dcppA-hindcast/r1i1p1f1/Omon/tos/gr/v20191016/tos_Omon_CESM1-1-CAM5-CMIP5_dcppA-hindcast_s2015-r1i1p1f1_gr_201511-202512.nc' # r360x180 +grid1 <- '/esarchive/exp/CMIP6/dcppA-hindcast/CanESM5/DCPP/CCCma/CanESM5/dcppA-hindcast/r1i1p2f1/Omon/tos/gr/v20190429/tos_Omon_CanESM5_dcppA-hindcast_s1980-r1i1p2f1_gr_198101-199012.nc' # 'r128x64' +path <- '/esarchive/exp/CMIP6/dcppA-hindcast/CESM1-1-CAM5-CMIP5/DCPP/NCAR/CESM1-1-CAM5-CMIP5/dcppA-hindcast/r1i1p1f1/Omon/tos/gr/v20191016/tos_Omon_CESM1-1-CAM5-CMIP5_dcppA-hindcast_s2015-r1i1p1f1_gr_201511-202512.nc' # 'r360x180' file <- NcOpen(path) arr <- NcToArray(file, @@ -35,9 +35,8 @@ suppressWarnings( #--------------------------------------------------------------- # Test 2: Original grid 'r432x324' -path <- '/esarchive/exp/CMIP6/dcppA-hindcast/HadGEM3-GC31-MM/DCPP/MOHC/HadGEM3-GC31-MM/dcppA-hindcast/r1i1p1f2/Amon/tas/gn/v20200417/tas_Amon_HadGEM3-GC31-MM_dcppA-hindcast_s2009-r1i1p1f2_gn_201501-201512.nc' # r432x324 +path <- '/esarchive/exp/CMIP6/dcppA-hindcast/HadGEM3-GC31-MM/DCPP/MOHC/HadGEM3-GC31-MM/dcppA-hindcast/r1i1p1f2/Amon/tas/gn/v20200417/tas_Amon_HadGEM3-GC31-MM_dcppA-hindcast_s2009-r1i1p1f2_gn_201501-201512.nc' # 'r432x324' file <- NcOpen(path) - arr <- NcToArray(file, dim_indices = list(lat = 1:324, lon = 1:432), vars_to_read = 'tas') @@ -53,7 +52,7 @@ suppressWarnings( ) #--------------------------------------------------------------- -path1 <- '/esarchive/exp/CMIP6/dcppA-hindcast/CESM1-1-CAM5-CMIP5/DCPP/NCAR/CESM1-1-CAM5-CMIP5/dcppA-hindcast/r1i1p1f1/Omon/$var$/gr/v20191016/$var$_Omon_CESM1-1-CAM5-CMIP5_dcppA-hindcast_s$sdate$-r1i1p1f1_gr_$sdate$11-202512.nc' +path1 <- '/esarchive/exp/CMIP6/dcppA-hindcast/CESM1-1-CAM5-CMIP5/DCPP/NCAR/CESM1-1-CAM5-CMIP5/dcppA-hindcast/r1i1p1f1/Omon/$var$/gr/v20191016/$var$_Omon_CESM1-1-CAM5-CMIP5_dcppA-hindcast_s$sdate$-r1i1p1f1_gr_$sdate$11-202512.nc' # 'r360x180' test_that("1. 'all'", { suppressWarnings( @@ -112,7 +111,7 @@ test_that("1. 'all'", { #--------------------------------------------------------------- -path2 <- '/esarchive/exp/CMIP6/dcppA-hindcast/HadGEM3-GC31-MM/DCPP/MOHC/HadGEM3-GC31-MM/dcppA-hindcast/r1i1p1f2/Amon/$var$/gn/v20200417/$var$_Amon_HadGEM3-GC31-MM_dcppA-hindcast_s$sdate$-r1i1p1f2_gn_$sdate$11-201512.nc' +path2 <- '/esarchive/exp/CMIP6/dcppA-hindcast/HadGEM3-GC31-MM/DCPP/MOHC/HadGEM3-GC31-MM/dcppA-hindcast/r1i1p1f2/Amon/$var$/gn/v20200417/$var$_Amon_HadGEM3-GC31-MM_dcppA-hindcast_s$sdate$-r1i1p1f2_gn_$sdate$11-201512.nc' # 'r432x324' test_that("2. test path 2", { suppressWarnings( -- GitLab From 9e3cc8c9eea33e1826c26c1a801855f3a592f20a Mon Sep 17 00:00:00 2001 From: Eva Rifa Date: Mon, 15 May 2023 16:25:53 +0200 Subject: [PATCH 7/8] Make test less time consuming --- tests/testthat/test-Start-transform-all.R | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/tests/testthat/test-Start-transform-all.R b/tests/testthat/test-Start-transform-all.R index f59640d..a56c0f8 100644 --- a/tests/testthat/test-Start-transform-all.R +++ b/tests/testthat/test-Start-transform-all.R @@ -83,7 +83,7 @@ test_that("1. 'all'", { synonims = list(lat = c('lat','latitude'), lon = c('lon','longitude'), fmonth = c('fmonth','time')), return_vars = list(lat = NULL, lon = NULL), - retrieve = TRUE) + retrieve = FALSE) ) # res1 expect_equal( @@ -94,10 +94,6 @@ test_that("1. 'all'", { as.vector(attributes(res1)$Variables$common$lon), as.vector(arr1$lon) ) - expect_equal( - as.vector(attributes(res1)$Variables$common$lat), - as.vector(arr1$lat) - ) # res2 expect_equal( as.vector(attributes(res2)$Variables$common$lon + 180), @@ -127,7 +123,7 @@ test_that("2. test path 2", { synonims = list(lat = c('lat','latitude'), lon = c('lon','longitude'), fmonth = c('fmonth','time')), return_vars = list(lat = NULL, lon = NULL, time = 'sdate'), - retrieve = TRUE) + retrieve = FALSE) ) # res3 expect_equal( -- GitLab From b6c04c927f9d01f1307428f49e3bd62861019010 Mon Sep 17 00:00:00 2001 From: Eva Rifa Date: Thu, 18 May 2023 16:19:40 +0200 Subject: [PATCH 8/8] Reduce the read time steps in test-transform-all --- tests/testthat/test-Start-transform-all.R | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/testthat/test-Start-transform-all.R b/tests/testthat/test-Start-transform-all.R index a56c0f8..8a9ca65 100644 --- a/tests/testthat/test-Start-transform-all.R +++ b/tests/testthat/test-Start-transform-all.R @@ -14,7 +14,7 @@ path <- '/esarchive/exp/CMIP6/dcppA-hindcast/CESM1-1-CAM5-CMIP5/DCPP/NCAR/CESM1- file <- NcOpen(path) arr <- NcToArray(file, - dim_indices = list(lat = 1:180, lon = 1:360), + dim_indices = list(lat = 1:180, lon = 1:360, time = 1:2), vars_to_read = 'tos') lats <- NcToArray(file, dim_indices = list(lat = 1:180), vars_to_read = 'lat') @@ -38,7 +38,7 @@ suppressWarnings( path <- '/esarchive/exp/CMIP6/dcppA-hindcast/HadGEM3-GC31-MM/DCPP/MOHC/HadGEM3-GC31-MM/dcppA-hindcast/r1i1p1f2/Amon/tas/gn/v20200417/tas_Amon_HadGEM3-GC31-MM_dcppA-hindcast_s2009-r1i1p1f2_gn_201501-201512.nc' # 'r432x324' file <- NcOpen(path) arr <- NcToArray(file, - dim_indices = list(lat = 1:324, lon = 1:432), + dim_indices = list(lat = 1:324, lon = 1:432, time = 1:2), vars_to_read = 'tas') lats <- NcToArray(file, dim_indices = list(lat = 1:324), vars_to_read = 'lat') @@ -88,7 +88,7 @@ test_that("1. 'all'", { # res1 expect_equal( as.vector(res1), - as.vector(arr1$data_array[,,,1:2]) + as.vector(arr1$data_array) ) expect_equal( as.vector(attributes(res1)$Variables$common$lon), -- GitLab