test-Start-indices_list_vector.R 8.71 KB
Newer Older
# This unit test tests the consistence between list of indices and vector of indices.
# 1. transform
# 2. no transform
# 3. transform, indices reversed
# 4. no transform, indices reversed

context("List of indices and vector of indices")


test_that("1. transform", {

# lat and lon are lists of indices
suppressWarnings(
exp1 <- Start(dat = '/esarchive/exp/ecmwf/system5_m1/monthly_mean/$var$_f6h/$var$_$sdate$.nc',
             var = 'tas',
             sdate = '20000101',
             ensemble = indices(1),
             time = indices(1),
             latitude = indices(list(1, 30)), 
             latitude_reorder = Sort(),
             longitude = indices(list(1, 40)),
             longitude_reorder = CircularSort(0, 360),
             transform = CDORemapper,
             transform_params = list(grid = 'r100x50',
                                     method = 'con',
                                     crop = c(0, 11, -90, -81)),
             transform_vars = c('latitude', 'longitude'),
             transform_extra_cells = 8,
             synonims = list(latitude = c('lat', 'latitude'),
                             longitude = c('longitude', 'lon')),
             return_vars = list(latitude = NULL,
                                longitude = NULL,
                                time = 'sdate'),
             retrieve= T)
)

# lat and lon are vectors of indices
suppressWarnings(
exp2 <- Start(dat = '/esarchive/exp/ecmwf/system5_m1/monthly_mean/$var$_f6h/$var$_$sdate$.nc',
             var = 'tas',
             sdate = '20000101',
             ensemble = indices(1),
             time = indices(1),
             latitude = 1:30,
             latitude_reorder = Sort(),
             longitude = 1:40,
             longitude_reorder = CircularSort(0, 360),
             transform = CDORemapper,
             transform_params = list(grid = 'r100x50',
                                     method = 'con',
                                     crop = c(0, 11, -90, -81)),
             transform_vars = c('latitude', 'longitude'),
             transform_extra_cells = 8,
             synonims = list(latitude = c('lat', 'latitude'),
                             longitude = c('longitude', 'lon')),
             return_vars = list(latitude = NULL,
                                longitude = NULL,
                                time = 'sdate'),
             retrieve= T)
)

expect_equal(
as.vector(exp1),
as.vector(exp2)
)

})

#############################################################
#############################################################
#############################################################

test_that("2. no transform", {

# lat and lon are lists of indices
suppressWarnings(
exp1 <- Start(dat = '/esarchive/exp/ecmwf/system5_m1/monthly_mean/$var$_f6h/$var$_$sdate$.nc',
             var = 'tas',
             sdate = '20000101',
             ensemble = indices(1),
             time = indices(1),
             latitude = indices(list(1, 30)), 
             latitude_reorder = Sort(),
             longitude = indices(list(1, 40)),
             longitude_reorder = CircularSort(0, 360),
             synonims = list(latitude = c('lat', 'latitude'),
                             longitude = c('longitude', 'lon')),
             return_vars = list(latitude = NULL,
                                longitude = NULL,
                                time = 'sdate'),
             retrieve= T)
)

# lat and lon are vectors of indices
suppressWarnings(
exp2 <- Start(dat = '/esarchive/exp/ecmwf/system5_m1/monthly_mean/$var$_f6h/$var$_$sdate$.nc',
             var = 'tas',
             sdate = '20000101',
             ensemble = indices(1),
             time = indices(1),
             latitude = 1:30,
             latitude_reorder = Sort(),
             longitude = 1:40,
             longitude_reorder = CircularSort(0, 360),
             synonims = list(latitude = c('lat', 'latitude'),
                             longitude = c('longitude', 'lon')),
             return_vars = list(latitude = NULL,
                                longitude = NULL,
                                time = 'sdate'),
             retrieve= T)
)

expect_equal(
as.vector(exp1),
as.vector(exp2)
)

})


#############################################################
#############################################################
#############################################################
# PROBLEM:
# latitude is -81 to -88.2 now, but it should be 81 to 88.2 because the indices is retrieved first then do the transform (aiat = F); and it should be ascending.

