X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=src%2Ftest%2Ftest.selectiontotale.c;fp=src%2Ftest%2Ftest.selectiontotale.c;h=45cb461d3341f6775ad4a9a31c3de9f9cadefa94;hb=7b2720733e9aebe177c211119a9ec160c7e7117b;hp=0000000000000000000000000000000000000000;hpb=4725af564bfdbeb40d0caf7f124ab94ac05a97eb;p=valse.git diff --git a/src/test/test.selectiontotale.c b/src/test/test.selectiontotale.c new file mode 100644 index 0000000..45cb461 --- /dev/null +++ b/src/test/test.selectiontotale.c @@ -0,0 +1,134 @@ +#include "selectiontotale.h" +#include "ioutils.h" + +mwSize main(mwSize argc, char** argv) +{ + // read dimensions + const Int nbDims = 5; + Int* dimensions = readArray_int("dimensions",&nbDims,1); + mwSize n = dimensions[0]; + mwSize p = dimensions[1]; + mwSize m = dimensions[2]; + mwSize k = dimensions[3]; + mwSize L = dimensions[4]; + free(dimensions); + mwSize lengthOne = 1; + + //////////// + // INPUTS // + //////////// + + // phiInit + const mwSize dimPhiInit[] = {p, m, k}; + Real* phiInit = readArray_real("phiInit",dimPhiInit,3); + + // rhoInit + const mwSize dimRhoInit[] = {m, m, k}; + Real* rhoInit = readArray_real("rhoInit",dimRhoInit,3); + + // piInit + Real* piInit = readArray_real("piInit",&k,1); + + // gamInit + const mwSize dimGamInit[] = {n, k}; + Real* gamInit = readArray_real("gamInit",dimGamInit, 2); + + // min number of iterations + Int* pmini = readArray_int("mini",&lengthOne,1); + Int mini = *pmini; + free(pmini); + + // max number of iterations + Int* pmaxi = readArray_int("maxi",&lengthOne,1); + Int maxi = *pmaxi; + free(pmaxi); + + // gamma + Real* pgamma = readArray_real("gamma",&lengthOne,1); + Real gamma = *pgamma; + free(pgamma); + + // lambda + Real* glambda = readArray_real("glambda",&L,1); + + // X + const mwSize dimX[] = {n, p}; + Real* X = readArray_real("X",dimX,2); + + // Y + const mwSize dimY[] = {n, m}; + Real* Y = readArray_real("Y",dimY,2); + + // seuil + Real* pseuil = readArray_real("seuil",&lengthOne,1); + Real seuil = *pseuil; + free(pseuil); + + // tau + Real* ptau = readArray_real("tau",&lengthOne,1); + Real tau = *ptau; + free(ptau); + + ///////////// + // OUTPUTS // + ///////////// + + // A1 + const mwSize dimA[] = {p, m+1, L}; + Int* A1 = (Int*)malloc(dimA[0]*dimA[1]*dimA[2]*sizeof(Int)); + + // A2 + Int* A2 = (Int*)malloc(dimA[0]*dimA[1]*dimA[2]*sizeof(Int)); + + // rho + const mwSize dimRho[] = {m, m, k, L}; + Real* Rho = (Real*)malloc(dimRho[0]*dimRho[1]*dimRho[2]*dimRho[3]*sizeof(Real)); + + // pi + const mwSize dimPi[] = {k, L}; + Real* Pi = (Real*)malloc(dimPi[0]*dimPi[1]*sizeof(Real)); + + ////////////////////////////////////////////// + // Main call to constructionModelesLassoMLE // + ////////////////////////////////////////////// + + selectiontotale( + phiInit,rhoInit,piInit,gamInit,mini,maxi,gamma,glambda,X,Y,seuil,tau, + A1,A2,Rho,Pi, + n,p,m,k,L); + + // free input pointers + free(phiInit); + free(rhoInit); + free(piInit); + free(gamInit); + free(glambda); + free(X); + free(Y); + + // Compare to reference outputs + Int* ref_A1 = readArray_int("A1",dimA, 3); + compareArray_int("A1", A1, ref_A1, dimA[0]*dimA[1]*dimA[2]); + free(A1); + free(ref_A1); + + // A2 + Int* ref_A2 = readArray_int("A2",dimA, 3); + compareArray_int("A2", A2, ref_A2, dimA[0]*dimA[1]*dimA[2]); + free(A2); + free(ref_A2); + + // Rho + Real* ref_Rho = readArray_real("Rho",dimRho, 4); + compareArray_real("Rho", Rho, ref_Rho, dimRho[0]*dimRho[1]*dimRho[2]*dimRho[3]); + free(Rho); + free(ref_Rho); + + // Pi + Real* ref_Pi = readArray_real("Pi",dimPi, 2); + compareArray_real("Pi", Pi, ref_Pi, dimPi[0]*dimPi[1]); + free(Pi); + free(ref_Pi); + + return 0; +}