comparison redelacSticsInputGenerator.R @ 9:2a6d7d053ba7 draft

"planemo upload for repository https://forgemia.inra.fr/redelac commit adcac73e150f1f821b4b7f7673a490dc0fadc936"
author siwaa
date Mon, 25 Sep 2023 16:25:51 +0000
parents fb6f7d60508d
children f707c2fb725b
comparison
equal deleted inserted replaced
8:0625e6a639ea 9:2a6d7d053ba7
1 library(SticsRFiles) 1 library(SticsRFiles)
2 library(dplyr) 2 library(dplyr)
3 library(lubridate) 3 library(lubridate)
4 library(parallel)
5 library(doParallel)
4 6
7 sessionInfo()
5 8
6 startTime <- Sys.time() 9 startTime <- Sys.time()
7 10
8 workspace <- paste0(getwd(), "/WS") 11 workspace <- paste0(getwd(), "/WS")
9 javastics_path <- getwd() 12 javastics_path <- getwd()
17 StationFile <- "Station.csv" 20 StationFile <- "Station.csv"
18 21
19 args = commandArgs(trailingOnly = TRUE) 22 args = commandArgs(trailingOnly = TRUE)
20 23
21 genUSMsXmlOneAfterOther <- (args[1] == "usmx_one_after_other") 24 genUSMsXmlOneAfterOther <- (args[1] == "usmx_one_after_other")
25 parallel <- (args[2] == "parallel")
26 nbSlots <- as.integer(args[3])
22 27
23 # USMs file loading 28 # USMs file loading
24 29
25 usms_param <- read_params_table(file.path(workspace, USMsFile)) %>% 30 usms_param <- read_params_table(file.path(workspace, USMsFile)) %>%
26 select( 31 select(
66 sta_param <- read_params_table(file.path(workspace, StationFile)) 71 sta_param <- read_params_table(file.path(workspace, StationFile))
67 72
68 gen_sta_xml(param_df = sta_param, out_dir = workspace) 73 gen_sta_xml(param_df = sta_param, out_dir = workspace)
69 74
70 if (genUSMsXmlOneAfterOther) { 75 if (genUSMsXmlOneAfterOther) {
76
71 durGenX <- lubridate::as.duration(0) 77 durGenX <- lubridate::as.duration(0)
72 durGenT <- lubridate::as.duration(0) 78 durGenT <- lubridate::as.duration(0)
73 79
80 if (parallel) {
81 cl <- makeCluster(nbSlots)
82 print(cl)
83 registerDoParallel(cl)
84 `%dordopar%` <- `%dopar%`
85 } else {
86 `%dordopar%` <- `%do%`
87 }
88
74 # looping on USMs 89 # looping on USMs
75 for (i in 1:nrow(usms_param)) { 90 loopRes <- foreach::foreach(i = 1:nrow(usms_param),
76 row <- usms_param[i, ] 91 .packages = c("SticsRFiles", "lubridate")) %dordopar% {
77 92
78 beforeGenXmlTimeI <- Sys.time() 93 beforeGenXmlTimeI <- Sys.time()
79 94
80 gen_usms_xml(file = file.path(workspace, "usms.xml"), 95 usmxFileName = paste0("usms", as.character(i) , ".xml")
81 param_df = row) 96
82 97 usmxFilePath = file.path(workspace, usmxFileName)
98
99 gen_usms_xml(file = usmxFilePath,
100 param_df = usms_param[i, ])
101
83 afterGenXmlTimeI <- Sys.time() 102 afterGenXmlTimeI <- Sys.time()
84 durGenXI <- 103 durGenXI <-
85 lubridate::as.duration(lubridate::interval(beforeGenXmlTimeI, 104 lubridate::as.duration(lubridate::interval(beforeGenXmlTimeI,
86 afterGenXmlTimeI)) 105 afterGenXmlTimeI))
87 106
88 # one after the other generating txt folder 107 # one after the other generating txt folder
89 108
90 beforeGenTxtTimeI <- Sys.time() 109 beforeGenTxtTimeI <- Sys.time()
91 110
92 gen_usms_xml2txt( 111 gen_usms_xml2txt(
112 usms_file = usmxFileName,
93 javastics = javastics_path, 113 javastics = javastics_path,
94 workspace = workspace, 114 workspace = workspace,
95 out_dir = txt_path, 115 out_dir = txt_path,
96 verbose = TRUE 116 verbose = TRUE
97 ) 117 )
98 118
99 afterGenTxtTimeI <- Sys.time() 119 afterGenTxtTimeI <- Sys.time()
100 durGenTI <- 120 durGenTI <-
101 lubridate::as.duration(lubridate::interval(beforeGenTxtTimeI, 121 lubridate::as.duration(lubridate::interval(beforeGenTxtTimeI,
102 afterGenTxtTimeI)) 122 afterGenTxtTimeI))
103 123
104 durGenX <- durGenX + durGenXI 124 return(c(durGenXI, durGenTI))
105 durGenT <- durGenT + durGenTI
106 } 125 }
126
127 if (parallel) stopCluster(cl)
128
129 durDS <- as.data.frame(do.call(rbind, loopRes))
130 durGenX <- sum(durDS[1])
131 durGenT <- sum(durDS[2])
132
107 } else { 133 } else {
134
108 beforeGenXmlTime <- Sys.time() 135 beforeGenXmlTime <- Sys.time()
109 136
110 gen_usms_xml(file = file.path(workspace, "usms.xml"), 137 gen_usms_xml(file = file.path(workspace, "usms.xml"),
111 param_df = usms_param) 138 param_df = usms_param)
112 139
113 afterGenXmlTime <- Sys.time() 140 afterGenXmlTime <- Sys.time()
114 durGenX <- 141 durGenX <-
115 lubridate::as.duration(lubridate::interval(beforeGenXmlTime, 142 lubridate::as.duration(lubridate::interval(beforeGenXmlTime,
116 afterGenXmlTime)) 143 afterGenXmlTime))
117 144
118 beforeGenTxtTime <- Sys.time() 145 beforeGenTxtTime <- Sys.time()
119 146
120 gen_usms_xml2txt( 147 gen_usms_xml2txt(
121 javastics = javastics_path, 148 javastics = javastics_path,
122 workspace = workspace, 149 workspace = workspace,
123 out_dir = txt_path, 150 out_dir = txt_path,
124 verbose = TRUE 151 verbose = TRUE
125 ) 152 )
126 153
127 afterGenTxtTime <- Sys.time() 154 afterGenTxtTime <- Sys.time()
128 durGenT <- 155 durGenT <-
129 lubridate::as.duration(lubridate::interval(beforeGenTxtTime, 156 lubridate::as.duration(lubridate::interval(beforeGenTxtTime,
130 afterGenTxtTime)) 157 afterGenTxtTime))
131 158
132 } 159 }
133 160
134 endTime <- Sys.time() 161 endTime <- Sys.time()
162
135 dur <- 163 dur <-
136 lubridate::as.period(lubridate::as.duration(lubridate::interval(startTime, endTime))) 164 lubridate::as.period(lubridate::as.duration(lubridate::interval(startTime, endTime)))
137 durGenXP <- lubridate::as.period(durGenX) 165 durGenXP <- lubridate::as.period(durGenX)
138 durGenTP <- lubridate::as.period(durGenT) 166 durGenTP <- lubridate::as.period(durGenT)
139 167
140 print("REDELAC Report") 168 print("REDELACSticsInputGenerator Report")
141 print("==============") 169 print("=================================")
142 print(paste0("number of usms: ", nrow(usms_param))) 170 print(paste0("number of usms: ", nrow(usms_param)))
143 print(paste("usms.xml one after the other:", genUSMsXmlOneAfterOther)) 171 print(paste("usms.xml one after the other:", genUSMsXmlOneAfterOther))
172
144 sprintf( 173 sprintf(
145 'overall duration: %g jour(s) %g heure(s) %g minute(s) %g seconde(s)', 174 'overall duration: %g jour(s) %g heure(s) %g minute(s) %g seconde(s)',
146 lubridate::day(dur), 175 lubridate::day(dur),
147 lubridate::hour(dur), 176 lubridate::hour(dur),
148 lubridate::minute(dur), 177 lubridate::minute(dur),
149 lubridate::second(dur) 178 lubridate::second(dur))
150 ) 179
151 sprintf( 180 sprintf(
152 'inside gen_usms_xml duration: %g jour(s) %g heure(s) %g minute(s) %g seconde(s)', 181 'inside gen_usms_xml duration: %g jour(s) %g heure(s) %g minute(s) %g seconde(s)',
153 lubridate::day(durGenXP), 182 lubridate::day(durGenXP),
154 lubridate::hour(durGenXP), 183 lubridate::hour(durGenXP),
155 lubridate::minute(durGenXP), 184 lubridate::minute(durGenXP),
156 lubridate::second(durGenXP) 185 lubridate::second(durGenXP))
157 ) 186
158 sprintf( 187 sprintf(
159 'inside gen_usms_xml2txt duration: %g jour(s) %g heure(s) %g minute(s) %g seconde(s)', 188 'inside gen_usms_xml2txt duration: %g jour(s) %g heure(s) %g minute(s) %g seconde(s)',
160 lubridate::day(durGenTP), 189 lubridate::day(durGenTP),
161 lubridate::hour(durGenTP), 190 lubridate::hour(durGenTP),
162 lubridate::minute(durGenTP), 191 lubridate::minute(durGenTP),
163 lubridate::second(durGenTP) 192 lubridate::second(durGenTP))
164 )