X-Git-Url: https://git.auder.net/?p=valse.git;a=blobdiff_plain;f=pkg%2FR%2FselectVariables.R;h=b23eac21b36a4de70ff592e367f2ccb302e8ded5;hp=b4fc0abbcc02e8634671cadfb7591777904d8926;hb=aa480ac1fef50618978307a4df2cf9da1e285abc;hpb=4e8267487c83c27273305b1379e44bc7abebf4b5 diff --git a/pkg/R/selectVariables.R b/pkg/R/selectVariables.R index b4fc0ab..b23eac2 100644 --- a/pkg/R/selectVariables.R +++ b/pkg/R/selectVariables.R @@ -14,6 +14,7 @@ #' @param Y matrix of responses #' @param thres threshold to consider a coefficient to be equal to 0 #' @param tau threshold to say that EM algorithm has converged +#' @param ncores Number or cores for parallel execution (1 to disable) #' #' @return a list of outputs, for each lambda in grid: selected,Rho,Pi #' @@ -22,20 +23,20 @@ #' @export #' selectVariables = function(phiInit,rhoInit,piInit,gamInit,mini,maxi,gamma,glambda, - X,Y,thresh,tau, ncores=1) #ncores==1 ==> no // + X,Y,thresh,tau, ncores=3, fast=TRUE) { if (ncores > 1) { - cl = parallel::makeCluster(ncores) + cl = parallel::makeCluster(ncores, outfile='') parallel::clusterExport(cl=cl, varlist=c("phiInit","rhoInit","gamInit","mini","maxi","glambda","X","Y","thresh","tau"), envir=environment()) } # Calcul pour un lambda - computeCoefs <-function(lambda) + computeCoefs <- function(lambda) { - params = EMGLLF(phiInit,rhoInit,piInit,gamInit,mini,maxi,gamma,lambda,X,Y,tau) + params = EMGLLF(phiInit,rhoInit,piInit,gamInit,mini,maxi,gamma,lambda,X,Y,tau,fast) p = dim(phiInit)[1] m = dim(phiInit)[2] @@ -54,7 +55,8 @@ selectVariables = function(phiInit,rhoInit,piInit,gamInit,mini,maxi,gamma,glambd out <- if (ncores > 1) parLapply(cl, glambda, computeCoefs) - else lapply(glambda, computeCoefs) + else + lapply(glambda, computeCoefs) if (ncores > 1) parallel::stopCluster(cl)