The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
library(kfino)
library(dplyr)
library(foreach)
library(parallel)
library(doParallel)
#> Le chargement a nécessité le package : iterators
This vignette shows how to use parallelization on a data set
containing a set of animals weighted over time with the
walk-over-weighing system. The lambs
data set is included
in the kfino package and can be loaded using the
data()
function.
We use the parallel and doParallel libraries to accelerate the computing time.
data(lambs)
myIDE<-unique(lambs$IDE)
print(myIDE)
#> [1] "250017033503030" "250017033503074" "250017033503092" "250017033503096"
param=list(m0=NULL,
mm=NULL,
pp=NULL,
aa=0.001,
expertMin=10,
expertMax=45,
sigma2_m0=1,
sigma2_mm=0.05,
sigma2_pp=5,
K=15,
seqp=seq(0.4,0.7,0.1))
t0 <- Sys.time()
resu1<-list()
for (i in seq_along(myIDE)){
print(myIDE[i])
tp.test<-filter(lambs,IDE == myIDE[i])
print(dim(tp.test))
resu1[[i]]<-kfino_fit(datain=tp.test,
Tvar="dateNum",Yvar="Poids",
param=param,
doOptim=TRUE)
}
#> [1] "250017033503030"
#> [1] 101 5
#> [1] "250017033503074"
#> [1] 416 5
#> [1] "250017033503092"
#> [1] 213 5
#> [1] "250017033503096"
#> [1] 566 5
Sys.time() - t0
#> Time difference of 30.07354 secs
print(length(resu1))
#> [1] 4
An example improving the computation time of a run on a complete dataset by parallelizing the call.
param=list(m0=NULL,
mm=NULL,
pp=NULL,
aa=0.001,
expertMin=10,
expertMax=45,
sigma2_m0=1,
sigma2_mm=0.05,
sigma2_pp=5,
K=15,
seqp=seq(0.4,0.7,0.1))
t0<-Sys.time()
simpleCall<-function(datain,Index,Tvar,Yvar,param){
datain<-as.data.frame(datain)
ici<-unique(datain[,"IDE"])
tp.data<-datain[ datain[,"IDE"] == ici[Index],]
tp.resu<-kfino::kfino_fit(datain=tp.data,
Tvar=Tvar,Yvar=Yvar,
param=param,
doOptim=TRUE)
return(tp.resu)
}
ncores<-parallel::detectCores()
myCluster<-parallel::makeCluster(ncores - 1)
doParallel::registerDoParallel(myCluster)
resu2<-foreach(i=seq_along(myIDE), .packages="kfino") %dopar%
simpleCall(datain=lambs,
Index=i,
Tvar="dateNum",
Yvar="Poids",
param=param)
parallel::stopCluster(myCluster)
Sys.time() - t0
#> Time difference of 16.21493 secs
print(length(resu2))
#> [1] 4
identical(resu1,resu2)
#> [1] TRUE
sessionInfo()
#> R version 4.2.1 (2022-06-23 ucrt)
#> Platform: x86_64-w64-mingw32/x64 (64-bit)
#> Running under: Windows 10 x64 (build 19044)
#>
#> Matrix products: default
#>
#> locale:
#> [1] LC_COLLATE=C LC_CTYPE=French_France.utf8
#> [3] LC_MONETARY=French_France.utf8 LC_NUMERIC=C
#> [5] LC_TIME=French_France.utf8
#>
#> attached base packages:
#> [1] parallel stats graphics grDevices utils datasets methods
#> [8] base
#>
#> other attached packages:
#> [1] doParallel_1.0.17 iterators_1.0.14 foreach_1.5.2 ggplot2_3.3.6
#> [5] dplyr_1.0.9 kfino_1.0.0
#>
#> loaded via a namespace (and not attached):
#> [1] highr_0.9 pillar_1.8.1 bslib_0.4.0 compiler_4.2.1
#> [5] jquerylib_0.1.4 tools_4.2.1 digest_0.6.29 jsonlite_1.8.0
#> [9] evaluate_0.16 lifecycle_1.0.1 tibble_3.1.8 gtable_0.3.0
#> [13] pkgconfig_2.0.3 rlang_1.0.4 cli_3.4.0 DBI_1.1.3
#> [17] rstudioapi_0.13 yaml_2.3.5 xfun_0.30 fastmap_1.1.0
#> [21] withr_2.5.0 stringr_1.4.1 knitr_1.39 generics_0.1.3
#> [25] vctrs_0.4.1 sass_0.4.2 grid_4.2.1 tidyselect_1.1.2
#> [29] glue_1.6.2 R6_2.5.1 fansi_1.0.3 rmarkdown_2.15
#> [33] farver_2.1.1 purrr_0.3.4 magrittr_2.0.3 codetools_0.2-18
#> [37] ellipsis_0.3.2 scales_1.2.1 htmltools_0.5.2 assertthat_0.2.1
#> [41] colorspace_2.0-3 labeling_0.4.2 utf8_1.2.2 stringi_1.7.8
#> [45] munsell_0.5.0 cachem_1.0.6 crayon_1.5.1
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.