From 515fa997e3c63f3d27ba8c390dacf6f6eda958d5 Mon Sep 17 00:00:00 2001 From: nperez Date: Mon, 8 Jun 2020 13:44:01 +0200 Subject: [PATCH 01/15] New use case RainFARM --- inst/doc/usecase/ex2_10_rainFARM.R | 76 ++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 inst/doc/usecase/ex2_10_rainFARM.R diff --git a/inst/doc/usecase/ex2_10_rainFARM.R b/inst/doc/usecase/ex2_10_rainFARM.R new file mode 100644 index 0000000..c5ba055 --- /dev/null +++ b/inst/doc/usecase/ex2_10_rainFARM.R @@ -0,0 +1,76 @@ +# ------------------------------------------- +# Downscaling precipitation using RainFARM +# ------------------------------------------- +# Note 1: The data could be first transformed with QuantileMapping from CSTools +# Note 2: Extra parameters could be use to downscale the data: weights, slope... +# See more information in https://cran.r-project.org/web/packages/CSTools/vignettes/RainFARM_vignette.html or https://drive.google.com/file/d/1ltB2vypHrk1B-x1h2BQF4qBXv5spbXmG/view +# ------------------------------------------- +# Load libraries and functions: +library(startR) +library(CSTools) +library(ncdf4) +library(s2dv) # could be removed when CST_SaveExp is merged in CSTools +source("/esarchive/scratch/nperez/git/cstools/R/CST_SaveExp.R") # branch develop-SaveExp + +# Define the data: +sdates <- paste0(1993:1996, '1101') # starting dates +path <- "/esarchive/exp/ecmwf/system5c3s/daily/$var$_s0-24h/$var$_$sdate$.nc" +data <- Start(dataset = path, + var = 'prlr', + sdate = sdates, + member = 'all', + longitude = values(list(-10, 30)), + longitude_reorder = CircularSort(-180, 180), + latitude = values(list(18, 58)), + time = 'all', + return_vars = list(latitude = 'dataset', longitude = 'dataset', + time = NULL), + synonims = list(latitude = c('lat', 'latitude'), + longitude = c('lon', 'longitude'), + member = c('member', 'ensemble')), + retrieve = FALSE) + +# Define the function: +Chunk_RF <- function(x, nf, destination, startdates, nchunks = chunk_indices) { + lon <- as.numeric(attributes(x)$Variables$dat1$longitude) + lat <- as.numeric(attributes(x)$Variables$dat1$latitude) + down_data <- RainFARM(x, lon = lon, lat = lat, drop_realization_dim = TRUE, + nf, lon_dim = 'longitude', lat_dim = 'latitude') +print(dim(down_data)) + # detect the dates of forecast time for different start dates + time <- attributes(x)$Variables$common$time + dates <- lapply(startdates, function(x) {seq(as.Date(x, format = "%Y-%m-%d"), + x + length(time), 'day')}) + dimname <- names(dim(down_data$data)) + var_dims <- list(ncdim_def(name = 'lon', units = 'degrees', + vals = as.vector(lon), longname = 'longitude'), + ncdim_def(name = 'lat', units = 'degrees', + vals = as.vector(lat), longname = 'longitude'), + ncdim_def(name = 'ensemble', units = "adim", + vals = 1 : dim(down_data$data)[which(dimname == 'member')], + longname = 'ensemble', create_dimvar = TRUE)) +# startdates and dates depends on the chunk: + .saveExp(down_data$data, dims_var = var_dims, + var_name = 'tas', units = 'K', sdate = startdates[nchunks['sdate']], + Dates = dates[[nchunks['sdate']]], + cdo_grid_name = paste0('r', length(lon), 'x', length(lat)), + projection = 'none', destination = destination) + down_data <- MeansDims(down_data$data, c('member', 'longitude', 'latitude')) +print("done") +} + +step <- Step(Chunk_RF, + target_dims = c('member', 'longitude', 'latitude', 'time'), + output_dims = 'time', + use_libraries = c('CSTools', 'ncdf4'), + use_attributes = list(data = "Variables")) + +workflow <- AddStep(data, step, nf = 4, + destination = "/esarchive/scratch/nperez/git/Flor/cstools/test_RF_start/", + startdates = as.Date(sdates, format = "%Y%m%d")) + +res <- Compute(workflow, + chunks = list(sdate = 4), + threads_load = 2, + threads_compute = 4) + -- GitLab From 4267e6bcfeb6215a590574438d625af407af94ad Mon Sep 17 00:00:00 2001 From: nperez Date: Mon, 8 Jun 2020 16:34:31 +0200 Subject: [PATCH 02/15] Workin example of RainFARM --- inst/doc/usecase/ex2_10_rainFARM.R | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/inst/doc/usecase/ex2_10_rainFARM.R b/inst/doc/usecase/ex2_10_rainFARM.R index c5ba055..06a838f 100644 --- a/inst/doc/usecase/ex2_10_rainFARM.R +++ b/inst/doc/usecase/ex2_10_rainFARM.R @@ -5,6 +5,11 @@ # Note 2: Extra parameters could be use to downscale the data: weights, slope... # See more information in https://cran.r-project.org/web/packages/CSTools/vignettes/RainFARM_vignette.html or https://drive.google.com/file/d/1ltB2vypHrk1B-x1h2BQF4qBXv5spbXmG/view # ------------------------------------------- +# MORE IMPORTANT NOTE: +# startR is aim to return a result that fits in your local memory. This aim is the oposite of downscale, which output size increase. Therefore, this example save the data in NetCDF files and provides the Mean which has a reduced size. +# Warning!!!!!! Use this example with caution to avoid saving not desired data. +#------------------------------------------- + # Load libraries and functions: library(startR) library(CSTools) @@ -31,21 +36,21 @@ data <- Start(dataset = path, retrieve = FALSE) # Define the function: + Chunk_RF <- function(x, nf, destination, startdates, nchunks = chunk_indices) { lon <- as.numeric(attributes(x)$Variables$dat1$longitude) lat <- as.numeric(attributes(x)$Variables$dat1$latitude) down_data <- RainFARM(x, lon = lon, lat = lat, drop_realization_dim = TRUE, nf, lon_dim = 'longitude', lat_dim = 'latitude') -print(dim(down_data)) # detect the dates of forecast time for different start dates time <- attributes(x)$Variables$common$time dates <- lapply(startdates, function(x) {seq(as.Date(x, format = "%Y-%m-%d"), - x + length(time), 'day')}) + x + length(time) - 1, 'day')}) dimname <- names(dim(down_data$data)) var_dims <- list(ncdim_def(name = 'lon', units = 'degrees', - vals = as.vector(lon), longname = 'longitude'), + vals = as.vector(down_data$lon), longname = 'longitude'), ncdim_def(name = 'lat', units = 'degrees', - vals = as.vector(lat), longname = 'longitude'), + vals = as.vector(down_data$lat), longname = 'longitude'), ncdim_def(name = 'ensemble', units = "adim", vals = 1 : dim(down_data$data)[which(dimname == 'member')], longname = 'ensemble', create_dimvar = TRUE)) @@ -55,8 +60,8 @@ print(dim(down_data)) Dates = dates[[nchunks['sdate']]], cdo_grid_name = paste0('r', length(lon), 'x', length(lat)), projection = 'none', destination = destination) - down_data <- MeansDims(down_data$data, c('member', 'longitude', 'latitude')) -print("done") + down_data_mean <- MeanDims(down_data$data, c('member', 'longitude', 'latitude')) + return(down_data_mean) } step <- Step(Chunk_RF, @@ -74,3 +79,5 @@ res <- Compute(workflow, threads_load = 2, threads_compute = 4) +# Visualize the temporal evolution of the result simultaneously for all sdates: +matplot(1:214, res$output1[,1,1,], type = "l") -- GitLab From 8c09172c4bb4876ddeb6e5d90a8802a365f74be1 Mon Sep 17 00:00:00 2001 From: nperez Date: Mon, 8 Jun 2020 19:07:44 +0200 Subject: [PATCH 03/15] new use case --- inst/doc/faq.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/inst/doc/faq.md b/inst/doc/faq.md index a965827..8d3ee89 100644 --- a/inst/doc/faq.md +++ b/inst/doc/faq.md @@ -21,6 +21,7 @@ This document intends to be the first reference for any doubts that you may have 15. [Specify extra function arguments in the workflow](#15-specify-extra-function-arguments-in-the-workflow) 16. [Use parameter 'return_vars' in Start()](#16-use-parameter-return_vars-in-start) 17. [Use parameter 'split_multiselected_dims' in Start()](#17-use-parameter-split_multiselected_dims-in-start) + 18. [Know and use chunk number](#18-know-and-use-chunk-number) 2. **Something goes wrong...** @@ -662,6 +663,18 @@ obs <- Start(dat = path.obs, retrieve = T) ``` +###18. Know and use chunk number + +The desired workflow of startR will use some data dimensions to compute an analysis and the restto chunk the data in peace and avoid crashing the R session memory. + +When very complex analysis are being carried in a single step, the analysis may use all dimensions for computation and any free dimension could be use to chunk the data in peaces. + +Being in this latest case, and depending on the analysis to be done, we may be able to chunk in a dimension that is bein used in the analysis. You just need to define a parameter in your function 'nchunks = chunk_indices' and use it in the same function. + +You can find a working example in [use case #10 for RainFARM downscaling] in that example the start date dimension is being used to chunk since the downscaling method only need the lon and lat but the following function requires sdate to save data in esarchive format. In this case, the result is independent of the start date, but the function needs the dimension with other purposes, then, we can use the 'chunk_indices' just to detect the name of the output files. + +There are many other possible applications of this parameter, please, report other uses cases you may create. + # Something goes wrong... -- GitLab From d15dfde1fc5b64d13cb3fbdc89f831d516db9ced Mon Sep 17 00:00:00 2001 From: nperez Date: Wed, 10 Jun 2020 17:11:30 +0200 Subject: [PATCH 04/15] nord3 job --- inst/doc/usecase/ex2_10_rainFARM.R | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/inst/doc/usecase/ex2_10_rainFARM.R b/inst/doc/usecase/ex2_10_rainFARM.R index 06a838f..8f166d9 100644 --- a/inst/doc/usecase/ex2_10_rainFARM.R +++ b/inst/doc/usecase/ex2_10_rainFARM.R @@ -79,5 +79,27 @@ res <- Compute(workflow, threads_load = 2, threads_compute = 4) +#-----------modify according to your personal info--------- + queue_host = 'nord3' #your own host name for power9 + temp_dir = '/gpfs/scratch/bsc32/bsc32339/startR_hpc/' + ecflow_suite_dir = '/home/Earth/nperez/startR_local/' #your own local directory +#------------------------------------------------------------ + res <- Compute(workflow, + chunks = list(sdate = 4), + threads_load = 1, + threads_compute = 1, + cluster = list(queue_host = queue_host, + queue_type = 'lsf', + extra_queue_params = list('#BSUB -q bsc_es'), + cores_per_job = 1, + temp_dir = temp_dir, + polling_period = 10, + job_wallclock = '00:30', + max_jobs = 4, + bidirectional = FALSE), + ecflow_suite_dir = ecflow_suite_dir, + wait = TRUE) + + # Visualize the temporal evolution of the result simultaneously for all sdates: matplot(1:214, res$output1[,1,1,], type = "l") -- GitLab From 80f738d4ca8bcebb2d18d2ec71294b376090effc Mon Sep 17 00:00:00 2001 From: nperez Date: Thu, 2 Jul 2020 12:28:12 +0200 Subject: [PATCH 05/15] RainFARM example listed in usecase.md --- inst/doc/usecase.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/inst/doc/usecase.md b/inst/doc/usecase.md index 65dbd2d..a5eaa60 100644 --- a/inst/doc/usecase.md +++ b/inst/doc/usecase.md @@ -53,7 +53,8 @@ The problem may occur when the dimension number of the splitted selector is more 8. [Use CSTools Calibration function](inst/doc/usecase/ex2_8_calibration.R) Use `CSTools:::.cal`, the interior function of `CSTools::CST_Calibration`, to do the bias adjustment for ECMWF experimental monthly mean data. 9. [Use a mask to apply different methods to different gridpoints](inst/doc/usecase/ex2_9_mask.R) If you need to apply your analysis in a few gridpoints, you may want to consider use case 1.6, but if you need to load a lot of grid points, maybe this a better solution. - + 10. [RainFARM precipitation downscalin](https://earth.bsc.es/gitlab/es/startR/-/blob/develop-RainFARMCase/inst/doc/usecase/ex2_10_rainFARM.R) + This example shows how to use a downscaling function and given that the memory size increase it saves the data by chunks in the esarchive format. It not recommended to save big outputs. Consider to perform some analysis and then retrieve the result instead of saving data. This is a simplified example of RainFARM for more information visit: https://www.medscope-project.eu/products/data/ -- GitLab From 2d0b87c3ec02e6b200e4b29ce98a55099c151060 Mon Sep 17 00:00:00 2001 From: nperez Date: Thu, 2 Jul 2020 12:35:34 +0200 Subject: [PATCH 06/15] replace local source of .saveExp by the function in CSTools_3.1.0 --- inst/doc/usecase/ex2_10_rainFARM.R | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/inst/doc/usecase/ex2_10_rainFARM.R b/inst/doc/usecase/ex2_10_rainFARM.R index 8f166d9..bebb841 100644 --- a/inst/doc/usecase/ex2_10_rainFARM.R +++ b/inst/doc/usecase/ex2_10_rainFARM.R @@ -15,7 +15,6 @@ library(startR) library(CSTools) library(ncdf4) library(s2dv) # could be removed when CST_SaveExp is merged in CSTools -source("/esarchive/scratch/nperez/git/cstools/R/CST_SaveExp.R") # branch develop-SaveExp # Define the data: sdates <- paste0(1993:1996, '1101') # starting dates @@ -55,7 +54,7 @@ Chunk_RF <- function(x, nf, destination, startdates, nchunks = chunk_indices) { vals = 1 : dim(down_data$data)[which(dimname == 'member')], longname = 'ensemble', create_dimvar = TRUE)) # startdates and dates depends on the chunk: - .saveExp(down_data$data, dims_var = var_dims, + CSTools:::.saveExp(down_data$data, dims_var = var_dims, var_name = 'tas', units = 'K', sdate = startdates[nchunks['sdate']], Dates = dates[[nchunks['sdate']]], cdo_grid_name = paste0('r', length(lon), 'x', length(lat)), -- GitLab From b1ec53a746188595b10b58ea80951815c3df12f2 Mon Sep 17 00:00:00 2001 From: Eva Rifa Date: Thu, 13 Apr 2023 10:33:13 +0200 Subject: [PATCH 07/15] Update documentation and use case with chung's comments --- inst/doc/faq.md | 4 +- inst/doc/usecase.md | 61 ++++++++++++++---------------- inst/doc/usecase/ex2_14_rainFARM.R | 6 +-- 3 files changed, 33 insertions(+), 38 deletions(-) diff --git a/inst/doc/faq.md b/inst/doc/faq.md index cea8879..e1ba10d 100644 --- a/inst/doc/faq.md +++ b/inst/doc/faq.md @@ -998,13 +998,13 @@ See [How-to-21](#21-retrieve-the-complete-data-when-the-dimension-length-varies- ### 27. Know and use chunk number -The final aim of the startR workflow is to avoid crashing the R session memory due to the size of the input data. Therefore, the desired workflow of startR will use some data dimensions to compute an analysis and the rest to chunk the data in pieces. +The final aim of the startR workflow is to avoid crashing the R session memory due to the size of the input data. Therefore, the desired workflow of startR will use those required (for the key computations) data dimensions to compute an analysis and the rest to chunk the data in pieces. When very complex analyses are being carried in a single step, the analyses may use all dimensions for computation and any free dimension could be used to chunk the data in pieces. Being in this latest case, and depending on the analyses to be performed, we may be able to chunk in a dimension that is being used in the analysis. You just need to define a parameter in your function 'nchunks = chunk_indices' and use it in the same function. -You can find a working example in [use case #10 for RainFARM downscaling](https://earth.bsc.es/gitlab/es/startR/-/blob/develop-RainFARMCase/inst/doc/usecase/ex2_14_rainFARM.R) in that example the start date dimension is being used to chunk since the downscaling method only need the lon and lat but the following function requires sdate to save data in esarchive format. In this case, the result is independent of the start date, but the function needs the dimension with other purposes which are to create the file names, then, we can use the 'chunk_indices' just to detect the name of the output files. +You can find a working example in [use case #10 for RainFARM downscaling](https://earth.bsc.es/gitlab/es/startR/-/blob/develop-RainFARMCase/inst/doc/usecase/ex2_14_rainFARM.R). In that example the start date dimension is being used to chunk since the downscaling method only needs the lon and lat but the following function requires sdate (the chunked dimension) to save data in esarchive format. In this case, the result is independent of the start date, but the function saveExp needs the dimension with other purposes which are to create the file names, then, we can use the 'chunk_indices' just to detect the name of the output files. There are many other possible applications of this parameter, please, report other uses cases you may create. diff --git a/inst/doc/usecase.md b/inst/doc/usecase.md index 134893e..83df128 100644 --- a/inst/doc/usecase.md +++ b/inst/doc/usecase.md @@ -37,51 +37,48 @@ for more explanation. The problem may occur when the dimension number of the splitted selector is more than two. If you are not familiar with the usage of these parameters, please see usecases ex1_2 and ex1_3 first, which are less complicated. You can also go to FAQ How-to-#17 for more explanation. 8. [Loading tas and tos from Decadal Predictions performed with the EC-Earth model](inst/doc/usecase/ex1_8_tasandtos.R) - Some climate indices needs to be computed loading 'tas' (air temperature at 2m) over land and 'tos' (ocean surface temperature) over sea. Using **startR**, you can load these data in a unique **Start** call or with multiple calls separately for each variable. + Some climate indices needs to be computed loading 'tas' (air temperature at 2m) over land and 'tos' (ocean surface temperature) over sea. Using **startR**, you can load these data in a unique **Start** call or with multiple calls separately for each variable. 9. [Use glob expression * to define the path](inst/doc/usecase/ex1_9_path_glob_permissive.R) - This script shows you how to use glob expression '*' and the parameter 'path_glob_permissive' of Start(). -You can also find information in [FAQ How-to-18](inst/doc/faq.md#18-use-glob-expression-to-define-the-file-path). + This script shows you how to use glob expression '*' and the parameter 'path_glob_permissive' of Start(). You can also find information in [FAQ How-to-18](inst/doc/faq.md#18-use-glob-expression-to-define-the-file-path). 10. [Use 'metadata_dims' to retrieve complete variable metadata](inst/doc/usecase/ex1_10_metadata_dims.R) - This script tells you how to use the parameter 'metadata_dims' in Start() to get the complete variable metadata. -You will see four difference cases and learn the rules. -You can find more explanation in FAQ [How-to-20](inst/doc/faq.md#20-use-metadata_dims-to-retrieve-variable-metadata). + This script tells you how to use the parameter 'metadata_dims' in Start() to get the complete variable metadata. You will see four difference cases and learn the rules. You can find more explanation in FAQ [How-to-20](inst/doc/faq.md#20-use-metadata_dims-to-retrieve-variable-metadata). 11. [Three methods to load experimental files with different member and version](inst/doc/usecase/ex1_11_expid_member_version.R) This script shows three ways to load the data with different expid - member - version combination. It is useful for climate prediction of multiple experiments. - 12. [Load and plot data in rotated coordintaes](inst/doc/usecase/ex1_12_rotated_coordinates.R) + 12. [Load and plot data in rotated coordintaes](inst/doc/usecase/ex1_12_rotated_coordinates.R) This script shows how to load and plot data in rotated coordinates using **Monarch-dust** simulations. - 13. [Use value array as selector to express dependency](inst/doc/usecase/ex1_13_implicit_dependency.R) - This script shows how to use a value array as the inner dimension selector to express -dependency on a file dimension. By this means, we do not need to specify the *_across -parameter and Start() can recognize this dependecy relationship. + 13. [Use value array as selector to express dependency](inst/doc/usecase/ex1_13_implicit_dependency.R) + This script shows how to use a value array as the inner dimension selector to express dependency on a file dimension. By this means, we do not need to specify the *_across parameter and Start() can recognize this dependecy relationship. - 14. [Specify the dependency between file dimensions](inst/doc/usecase/ex1_14_file_dependency.R) - This script shows how to define the dependency between file dimensions. Note that ex1_13 is for -the dependency between one inner dimension and one file dimension (i.e., the usage of *_across), while -this use case is for two file dimensions (i.e., the usage of *_depends). + 14. [Specify the dependency between file dimensions](inst/doc/usecase/ex1_14_file_dependency.R) + This script shows how to define the dependency between file dimensions. Note that ex1_13 is for the dependency between one inner dimension and one file dimension (i.e., the usage of *_across), while this use case is for two file dimensions (i.e., the usage of *_depends). - 15. [Load irregular grid data](inst/doc/usecase/ex1_15_irregular_grid_CDORemap.R) + 15. [Load irregular grid data](inst/doc/usecase/ex1_15_irregular_grid_CDORemap.R) This script shows how to use Start() to load irregular grid data , then regrid it by s2dv::CDORemap. - 16. [Merge files with different time dimension length](inst/doc/usecase/ex1_16_files_different_time_dim_length.R) - This script shows how to use Start() to load files with different time dimension length -and reshape the array without undesired NAs. + 16. [Merge files with different time dimension length](inst/doc/usecase/ex1_16_files_different_time_dim_length.R) + This script shows how to use Start() to load files with different time dimension length and reshape the array without undesired NAs. 2. **Execute computation (use `Compute()`)** 1. [Function working on time dimension](inst/doc/usecase/ex2_1_timedim.R) + 2. [Function using attributes of the data](inst/doc/usecase/ex2_2_attr.R) Using attributes is only available in startR_v0.1.3 or above. + 3. [Use function CDORemap for interpolation](inst/doc/usecase/ex2_3_cdo.R) Using parameter `CDO_module` is only available in startR_v0.1.3 or above. Interpolate data by using `s2dv::CDORemap` in the workflow. + 4. [Use two functions in workflow](inst/doc/usecase/ex2_4_two_func.R) + 5. + 6. [Use external parameters in atomic function](inst/doc/usecase/ex2_6_ext_param_func.R) 7. [Calculate the ensemble-adjusted Continuous Ranked Probability Score (CRPS)](inst/doc/usecase/ex2_7_seasonal_forecast_crps.R) @@ -89,23 +86,21 @@ and reshape the array without undesired NAs. 8. [Use CSTools Calibration function](inst/doc/usecase/ex2_8_calibration.R) Use `CSTools:::.cal`, the interior function of `CSTools::CST_Calibration`, to do the bias adjustment for ECMWF experimental monthly mean data. - 9. [Use a mask to apply different methods to different gridpoints](inst/doc/usecase/ex2_9_mask.R) If you need to apply your analysis in a few gridpoints, you may want to consider use case 1.6, but if you need to load a lot of grid points, maybe this a better solution. + + 9. [Use a mask to apply different methods to different gridpoints](inst/doc/usecase/ex2_9_mask.R) + If you need to apply your analysis in a few gridpoints, you may want to consider use case 1.6, but if you need to load a lot of grid points, maybe this a better solution. 10. [Apply an existing mask on data](inst/doc/usecase/ex2_10_existing_mask.R) - This use case shows you how to apply the existing mask file on your data. -If you need to create the mask file on your own, go to ex2_9_mask.R. + This use case shows you how to apply the existing mask file on your data. If you need to create the mask file on your own, go to ex2_9_mask.R. - 11. [Two datasets with different length of target dimensions](inst/doc/usecase/ex2_11_two_dat_inconsistent_target_dim.R) - This use case uses experimental and the corresponding observational data to calculate -the temporal mean and spatial weighted mean. Notice that the spatial resolutions of the two -datasets are different, but it still works because lat and lon are target dimensions. + 11. [Two datasets with different length of target dimensions](inst/doc/usecase/ex2_11_two_dat_inconsistent_target_dim.R) + This use case uses experimental and the corresponding observational data to calculate the temporal mean and spatial weighted mean. Notice that the spatial resolutions of the two datasets are different, but it still works because lat and lon are target dimensions. - 12. [Transform and chunk spatial dimensions](inst/doc/usecase/ex2_12_transform_and_chunk.R) - This use case provides an example of transforming and chunking latitude and longitude dimensions. + 12. [Transform and chunk spatial dimensions](inst/doc/usecase/ex2_12_transform_and_chunk.R) + This use case provides an example of transforming and chunking latitude and longitude dimensions. - 13. [Load irregular grid data and interpolate it in the workflow](inst/doc/usecase/ex2_13_irregular_regrid.R) - This script shows how to load irregular grid data by Start(), then regrid it -by s2dv::CDORemap in the workflow. It is a solution before Start() can deal with irregular regridding directly. + 13. [Load irregular grid data and interpolate it in the workflow](inst/doc/usecase/ex2_13_irregular_regrid.R) + This script shows how to load irregular grid data by Start(), then regrid it by s2dv::CDORemap in the workflow. It is a solution before Start() can deal with irregular regridding directly. - 14. [RainFARM precipitation downscaling](https://earth.bsc.es/gitlab/es/startR/-/blob/develop-RainFARMCase/inst/doc/usecase/ex2_14_rainFARM.R) - This example shows how to use a downscaling function and given that the memory size increase it saves the data by chunks in the esarchive format. It not recommended to save big outputs. Consider to perform some analysis and then retrieve the result instead of saving data. This is a simplified example of RainFARM for more information visit: https://www.medscope-project.eu/products/data/ + 14. [RainFARM precipitation downscaling](https://earth.bsc.es/gitlab/es/startR/-/blob/develop-RainFARMCase/inst/doc/usecase/ex2_14_rainFARM.R) + This example shows how to apply a statistical downscaling function with startR and simultaneously (considering the memory size if unnecessary dimensions are included) saves the data by chunks (e.g., chunking those dimensions which are not required for downscaling) in the esarchive format. It is not recommended to save big outputs. Consider to perform some analysis and then retrieve the result instead of saving data. This is a simplified example of RainFARM for more information visit: https://www.medscope-project.eu/products/data/. \ No newline at end of file diff --git a/inst/doc/usecase/ex2_14_rainFARM.R b/inst/doc/usecase/ex2_14_rainFARM.R index bebb841..d43335f 100644 --- a/inst/doc/usecase/ex2_14_rainFARM.R +++ b/inst/doc/usecase/ex2_14_rainFARM.R @@ -22,7 +22,7 @@ path <- "/esarchive/exp/ecmwf/system5c3s/daily/$var$_s0-24h/$var$_$sdate$.nc" data <- Start(dataset = path, var = 'prlr', sdate = sdates, - member = 'all', + member = c(1:3), longitude = values(list(-10, 30)), longitude_reorder = CircularSort(-180, 180), latitude = values(list(18, 58)), @@ -50,12 +50,12 @@ Chunk_RF <- function(x, nf, destination, startdates, nchunks = chunk_indices) { vals = as.vector(down_data$lon), longname = 'longitude'), ncdim_def(name = 'lat', units = 'degrees', vals = as.vector(down_data$lat), longname = 'longitude'), - ncdim_def(name = 'ensemble', units = "adim", + ncdim_def(name = 'ensemble', units = 'adim', vals = 1 : dim(down_data$data)[which(dimname == 'member')], longname = 'ensemble', create_dimvar = TRUE)) # startdates and dates depends on the chunk: CSTools:::.saveExp(down_data$data, dims_var = var_dims, - var_name = 'tas', units = 'K', sdate = startdates[nchunks['sdate']], + var_name = 'prlr', units = 'm s-1', sdate = startdates[nchunks['sdate']], Dates = dates[[nchunks['sdate']]], cdo_grid_name = paste0('r', length(lon), 'x', length(lat)), projection = 'none', destination = destination) -- GitLab From d385a9f442b5eb9388cabaf5d7717a175015dc6c Mon Sep 17 00:00:00 2001 From: Eva Rifa Date: Thu, 13 Apr 2023 10:35:23 +0200 Subject: [PATCH 08/15] Add line break in usecase start --- inst/doc/usecase.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/inst/doc/usecase.md b/inst/doc/usecase.md index 83df128..01e1f66 100644 --- a/inst/doc/usecase.md +++ b/inst/doc/usecase.md @@ -49,7 +49,8 @@ The problem may occur when the dimension number of the splitted selector is more This script shows three ways to load the data with different expid - member - version combination. It is useful for climate prediction of multiple experiments. 12. [Load and plot data in rotated coordintaes](inst/doc/usecase/ex1_12_rotated_coordinates.R) - This script shows how to load and plot data in rotated coordinates using **Monarch-dust** simulations. + This script shows how to load and plot data in rotated coordinates using **Monarch-dust** simulations. + 13. [Use value array as selector to express dependency](inst/doc/usecase/ex1_13_implicit_dependency.R) @@ -86,7 +87,7 @@ The problem may occur when the dimension number of the splitted selector is more 8. [Use CSTools Calibration function](inst/doc/usecase/ex2_8_calibration.R) Use `CSTools:::.cal`, the interior function of `CSTools::CST_Calibration`, to do the bias adjustment for ECMWF experimental monthly mean data. - + 9. [Use a mask to apply different methods to different gridpoints](inst/doc/usecase/ex2_9_mask.R) If you need to apply your analysis in a few gridpoints, you may want to consider use case 1.6, but if you need to load a lot of grid points, maybe this a better solution. -- GitLab From ba24c76d867737b1eda412f9d059247bed9921a1 Mon Sep 17 00:00:00 2001 From: Eva Rifa Date: Thu, 13 Apr 2023 10:40:05 +0200 Subject: [PATCH 09/15] Update cropped figure of Rotated coordinates from usecase --- inst/doc/figures/Rotated_Coordinates.png | Bin 88892 -> 87588 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/inst/doc/figures/Rotated_Coordinates.png b/inst/doc/figures/Rotated_Coordinates.png index c5bc9cf55905972921a816e1bf10a1b8c1e9d8fb..e8a6e2ec30437a9a3978e578159ce288cf4f17aa 100644 GIT binary patch literal 87588 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 U&O@3E?Oh0E1$FsyS<9FI3+8WAMgRZ+ -- GitLab From 369f4e11c5178dc81e4711b458989d434bf65e36 Mon Sep 17 00:00:00 2001 From: Eva Rifa Date: Wed, 19 Apr 2023 16:36:36 +0200 Subject: [PATCH 10/15] Final update to the code --- inst/doc/usecase.md | 4 +- inst/doc/usecase/ex2_14_rainFARM.R | 115 +++++++++++++++-------------- 2 files changed, 62 insertions(+), 57 deletions(-) diff --git a/inst/doc/usecase.md b/inst/doc/usecase.md index 01e1f66..2496011 100644 --- a/inst/doc/usecase.md +++ b/inst/doc/usecase.md @@ -50,7 +50,7 @@ The problem may occur when the dimension number of the splitted selector is more 12. [Load and plot data in rotated coordintaes](inst/doc/usecase/ex1_12_rotated_coordinates.R) This script shows how to load and plot data in rotated coordinates using **Monarch-dust** simulations. - + 13. [Use value array as selector to express dependency](inst/doc/usecase/ex1_13_implicit_dependency.R) @@ -78,7 +78,7 @@ The problem may occur when the dimension number of the splitted selector is more 4. [Use two functions in workflow](inst/doc/usecase/ex2_4_two_func.R) - 5. + 5. 6. [Use external parameters in atomic function](inst/doc/usecase/ex2_6_ext_param_func.R) diff --git a/inst/doc/usecase/ex2_14_rainFARM.R b/inst/doc/usecase/ex2_14_rainFARM.R index d43335f..2e11f7a 100644 --- a/inst/doc/usecase/ex2_14_rainFARM.R +++ b/inst/doc/usecase/ex2_14_rainFARM.R @@ -1,28 +1,32 @@ -# ------------------------------------------- +# ------------------------------------------------------------------------------ # Downscaling precipitation using RainFARM -# ------------------------------------------- +# ------------------------------------------------------------------------------ # Note 1: The data could be first transformed with QuantileMapping from CSTools -# Note 2: Extra parameters could be use to downscale the data: weights, slope... -# See more information in https://cran.r-project.org/web/packages/CSTools/vignettes/RainFARM_vignette.html or https://drive.google.com/file/d/1ltB2vypHrk1B-x1h2BQF4qBXv5spbXmG/view -# ------------------------------------------- -# MORE IMPORTANT NOTE: -# startR is aim to return a result that fits in your local memory. This aim is the oposite of downscale, which output size increase. Therefore, this example save the data in NetCDF files and provides the Mean which has a reduced size. +# Note 2: Extra parameters could be used to downscale the data: weights, slope... +# See more information in: +# https://cran.r-project.org/web/packages/CSTools/vignettes/RainFARM_vignette.html +# ------------------------------------------------------------------------------ +# MOST IMPORTANT NOTE: +# startR aims to return a result that fits in your local memory. This aim is +# the oposite of downscaling, which increases the output size. Therefore, this +# example saves the data to NetCDF files and provides the mean which has a +# reduced size. # Warning!!!!!! Use this example with caution to avoid saving not desired data. -#------------------------------------------- +#------------------------------------------------------------------------------- # Load libraries and functions: library(startR) library(CSTools) library(ncdf4) -library(s2dv) # could be removed when CST_SaveExp is merged in CSTools - +library(s2dv) + # Define the data: sdates <- paste0(1993:1996, '1101') # starting dates path <- "/esarchive/exp/ecmwf/system5c3s/daily/$var$_s0-24h/$var$_$sdate$.nc" data <- Start(dataset = path, var = 'prlr', sdate = sdates, - member = c(1:3), + member = 'all', longitude = values(list(-10, 30)), longitude_reorder = CircularSort(-180, 180), latitude = values(list(18, 58)), @@ -32,35 +36,36 @@ data <- Start(dataset = path, synonims = list(latitude = c('lat', 'latitude'), longitude = c('lon', 'longitude'), member = c('member', 'ensemble')), - retrieve = FALSE) + retrieve = FALSE) # Define the function: - Chunk_RF <- function(x, nf, destination, startdates, nchunks = chunk_indices) { - lon <- as.numeric(attributes(x)$Variables$dat1$longitude) - lat <- as.numeric(attributes(x)$Variables$dat1$latitude) - down_data <- RainFARM(x, lon = lon, lat = lat, drop_realization_dim = TRUE, - nf, lon_dim = 'longitude', lat_dim = 'latitude') - # detect the dates of forecast time for different start dates - time <- attributes(x)$Variables$common$time - dates <- lapply(startdates, function(x) {seq(as.Date(x, format = "%Y-%m-%d"), - x + length(time) - 1, 'day')}) - dimname <- names(dim(down_data$data)) - var_dims <- list(ncdim_def(name = 'lon', units = 'degrees', - vals = as.vector(down_data$lon), longname = 'longitude'), - ncdim_def(name = 'lat', units = 'degrees', - vals = as.vector(down_data$lat), longname = 'longitude'), - ncdim_def(name = 'ensemble', units = 'adim', - vals = 1 : dim(down_data$data)[which(dimname == 'member')], - longname = 'ensemble', create_dimvar = TRUE)) -# startdates and dates depends on the chunk: - CSTools:::.saveExp(down_data$data, dims_var = var_dims, - var_name = 'prlr', units = 'm s-1', sdate = startdates[nchunks['sdate']], - Dates = dates[[nchunks['sdate']]], - cdo_grid_name = paste0('r', length(lon), 'x', length(lat)), - projection = 'none', destination = destination) - down_data_mean <- MeanDims(down_data$data, c('member', 'longitude', 'latitude')) - return(down_data_mean) + lon <- as.numeric(attributes(x)$Variables$dat1$longitude) + lat <- as.numeric(attributes(x)$Variables$dat1$latitude) + down_data <- RainFARM(x, lon = lon, lat = lat, drop_realization_dim = TRUE, + nf, lon_dim = 'longitude', lat_dim = 'latitude', time_dim = 'time') + # detect the dates of forecast time for different start dates + time <- attributes(x)$Variables$common$time + dates <- lapply(startdates, function(x) {seq(as.Date(x, format = "%Y-%m-%d"), + x + length(time) - 1, 'day')}) + dimname <- names(dim(down_data$data)) + var_dims <- list(ncdim_def(name = 'lon', units = 'degrees', + vals = as.vector(down_data$lon), longname = 'longitude'), + ncdim_def(name = 'lat', units = 'degrees', + vals = as.vector(down_data$lat), longname = 'longitude'), + ncdim_def(name = 'ensemble', units = 'adim', + vals = 1 : dim(down_data$data)[which(dimname == 'member')], + longname = 'ensemble', create_dimvar = TRUE)) + metadata_var <- list(units = 'm s-1', + cdo_grid_name = paste0('r', length(lon), 'x', length(lat)), + projection = 'none') + # startdates and dates depends on the chunk: + CSTools:::.saveExp(down_data$data, startdates = startdates[nchunks['sdate']], + dates = dates[[nchunks['sdate']]], defined_dims = var_dims, + varname = 'prlr', metadata_var = metadata_var, + destination = destination) + down_data_mean <- MeanDims(down_data$data, c('member', 'longitude', 'latitude')) + return(down_data_mean) } step <- Step(Chunk_RF, @@ -79,26 +84,26 @@ res <- Compute(workflow, threads_compute = 4) #-----------modify according to your personal info--------- - queue_host = 'nord3' #your own host name for power9 + queue_host = 'nord3' # your own host name for power9 temp_dir = '/gpfs/scratch/bsc32/bsc32339/startR_hpc/' - ecflow_suite_dir = '/home/Earth/nperez/startR_local/' #your own local directory + ecflow_suite_dir = '/home/Earth/nperez/startR_local/' # your own local directory #------------------------------------------------------------ - res <- Compute(workflow, - chunks = list(sdate = 4), - threads_load = 1, - threads_compute = 1, - cluster = list(queue_host = queue_host, - queue_type = 'lsf', - extra_queue_params = list('#BSUB -q bsc_es'), - cores_per_job = 1, - temp_dir = temp_dir, - polling_period = 10, - job_wallclock = '00:30', - max_jobs = 4, - bidirectional = FALSE), - ecflow_suite_dir = ecflow_suite_dir, - wait = TRUE) +res <- Compute(workflow, + chunks = list(sdate = 4), + threads_load = 1, + threads_compute = 1, + cluster = list(queue_host = queue_host, + queue_type = 'slurm', + extra_queue_params = list('#SBATCH --constraint=medmem'), + cores_per_job = 1, + temp_dir = temp_dir, + polling_period = 10, + job_wallclock = '00:30', + max_jobs = 4, + bidirectional = FALSE), + ecflow_suite_dir = ecflow_suite_dir, + wait = TRUE) # Visualize the temporal evolution of the result simultaneously for all sdates: -matplot(1:214, res$output1[,1,1,], type = "l") +matplot(1:215, res$output1[, 1, 1, ], type = "l") -- GitLab From 28046d09d6118594e76e30f9f6b7511db92d17e5 Mon Sep 17 00:00:00 2001 From: Eva Rifa Date: Thu, 20 Apr 2023 17:22:30 +0200 Subject: [PATCH 11/15] Add r_module in Compute call and change filename to 2_5 use case --- inst/doc/faq.md | 2 +- inst/doc/usecase.md | 6 ++---- .../{ex2_14_rainFARM.R => ex2_5_rainFARM.R} | 14 +++++++------- 3 files changed, 10 insertions(+), 12 deletions(-) rename inst/doc/usecase/{ex2_14_rainFARM.R => ex2_5_rainFARM.R} (92%) diff --git a/inst/doc/faq.md b/inst/doc/faq.md index e1ba10d..0e1765f 100644 --- a/inst/doc/faq.md +++ b/inst/doc/faq.md @@ -1004,7 +1004,7 @@ When very complex analyses are being carried in a single step, the analyses may Being in this latest case, and depending on the analyses to be performed, we may be able to chunk in a dimension that is being used in the analysis. You just need to define a parameter in your function 'nchunks = chunk_indices' and use it in the same function. -You can find a working example in [use case #10 for RainFARM downscaling](https://earth.bsc.es/gitlab/es/startR/-/blob/develop-RainFARMCase/inst/doc/usecase/ex2_14_rainFARM.R). In that example the start date dimension is being used to chunk since the downscaling method only needs the lon and lat but the following function requires sdate (the chunked dimension) to save data in esarchive format. In this case, the result is independent of the start date, but the function saveExp needs the dimension with other purposes which are to create the file names, then, we can use the 'chunk_indices' just to detect the name of the output files. +You can find a working example in use case [RainFARM precipitation downscaling](https://earth.bsc.es/gitlab/es/startR/-/blob/develop-RainFARMCase/inst/doc/usecase/ex2_5_rainFARM.R). In that example the start date dimension is being used to chunk since the downscaling method only needs the lon and lat but the following function requires sdate (the chunked dimension) to save data in esarchive format. In this case, the result is independent of the start date, but the function saveExp needs the dimension with other purposes which are to create the file names, then, we can use the 'chunk_indices' just to detect the name of the output files. There are many other possible applications of this parameter, please, report other uses cases you may create. diff --git a/inst/doc/usecase.md b/inst/doc/usecase.md index 2496011..749d6c4 100644 --- a/inst/doc/usecase.md +++ b/inst/doc/usecase.md @@ -78,7 +78,8 @@ The problem may occur when the dimension number of the splitted selector is more 4. [Use two functions in workflow](inst/doc/usecase/ex2_4_two_func.R) - 5. + 5. [RainFARM precipitation downscaling](https://earth.bsc.es/gitlab/es/startR/-/blob/develop-RainFARMCase/inst/doc/usecase/ex2_5_rainFARM.R) + This example shows how to apply a statistical downscaling function with startR and simultaneously (considering the memory size if unnecessary dimensions are included) saves the data by chunks (e.g., chunking those dimensions which are not required for downscaling) in the esarchive format. It is not recommended to save big outputs. Consider to perform some analysis and then retrieve the result instead of saving data. This is a simplified example of RainFARM for more information visit: https://www.medscope-project.eu/products/data/. 6. [Use external parameters in atomic function](inst/doc/usecase/ex2_6_ext_param_func.R) @@ -102,6 +103,3 @@ The problem may occur when the dimension number of the splitted selector is more 13. [Load irregular grid data and interpolate it in the workflow](inst/doc/usecase/ex2_13_irregular_regrid.R) This script shows how to load irregular grid data by Start(), then regrid it by s2dv::CDORemap in the workflow. It is a solution before Start() can deal with irregular regridding directly. - - 14. [RainFARM precipitation downscaling](https://earth.bsc.es/gitlab/es/startR/-/blob/develop-RainFARMCase/inst/doc/usecase/ex2_14_rainFARM.R) - This example shows how to apply a statistical downscaling function with startR and simultaneously (considering the memory size if unnecessary dimensions are included) saves the data by chunks (e.g., chunking those dimensions which are not required for downscaling) in the esarchive format. It is not recommended to save big outputs. Consider to perform some analysis and then retrieve the result instead of saving data. This is a simplified example of RainFARM for more information visit: https://www.medscope-project.eu/products/data/. \ No newline at end of file diff --git a/inst/doc/usecase/ex2_14_rainFARM.R b/inst/doc/usecase/ex2_5_rainFARM.R similarity index 92% rename from inst/doc/usecase/ex2_14_rainFARM.R rename to inst/doc/usecase/ex2_5_rainFARM.R index 2e11f7a..106e03c 100644 --- a/inst/doc/usecase/ex2_14_rainFARM.R +++ b/inst/doc/usecase/ex2_5_rainFARM.R @@ -26,10 +26,10 @@ path <- "/esarchive/exp/ecmwf/system5c3s/daily/$var$_s0-24h/$var$_$sdate$.nc" data <- Start(dataset = path, var = 'prlr', sdate = sdates, - member = 'all', - longitude = values(list(-10, 30)), + member = 1:3, + longitude = values(list(-10, 29)), longitude_reorder = CircularSort(-180, 180), - latitude = values(list(18, 58)), + latitude = values(list(18, 57)), time = 'all', return_vars = list(latitude = 'dataset', longitude = 'dataset', time = NULL), @@ -64,7 +64,7 @@ Chunk_RF <- function(x, nf, destination, startdates, nchunks = chunk_indices) { dates = dates[[nchunks['sdate']]], defined_dims = var_dims, varname = 'prlr', metadata_var = metadata_var, destination = destination) - down_data_mean <- MeanDims(down_data$data, c('member', 'longitude', 'latitude')) + down_data_mean <- s2dv::MeanDims(down_data$data, c('member', 'longitude', 'latitude')) return(down_data_mean) } @@ -95,11 +95,11 @@ res <- Compute(workflow, threads_compute = 1, cluster = list(queue_host = queue_host, queue_type = 'slurm', - extra_queue_params = list('#SBATCH --constraint=medmem'), - cores_per_job = 1, + cores_per_job = 16, + r_module = 'R/4.1.2-foss-2019b', temp_dir = temp_dir, polling_period = 10, - job_wallclock = '00:30', + job_wallclock = '01:00:00', max_jobs = 4, bidirectional = FALSE), ecflow_suite_dir = ecflow_suite_dir, -- GitLab From c41dda96dc3f8ad3fb1f510f43708122f744cdc4 Mon Sep 17 00:00:00 2001 From: aho Date: Fri, 21 Apr 2023 15:42:26 +0200 Subject: [PATCH 12/15] Revise FAQ and improve doc --- inst/doc/faq.md | 31 ++++++++++++++++--------------- inst/doc/usecase.md | 3 ++- inst/doc/usecase/ex2_5_rainFARM.R | 2 +- 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/inst/doc/faq.md b/inst/doc/faq.md index 0e1765f..5c470b3 100644 --- a/inst/doc/faq.md +++ b/inst/doc/faq.md @@ -30,7 +30,7 @@ This document intends to be the first reference for any doubts that you may have 24. [Do both interpolation and chunking on spatial dimensions](#24-do-both-interpolation-and-chunking-on-spatial-dimensions) 25. [What to do if your function has too many target dimensions](#25-what-to-do-if-your-function-has-too-many-target-dimensions) 26. [Use merge_across_dims_narm to remove NAs](#26-use-merge_across_dims_narm-to-remove-nas) - 27. [Know and use chunk number](#27-know-and-use-chunk-number) + 27. [Utilize chunk number in the function](#27-utilize-chunk-number-in-the-function) 2. **Something goes wrong...** @@ -978,7 +978,10 @@ We provide some [use cases](inst/doc/usecase/ex2_12_transform_and_chunk.R) showi ### 25. What to do if your function has too many target dimensions -Unfortunately, we don't have a perfect solution now before we have multiple steps feature. Talk to maintainers to see how to generate a workaround for your case. +Ideally, the desired startR workflow uses those required (for the key computations) dimensions to compute an analysis and the rest to chunk the data in pieces. +If we have a complex analysis that require all the dimensions in the computation in one single step, we don't have any free (i.e., margin) dimension to chunk the data. +Unfortunately, we don't have a perfect solution now before we have multiple steps feature. +You may check [How-to-27](#27-utilize-chunk-number-in-the-function) to see if the solution applies to your case. If not, talk to the maintainers to see how to generate a workaround for your case. ### 26. Use merge_across_dims_narm to remove NAs @@ -992,23 +995,21 @@ This parameter tells Start() that it needs to look into each file to know the di A typical example is reading daily data and merging time dimension together. The 30-day months will have one NA at the end of time dimension, if `merge_across_dims_narm = T` and `largest_dims_length = T` are not used. Check usecase [ex1_16](/inst/doc/usecase/ex1_16_files_different_time_dim_length.R) for the example script. See [How-to-21](#21-retrieve-the-complete-data-when-the-dimension-length-varies-among-files) for more details of `largest_dims_length`. - +### 27. Utilize chunk number the function +In the self-defined function in startR workflow, the dimensions required for the computations are used as target dimensions, +and the rest can be used to chunk the data in pieces. There is one situation that some information of one dimension is needed in the function but it is not depended by the computation. +In this case, we may be able to chunk through this dimension while using it in the function still. It is a saver if you have a complex case with no margin dimension left (see How-to-26(#26-use-merge_across_dims_narm-to-remove-nas).) +You just need to define a parameter in your function 'nchunks = chunk_indices' and use it in the function. -### 27. Know and use chunk number - -The final aim of the startR workflow is to avoid crashing the R session memory due to the size of the input data. Therefore, the desired workflow of startR will use those required (for the key computations) data dimensions to compute an analysis and the rest to chunk the data in pieces. - -When very complex analyses are being carried in a single step, the analyses may use all dimensions for computation and any free dimension could be used to chunk the data in pieces. - -Being in this latest case, and depending on the analyses to be performed, we may be able to chunk in a dimension that is being used in the analysis. You just need to define a parameter in your function 'nchunks = chunk_indices' and use it in the same function. - -You can find a working example in use case [RainFARM precipitation downscaling](https://earth.bsc.es/gitlab/es/startR/-/blob/develop-RainFARMCase/inst/doc/usecase/ex2_5_rainFARM.R). In that example the start date dimension is being used to chunk since the downscaling method only needs the lon and lat but the following function requires sdate (the chunked dimension) to save data in esarchive format. In this case, the result is independent of the start date, but the function saveExp needs the dimension with other purposes which are to create the file names, then, we can use the 'chunk_indices' just to detect the name of the output files. - -There are many other possible applications of this parameter, please, report other uses cases you may create. - +The use case [RainFARM precipitation downscaling](https://earth.bsc.es/gitlab/es/startR/-/blob/develop-RainFARMCase/inst/doc/usecase/ex2_5_rainFARM.R) demonstrates an example that the start date dimension is used as chunking dimension, +but we use its chunk number to know the start date value of each chunk. +The first part of the function performs downscaling method, which requres longitude and latitude dimensions, so these two dimensions must be the target dimensions in the workflow. +After that, the results are saved as netCDF file following esarchive convention. We need start date value here to decide the file name. +As you can see, the sdate dimension is not required for the computation, so it is not necessary to be the target dimension. We can just use 'chunk_indices' to get the chunk number therefore get the corresponding start date value for the file name. +There are many other possible applications of this parameter. Please share with us other uses cases you may create. # Something goes wrong... diff --git a/inst/doc/usecase.md b/inst/doc/usecase.md index 749d6c4..8224bbe 100644 --- a/inst/doc/usecase.md +++ b/inst/doc/usecase.md @@ -79,7 +79,8 @@ The problem may occur when the dimension number of the splitted selector is more 4. [Use two functions in workflow](inst/doc/usecase/ex2_4_two_func.R) 5. [RainFARM precipitation downscaling](https://earth.bsc.es/gitlab/es/startR/-/blob/develop-RainFARMCase/inst/doc/usecase/ex2_5_rainFARM.R) - This example shows how to apply a statistical downscaling function with startR and simultaneously (considering the memory size if unnecessary dimensions are included) saves the data by chunks (e.g., chunking those dimensions which are not required for downscaling) in the esarchive format. It is not recommended to save big outputs. Consider to perform some analysis and then retrieve the result instead of saving data. This is a simplified example of RainFARM for more information visit: https://www.medscope-project.eu/products/data/. + This example shows how to apply a statistical downscaling function with startR and simultaneously (considering the memory size if unnecessary dimensions are included) saves the data by chunks (e.g., chunking those dimensions which are not required for downscaling) in the esarchive format. It is not recommended to save big outputs. Consider to perform some analysis and then retrieve the result instead of saving data. This is a simplified example of RainFARM for more information visit: https://www.medscope-project.eu/products/data/. +Find more explanation of this use case in FAQ [How-to-27](inst/doc/faq.md#27-utilize-chunk-number-in-the-function). 6. [Use external parameters in atomic function](inst/doc/usecase/ex2_6_ext_param_func.R) diff --git a/inst/doc/usecase/ex2_5_rainFARM.R b/inst/doc/usecase/ex2_5_rainFARM.R index 106e03c..8d315a0 100644 --- a/inst/doc/usecase/ex2_5_rainFARM.R +++ b/inst/doc/usecase/ex2_5_rainFARM.R @@ -84,7 +84,7 @@ res <- Compute(workflow, threads_compute = 4) #-----------modify according to your personal info--------- - queue_host = 'nord3' # your own host name for power9 + queue_host = 'nord3' # your own host name for nord3v2 temp_dir = '/gpfs/scratch/bsc32/bsc32339/startR_hpc/' ecflow_suite_dir = '/home/Earth/nperez/startR_local/' # your own local directory #------------------------------------------------------------ -- GitLab From d40ceb826b7b3b1109a5ad32a25f378b2a0e64dc Mon Sep 17 00:00:00 2001 From: aho Date: Fri, 21 Apr 2023 15:44:59 +0200 Subject: [PATCH 13/15] Correct title --- inst/doc/faq.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inst/doc/faq.md b/inst/doc/faq.md index 5c470b3..e76c7e5 100644 --- a/inst/doc/faq.md +++ b/inst/doc/faq.md @@ -997,7 +997,7 @@ Check usecase [ex1_16](/inst/doc/usecase/ex1_16_files_different_time_dim_length. See [How-to-21](#21-retrieve-the-complete-data-when-the-dimension-length-varies-among-files) for more details of `largest_dims_length`. -### 27. Utilize chunk number the function +### 27. Utilize chunk number in the function In the self-defined function in startR workflow, the dimensions required for the computations are used as target dimensions, and the rest can be used to chunk the data in pieces. There is one situation that some information of one dimension is needed in the function but it is not depended by the computation. In this case, we may be able to chunk through this dimension while using it in the function still. It is a saver if you have a complex case with no margin dimension left (see How-to-26(#26-use-merge_across_dims_narm-to-remove-nas).) -- GitLab From 0337a8100f6e45c6a48da451e790506eac9dd15a Mon Sep 17 00:00:00 2001 From: aho Date: Fri, 21 Apr 2023 15:46:43 +0200 Subject: [PATCH 14/15] Correct link --- inst/doc/faq.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inst/doc/faq.md b/inst/doc/faq.md index e76c7e5..6b4e3a8 100644 --- a/inst/doc/faq.md +++ b/inst/doc/faq.md @@ -1000,7 +1000,7 @@ See [How-to-21](#21-retrieve-the-complete-data-when-the-dimension-length-varies- ### 27. Utilize chunk number in the function In the self-defined function in startR workflow, the dimensions required for the computations are used as target dimensions, and the rest can be used to chunk the data in pieces. There is one situation that some information of one dimension is needed in the function but it is not depended by the computation. -In this case, we may be able to chunk through this dimension while using it in the function still. It is a saver if you have a complex case with no margin dimension left (see How-to-26(#26-use-merge_across_dims_narm-to-remove-nas).) +In this case, we may be able to chunk through this dimension while using it in the function still. It is a saver if you have a complex case with no margin dimension left (see [How-to-26](#26-use-merge_across_dims_narm-to-remove-nas).) You just need to define a parameter in your function 'nchunks = chunk_indices' and use it in the function. The use case [RainFARM precipitation downscaling](https://earth.bsc.es/gitlab/es/startR/-/blob/develop-RainFARMCase/inst/doc/usecase/ex2_5_rainFARM.R) demonstrates an example that the start date dimension is used as chunking dimension, -- GitLab From e467f0610f4f90beda1c7916ae940012e66171e4 Mon Sep 17 00:00:00 2001 From: aho Date: Fri, 21 Apr 2023 15:48:21 +0200 Subject: [PATCH 15/15] Correct link --- inst/doc/faq.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inst/doc/faq.md b/inst/doc/faq.md index 6b4e3a8..1508742 100644 --- a/inst/doc/faq.md +++ b/inst/doc/faq.md @@ -1000,7 +1000,7 @@ See [How-to-21](#21-retrieve-the-complete-data-when-the-dimension-length-varies- ### 27. Utilize chunk number in the function In the self-defined function in startR workflow, the dimensions required for the computations are used as target dimensions, and the rest can be used to chunk the data in pieces. There is one situation that some information of one dimension is needed in the function but it is not depended by the computation. -In this case, we may be able to chunk through this dimension while using it in the function still. It is a saver if you have a complex case with no margin dimension left (see [How-to-26](#26-use-merge_across_dims_narm-to-remove-nas).) +In this case, we may be able to chunk through this dimension while using it in the function still. It is a saver if you have a complex case with no margin dimension left (see [How-to-25](#25-what-to-do-if-your-function-has-too-many-target-dimensions).) You just need to define a parameter in your function 'nchunks = chunk_indices' and use it in the function. The use case [RainFARM precipitation downscaling](https://earth.bsc.es/gitlab/es/startR/-/blob/develop-RainFARMCase/inst/doc/usecase/ex2_5_rainFARM.R) demonstrates an example that the start date dimension is used as chunking dimension, -- GitLab