X-Git-Url: https://git.auder.net/?p=valse.git;a=blobdiff_plain;f=src%2Fadapters%2Fa.constructionModelesLassoMLE.c;h=ec519a9cfc183911b6e4ade399ca4a19e2ab5cab;hp=7f578fb6422a096c075a5b8f6ae129c02f3d8da0;hb=31ef8a5c9bbaefcf40d2c2bad43b27d469c28c34;hpb=3ec579a0955aca0591a9e5c4d90c50b87f4f4609 diff --git a/src/adapters/a.constructionModelesLassoMLE.c b/src/adapters/a.constructionModelesLassoMLE.c index 7f578fb..ec519a9 100644 --- a/src/adapters/a.constructionModelesLassoMLE.c +++ b/src/adapters/a.constructionModelesLassoMLE.c @@ -1,8 +1,8 @@ #include #include -#include "sources/EMGLLF.h" +#include "constructionModelesLassoMLE.h" -SEXP EMGLLF( +SEXP constructionModelesLassoMLE( SEXP phiInit_, SEXP rhoInit_, SEXP piInit_, @@ -20,11 +20,11 @@ SEXP EMGLLF( ) { // Get matrices dimensions int n = INTEGER(getAttrib(X_, R_DimSymbol))[0]; - SEXP dim = getAttrib(phiInit_, R_DimSymbol) + SEXP dim = getAttrib(phiInit_, R_DimSymbol); int p = INTEGER(dim)[0]; int m = INTEGER(dim)[1]; int k = INTEGER(dim)[2]; - int L = INTEGER(getAttrib(glambda_, R_LengthSymbol))[0]; + int L = length(glambda_); //////////// // INPUTS // @@ -45,14 +45,14 @@ SEXP EMGLLF( double* glambda = REAL(glambda_); double* X = REAL(X_); double* Y = REAL(Y_); - double* A1 = REAL(A1_); - double* A2 = REAL(A2_); + int* A1 = INTEGER(A1_); + int* A2 = INTEGER(A2_); ///////////// // OUTPUTS // ///////////// - SEXP phi, rho, pi, lvraisemblance, dimPhi, dimRho; + SEXP phi, rho, pi, llh, dimPhi, dimRho; PROTECT(dimPhi = allocVector(INTSXP, 4)); int* pDimPhi = INTEGER(dimPhi); pDimPhi[0] = p; pDimPhi[1] = m; pDimPhi[2] = k; pDimPhi[3] = L; @@ -62,30 +62,30 @@ SEXP EMGLLF( PROTECT(phi = allocArray(REALSXP, dimPhi)); PROTECT(rho = allocArray(REALSXP, dimRho)); PROTECT(pi = allocMatrix(REALSXP, k, L)); - PROTECT(lvraisemblance = allocMatrix(REALSXP, L, 2)); - double* pPhi=REAL(phi), pRho=REAL(rho), pPi=REAL(pi), pLvraisemblance=REAL(lvraisemblance); + PROTECT(llh = allocMatrix(REALSXP, L, 2)); + double *pPhi=REAL(phi), *pRho=REAL(rho), *pPi=REAL(pi), *pllh=REAL(llh); ///////////////////////////////////////// // Call to constructionModelesLassoMLE // ///////////////////////////////////////// - constructionModelesLassoMLE( + constructionModelesLassoMLE_core( phiInit,rhoInit,piInit,gamInit,mini,maxi,gamma,glambda,X,Y,seuil,tau,A1,A2, - pPhi,pRho,pPi,pLvraisemblance, + pPhi,pRho,pPi,pllh, n,p,m,k,L); // Build list from OUT params and return it SEXP listParams, listNames; PROTECT(listParams = allocVector(VECSXP, 4)); - char* lnames[4] = {"phi", "rho", "pi", "lvraisemblance"}; //lists labels + char* lnames[4] = {"phi", "rho", "pi", "llh"}; //lists labels PROTECT(listNames = allocVector(STRSXP,4)); for (int i=0; i<4; i++) SET_STRING_ELT(listNames,i,mkChar(lnames[i])); setAttrib(listParams, R_NamesSymbol, listNames); - SET_ARRAY_ELT(listParams, 0, phi); - SET_ARRAY_ELT(listParams, 1, rho); - SET_MATRIX_ELT(listParams, 2, pi); - SET_VECTOR_ELT(listParams, 3, lvraisemblance); + SET_VECTOR_ELT(listParams, 0, phi); + SET_VECTOR_ELT(listParams, 1, rho); + SET_VECTOR_ELT(listParams, 2, pi); + SET_VECTOR_ELT(listParams, 3, llh); UNPROTECT(8); return listParams;