NIEHS / chopin

Computation of Spatial Data by Hierarchical and Objective Partitioning of Inputs for Parallel Processing
https://niehs.github.io/chopin/
Other
10 stars 3 forks source link

Zarr performance test #9

Closed sigmafelix closed 1 year ago

sigmafelix commented 1 year ago

Background and objective

First test

sigmafelix commented 1 year ago
######## pacman initialization ########
if (!require(pacman)) {
    install.packages('pacman')
    library(pacman)
    }

p_load(scomps, future.batchtools, sf, terra, tigris, spatstat.random, dplyr, tictoc)
options(tigris_use_cache = TRUE)
tigris::tigris_cache_dir("~/tigris_shps_cache")

# note that the numbers are in kilometers.
BUFFERS = c(5, 10, 20)
NQUADSEGS = 90

set.seed(2023)
usstates20 = tigris::states(year = 2020)
carolinas = sf::st_union(usstates20[which(usstates20$GEOID %in% c(37, 45)),]) |>
    sf::st_transform(5070)
points_carolinas = sf::st_sample(carolinas, size = 1e4, type = "Thomas", 
            kappa = 9.8e-10, mu = 50, scale = 3e4, exact = TRUE)
sf::st_crs(points_carolinas) = "EPSG:5070"

merra = "/home/felix/Documents/climate/MERRA2_400.inst3_3d_asm_Np.20230726.nc4"

### stars 
sf_use_s2(F)
buff_carolinas = st_buffer(points_carolinas, 2e4, nQuadSegs = NQUADSEGS)
buff_carolinas = st_transform(buff_carolinas, "EPSG:4326")
merra_st = stars::read_mdim(merra)
st_crs(merra_st) = "EPSG:4326"
tic()
merra_ext = stars::st_extract(merra_st[st_bbox(buff_carolinas),], buff_carolinas)
toc()
# single thread
#> 2535.294 sec elapsed

# terra
buff_carolinas_t = vect(buff_carolinas)
merra_tr_in = crop(merra_tr, ext(merra_tr))
tic()
merra_ext_terra = terra::extract(merra_tr_in, buff_carolinas_t, fun = mean)
toc()
# single thread, in-memory object
#> 8.691 sec elapsed