Add 'fast' argument to select C code or R code
[valse.git] / pkg / R / constructionModelesLassoMLE.R
index e8013a2..dbae65d 100644 (file)
@@ -8,11 +8,11 @@
 #'
 #' export
 constructionModelesLassoMLE = function(phiInit, rhoInit, piInit, gamInit, mini, maxi,
-       gamma, X, Y, thresh, tau, S, ncores=3, artefact = 1e3, verbose=FALSE)
+       gamma, X, Y, thresh, tau, S, ncores=3, artefact = 1e3, fast=TRUE, verbose=FALSE)
 {
        if (ncores > 1)
        {
-               cl = parallel::makeCluster(ncores)
+               cl = parallel::makeCluster(ncores, outfile='')
                parallel::clusterExport( cl, envir=environment(),
                        varlist=c("phiInit","rhoInit","gamInit","mini","maxi","gamma","X","Y","thresh",
                        "tau","S","ncores","verbose") )
@@ -41,7 +41,7 @@ constructionModelesLassoMLE = function(phiInit, rhoInit, piInit, gamInit, mini,
 
                # lambda == 0 because we compute the EMV: no penalization here
                res = EMGLLF(phiInit[col.sel,,],rhoInit,piInit,gamInit,mini,maxi,gamma,0,
-                       X[,col.sel],Y,tau)
+                       X[,col.sel], Y, tau, fast)
                
                # Eval dimension from the result + selected
                phiLambda2 = res$phi
@@ -69,8 +69,8 @@ constructionModelesLassoMLE = function(phiInit, rhoInit, piInit, gamInit, mini,
        out =
                if (ncores > 1)
                        parLapply(cl, 1:length(S), computeAtLambda)
-       else
-               lapply(1:length(S), computeAtLambda)
+               else
+                       lapply(1:length(S), computeAtLambda)
 
        if (ncores > 1)
                parallel::stopCluster(cl)