move selectiontotale to appropriate folder (untranslated)
[valse.git] / src / test / test.constructionModelesLassoRank.c
index 2232e9e..f60ffea 100644 (file)
 #include "constructionModelesLassoRank.h"
-#include "ioutils.h"
+#include "test_utils.h"
+#include <stdlib.h>
+#include <math.h>
 
 int main(int 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];
+       int* dimensions = readArray_int("dimensions");
+       int n = dimensions[0];
+       int p = dimensions[1];
+       int m = dimensions[2];
+       int k = dimensions[3];
+       int L = dimensions[4];
        free(dimensions);
-       mwSize lengthOne = 1;
 
        ////////////
        // INPUTS //
+       Real* pi = readArray_real("pi");
+       Real* rho = readArray_real("rho");
+       int mini = read_int("mini");
+       int maxi = read_int("maxi");
+       Real* X = readArray_real("X");
+       Real* Y = readArray_real("Y");
+       Real tau = read_real("tau");
+       int* A1 = readArray_int("A1");
+       int rangmin = read_int("rangmin");
+       int rangmax = read_int("rangmax");
        ////////////
 
-       // piInit
-       const mwSize dimPi[] = {k, L};
-       Real* Pi = readArray_real("Pi",dimPi,2);
-
-       // rhoInit
-       const mwSize dimRho[] = {m, m, k, L};
-       Real* Rho = readArray_real("Rho",dimRho,4);
-
-       // 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);
-
-       // 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);
-
-       // tau
-       Real* ptau = readArray_real("tau",&lengthOne,1);
-       Real tau = *ptau;
-       free(ptau);
-
-       // A1
-       const mwSize dimA[] = {p, L};
-       Int* A1 = readArray_int("A1",dimA,2);
-
-       // rangmin
-       Int* prangmin = readArray_int("rangmin",&lengthOne,1);
-       Int rangmin = *prangmin;
-       free(prangmin);
-
-       // rangmax
-       Int* prangmax = readArray_int("rangmax",&lengthOne,1);
-       Int rangmax = *prangmax;
-       free(prangmax);
-       
        /////////////
        // OUTPUTS //
+       int Size = (int)pow(rangmax-rangmin+1, k);
+       Real* phi = (Real*)malloc(p*m*k*L*Size*sizeof(Real));
+       Real* llh = (Real*)malloc(L*Size*2*sizeof(Real));
        /////////////
 
-       // phi
-       mwSize Size = (mwSize)pow(rangmax-rangmin+1, k);
-       const mwSize dimPhi[] = {p, m, k, L*Size};
-       Real* phi = (Real*)malloc(dimPhi[0]*dimPhi[1]*dimPhi[2]*dimPhi[3]*sizeof(Real));
-
-       // lvraisemblance
-       const mwSize dimLvraisemblance[] = {L*Size, 2};
-       Real* lvraisemblance = (Real*)malloc(dimLvraisemblance[0]*dimLvraisemblance[1]*sizeof(Real));
-
-       //////////////////////////////////////////////
-       // Main call to constructionModelesLassoMLE //
-       //////////////////////////////////////////////
-
-       constructionModelesLassoRank(
-               Pi,Rho,mini,maxi,X,Y,tau,A1,rangmin,rangmax,
-               phi,lvraisemblance,
+       /////////////////////////////////////////
+       // Call to constructionModelesLassoMLE //
+       constructionModelesLassoRank_core(
+               pi,rho,mini,maxi,X,Y,tau,A1,rangmin,rangmax,
+               phi,llh,
                n,p,m,k,L);
-       
-       free(Rho);
-       free(Pi);
+       /////////////////////////////////////////
+
+       free(rho);
+       free(pi);
        free(X);
        free(Y);
        free(A1);
-       
+
        // Compare to reference outputs
-       Real* ref_phi = readArray_real("phi",dimPhi, 4);
-       compareArray_real("phi", phi, ref_phi, dimPhi[0]*dimPhi[1]*dimPhi[2]*dimPhi[3]);
+       Real* ref_phi = readArray_real("phi");
+       compareArray_real("phi", phi, ref_phi, p*m*k*L*Size);
        free(phi);
        free(ref_phi);
-       
-       // lvraisemblance
-       Real* ref_lvraisemblance = readArray_real("lvraisemblance",dimLvraisemblance,2);
-       compareArray_real("lvraisemblance", lvraisemblance, ref_lvraisemblance, dimLvraisemblance[0]*dimLvraisemblance[1]);
-       free(lvraisemblance);
-       free(ref_lvraisemblance);
-       
+
+       Real* ref_llh = readArray_real("llh");
+       compareArray_real("llh", llh, ref_llh, L*Size*2);
+       free(llh);
+       free(ref_llh);
+
        return 0;
 }