#  .. ..$ latitude : num [1:3(1d)] -81 -84.6 -88.2

test_that("3. transform, indices reverse", {

# lat and lon are lists of indices
suppressWarnings(
exp1 <- Start(dat = '/esarchive/exp/ecmwf/system5_m1/monthly_mean/$var$_f6h/$var$_$sdate$.nc',
             var = 'tas',
             sdate = '20000101',
             ensemble = indices(1),
             time = indices(1),
             latitude = indices(list(30, 1)), 
             latitude_reorder = Sort(),
aho's avatar
aho committed
             longitude = indices(list(1, 40)),  # can't reverse. Different meaning
             longitude_reorder = CircularSort(0, 360),
             transform = CDORemapper,
             transform_params = list(grid = 'r100x50',
                                     method = 'con',
                                     crop = c(0, 11, -90, -81)),
             transform_vars = c('latitude', 'longitude'),
             transform_extra_cells = 8,
             synonims = list(latitude = c('lat', 'latitude'),
                             longitude = c('longitude', 'lon')),
             return_vars = list(latitude = NULL,
                                longitude = NULL,
                                time = 'sdate'),
             retrieve= T)
)

# lat and lon are vectors of indices
suppressWarnings(
exp2 <- Start(dat = '/esarchive/exp/ecmwf/system5_m1/monthly_mean/$var$_f6h/$var$_$sdate$.nc',
             var = 'tas',
             sdate = '20000101',
             ensemble = indices(1),
             time = indices(1),
             latitude = 30:1,
             latitude_reorder = Sort(),
             longitude = 40:1,
             longitude_reorder = CircularSort(0, 360),
             transform = CDORemapper,
             transform_params = list(grid = 'r100x50',
                                     method = 'con',
                                     crop = c(0, 11, -90, -81)),
             transform_vars = c('latitude', 'longitude'),
             transform_extra_cells = 8,
             synonims = list(latitude = c('lat', 'latitude'),
                             longitude = c('longitude', 'lon')),
             return_vars = list(latitude = NULL,
                                longitude = NULL,
                                time = 'sdate'),
             retrieve= T)
)

expect_equal(
aho's avatar
aho committed
as.vector(drop(exp1)[, 4:1]),
as.vector(exp2)
)

})

################################################################
################################################################
################################################################

test_that("4. no transform, indices reverse", {

# lat and lon are lists of indices
suppressWarnings(
exp1 <- Start(dat = '/esarchive/exp/ecmwf/system5_m1/monthly_mean/$var$_f6h/$var$_$sdate$.nc',
             var = 'tas',
             sdate = '20000101',
             ensemble = indices(1),
             time = indices(1),
             latitude = indices(list(30, 1)), 
aho's avatar
aho committed
             latitude_var = 'latitude',
             latitude_reorder = Sort(),
aho's avatar
aho committed
             longitude = indices(list(1, 40)), # can't reverse. different meaning
             longitude_var = 'longitude',
             longitude_reorder = CircularSort(0, 360),
             synonims = list(latitude = c('lat', 'latitude'),
                             longitude = c('longitude', 'lon')),
             return_vars = list(latitude = NULL,
                                longitude = NULL,
                                time = 'sdate'),
             retrieve= T)
)

# lat and lon are vectors of indices
suppressWarnings(
exp2 <- Start(dat = '/esarchive/exp/ecmwf/system5_m1/monthly_mean/$var$_f6h/$var$_$sdate$.nc',
             var = 'tas',
             sdate = '20000101',
             ensemble = indices(1),
             time = indices(1),
             latitude = 30:1,
aho's avatar
aho committed
             latitude_var = 'latitude',
             latitude_reorder = Sort(),
             longitude = 40:1,
aho's avatar
aho committed
             longitude_var = 'longitude',
             longitude_reorder = CircularSort(0, 360),
             synonims = list(latitude = c('lat', 'latitude'),
                             longitude = c('longitude', 'lon')),
             return_vars = list(latitude = NULL,
                                longitude = NULL,
                                time = 'sdate'),
             retrieve= T)
)

expect_equal(
aho's avatar
aho committed
as.vector(drop(exp1)[, 40:1]),