diff redelacSticsInputGenerator.R @ 14:812bb8097dac draft

"planemo upload for repository https://forgemia.inra.fr/redelac commit d16b9ecdb4dd51b69a6aaa4ab298b82455fe0267"
author siwaa
date Tue, 12 Dec 2023 10:38:20 +0000
parents f707c2fb725b
children 413cec4dfe5f
line wrap: on
line diff
--- a/redelacSticsInputGenerator.R	Fri Oct 27 09:17:06 2023 +0000
+++ b/redelacSticsInputGenerator.R	Tue Dec 12 10:38:20 2023 +0000
@@ -3,6 +3,7 @@
 library(lubridate)
 library(parallel)
 library(doParallel)
+library(doFuture)
 
 sessionInfo()
 
@@ -21,9 +22,11 @@
 
 args = commandArgs(trailingOnly = TRUE)
 
-genUSMsXmlOneAfterOther <- (args[1] == "usmx_one_after_other")
+redelac <- (args[1] == "optim")
 parallel <- (args[2] == "parallel")
+print(paste("parallel:", parallel, args[2]))
 nbSlots <- as.integer(args[3])
+print(paste("nbslots:", nbSlots))
 
 # USMs file loading
 
@@ -72,92 +75,37 @@
 
 gen_sta_xml(param_df = sta_param, out_dir = workspace)
 
-if (genUSMsXmlOneAfterOther) {
-
-  durGenX <- lubridate::as.duration(0)
-  durGenT <- lubridate::as.duration(0)
-
-  if (parallel) {
-    cl <- makeCluster(nbSlots)
-    print(cl)
-    registerDoParallel(cl)
-    `%dordopar%` <- `%dopar%`
-  } else {
-    `%dordopar%` <- `%do%`
-  }
-
-  # looping on USMs
-  loopRes <- foreach::foreach(i = 1:nrow(usms_param),
-    .packages = c("SticsRFiles", "lubridate")) %dordopar% {
-
-    beforeGenXmlTimeI <- Sys.time()
-
-    usmxFileName = paste0("usms", as.character(i) , ".xml")
-
-    usmxFilePath  = file.path(workspace, usmxFileName)
-
-    gen_usms_xml(file = usmxFilePath,
-                 param_df = usms_param[i, ])
-
-    afterGenXmlTimeI <- Sys.time()
-    durGenXI <-
-      lubridate::as.duration(lubridate::interval(beforeGenXmlTimeI,
-                                                 afterGenXmlTimeI))
-
-    # one after the other generating txt folder
-
-    beforeGenTxtTimeI <- Sys.time()
-
-    gen_usms_xml2txt(
-      usms_file = usmxFileName,
-      javastics = javastics_path,
-      workspace = workspace,
-      out_dir = txt_path,
-      verbose = TRUE
-    )
-
-    afterGenTxtTimeI <- Sys.time()
-    durGenTI <-
-      lubridate::as.duration(lubridate::interval(beforeGenTxtTimeI,
-                                                 afterGenTxtTimeI))
-
-    return(c(durGenXI, durGenTI))
-  }
-
-  if (parallel) stopCluster(cl)
-
-  durDS <- as.data.frame(do.call(rbind, loopRes))
-  durGenX <- sum(durDS[1])
-  durGenT <- sum(durDS[2])
-
-} else {
-
-  beforeGenXmlTime <- Sys.time()
-
-  gen_usms_xml(file = file.path(workspace, "usms.xml"),
-               param_df = usms_param)
-
-  afterGenXmlTime <- Sys.time()
-  durGenX <-
-    lubridate::as.duration(lubridate::interval(beforeGenXmlTime,
-                                               afterGenXmlTime))
-
-  beforeGenTxtTime <- Sys.time()
-
-  gen_usms_xml2txt(
-    javastics = javastics_path,
-    workspace = workspace,
-    out_dir = txt_path,
-    verbose = TRUE
-  )
-
-  afterGenTxtTime <- Sys.time()
-  durGenT <-
-    lubridate::as.duration(lubridate::interval(beforeGenTxtTime,
-                                               afterGenTxtTime))
-
+if (parallel) {
+  doFuture::registerDoFuture()
+  future::plan(multisession, workers = nbSlots)
 }
 
+beforeGenXmlTime <- Sys.time()
+
+gen_usms_xml(file = file.path(workspace, "usms.xml"),
+             param_df = usms_param)
+
+afterGenXmlTime <- Sys.time()
+durGenX <-
+  lubridate::as.duration(lubridate::interval(beforeGenXmlTime,
+                                             afterGenXmlTime))
+beforeGenTxtTime <- Sys.time()
+
+gen_usms_xml2txt(
+  javastics = javastics_path,
+  workspace = workspace,
+  out_dir = txt_path,
+  usms_file = "usms.xml",
+  redelac = redelac,
+  parallel = parallel,
+  verbose = FALSE
+)
+
+afterGenTxtTime <- Sys.time()
+durGenT <-
+  lubridate::as.duration(lubridate::interval(beforeGenTxtTime,
+                                             afterGenTxtTime))
+					     
 endTime <- Sys.time()
 
 dur <-
@@ -167,8 +115,10 @@
 
 print("REDELACSticsInputGenerator Report")
 print("=================================")
-print(paste0("number of usms: ", nrow(usms_param)))
-print(paste("usms.xml one after the other:", genUSMsXmlOneAfterOther))
+print(paste("number of usms: ", nrow(usms_param)))
+print(paste("redelac optimization:", redelac)) 
+print(paste("process in parallel:", parallel))
+print(paste("nbslots:", nbSlots))
 
 sprintf(
   'overall duration: %g jour(s) %g heure(s) %g minute(s) %g seconde(s)',