diff --git a/tests/testthat/test-Compute-inconsistent_target_dim.R b/tests/testthat/test-Compute-inconsistent_target_dim.R index fa4992afe565d5e28b501c8b2e3e488bce886261..f0f84be4456d6ee31e04b43683ce369d49deb6ad 100644 --- a/tests/testthat/test-Compute-inconsistent_target_dim.R +++ b/tests/testthat/test-Compute-inconsistent_target_dim.R @@ -67,54 +67,26 @@ obs <- Start(data = path.obs, retrieve = FALSE) ) -lons.obs <- attr(obs, 'Variables')$common$longitude -lats.obs <- attr(obs, 'Variables')$common$latitude -dates.obs <- attr(obs, 'Variables')$common$time - -lons_exp <- as.vector(lons.exp) -lats_exp <- as.vector(lats.exp) -lons_obs <- as.vector(lons.obs) -lats_obs <- as.vector(lats.obs) - - -fun <- function(exp, obs, path.output, - lons_exp = lons_exp, lats_exp = lats_exp, - lons_obs = lons_obs, lats_obs = lats_obs) { - - e <- s2dv::MeanDims(drop(exp), c('member', 'time')) - sst.e <- ClimProjDiags::WeightedMean(e, lons_exp, lats_exp, - londim = which(names(dim(e)) == 'longitude'), - latdim = which(names(dim(e)) == 'latitude')) - index.exp <- (sst.e - mean(sst.e))/sd(sst.e) - - o <- s2dv::MeanDims(drop(obs), 'time') - sst.o <- ClimProjDiags::WeightedMean(o, lons_obs, lats_obs, - londim = which(names(dim(o)) == 'longitude'), - latdim = which(names(dim(o)) == 'latitude')) - index.obs <- (sst.o - mean(sst.o))/sd(sst.o) - - # give dim name - dim(index.exp) <- c(sdate = length(index.exp)) - dim(index.obs) <- c(sdate = length(index.obs)) - - return(list(ind_exp = index.exp, ind_obs = index.obs)) - +fun <- function(exp, obs) { +# exp: [member = 2, latitude = 11, longitude = 21] +# obs: [latitude = 41, longitude = 81] + return(list(exp = exp, obs = obs)) } step <- Step(fun, - target_dims = list(exp = c('member', 'sdate', 'time', 'latitude', 'longitude'), - obs = c('sdate', 'time', 'latitude', 'longitude')), - output_dims = list(ind_exp = 'sdate', ind_obs = 'sdate')) + target_dims = list(exp = c('member', 'latitude', 'longitude'), + obs = c('latitude', 'longitude')), + output_dims = list(exp = c('member', 'latitude', 'longitude'), + obs = c('latitude', 'longitude'))) -workflow <- AddStep(list(exp = exp, obs = obs), step, - lons_exp = lons_exp, lats_exp = lats_exp, - lons_obs = lons_obs, lats_obs = lats_obs) +workflow <- AddStep(list(exp = exp, obs = obs), step) +#TODO: change chunking number to 2 when issue119 is fixed. suppressWarnings( -res <- Compute(workflow$ind_exp, - chunks = list(var = 1)) +res <- Compute(workflow$exp, chunks = list(sdate = 1)) ) + expect_equal( attr(exp, 'Dimensions'), c(data = 1, var = 1, member = 2, sdate = 3, time = 3, latitude = 11, longitude = 21) @@ -125,17 +97,45 @@ c(data = 1, var = 1, sdate = 3, time = 3, latitude = 41, longitude = 81) ) expect_equal( names(res), -c('ind_exp', 'ind_obs') +c('exp', 'obs') +) +expect_equal( +dim(res$exp), +c(member = 2, latitude = 11, longitude = 21, data = 1, var = 1, sdate = 3, time = 3) +) +expect_equal( +dim(res$obs), +c(latitude = 41, longitude = 81, data = 1, var = 1, sdate = 3, time = 3) +) +expect_equal( +mean(res$exp), +299.5028, +tolerance = 0.0001 +) +expect_equal( +mean(res$obs), +299.8896, +tolerance = 0.0001 +) +expect_equal( +res$exp[1, 1:5, 2, 1, 1, 2, 2], +c(302.2021, 302.3682, 302.4512, 302.4404, 302.4922), +tolerance = 0.0001 +) +expect_equal( +res$exp[2, 1:5, 2, 1, 1, 2, 3], +c(301.4209, 301.4795, 301.4004, 301.3633, 301.5791), +tolerance = 0.0001 ) expect_equal( -mean(res$ind_exp)*10^18, --9.251859, -tolerance = 0.00001 +res$obs[1:5, 2, 1, 1, 2, 2], +c(301.5615, 301.5351, 301.6196, 301.7573, 301.8423), +tolerance = 0.0001 ) expect_equal( -mean(res$ind_obs)*10^15, --9.584944, -tolerance = 0.00001 +res$obs[5, 1:5, 1, 1, 3, 2], +c(299.6043, 299.6480, 299.6803, 299.6851, 299.6761), +tolerance = 0.0001 ) })