add test folder
[valse.git] / src / test / test.constructionModelesLassoRank.c
1 #include "constructionModelesLassoRank.h"
2 #include "ioutils.h"
3
4 int main(int argc, char** argv)
5 {
6 // read dimensions
7 const Int nbDims = 5;
8 Int* dimensions = readArray_int("dimensions",&nbDims,1);
9 mwSize n = dimensions[0];
10 mwSize p = dimensions[1];
11 mwSize m = dimensions[2];
12 mwSize k = dimensions[3];
13 mwSize L = dimensions[4];
14 free(dimensions);
15 mwSize lengthOne = 1;
16
17 ////////////
18 // INPUTS //
19 ////////////
20
21 // piInit
22 const mwSize dimPi[] = {k, L};
23 Real* Pi = readArray_real("Pi",dimPi,2);
24
25 // rhoInit
26 const mwSize dimRho[] = {m, m, k, L};
27 Real* Rho = readArray_real("Rho",dimRho,4);
28
29 // min number of iterations
30 Int* pmini = readArray_int("mini",&lengthOne,1);
31 Int mini = *pmini;
32 free(pmini);
33
34 // max number of iterations
35 Int* pmaxi = readArray_int("maxi",&lengthOne,1);
36 Int maxi = *pmaxi;
37 free(pmaxi);
38
39 // X
40 const mwSize dimX[] = {n, p};
41 Real* X = readArray_real("X",dimX,2);
42
43 // Y
44 const mwSize dimY[] = {n, m};
45 Real* Y = readArray_real("Y",dimY,2);
46
47 // tau
48 Real* ptau = readArray_real("tau",&lengthOne,1);
49 Real tau = *ptau;
50 free(ptau);
51
52 // A1
53 const mwSize dimA[] = {p, L};
54 Int* A1 = readArray_int("A1",dimA,2);
55
56 // rangmin
57 Int* prangmin = readArray_int("rangmin",&lengthOne,1);
58 Int rangmin = *prangmin;
59 free(prangmin);
60
61 // rangmax
62 Int* prangmax = readArray_int("rangmax",&lengthOne,1);
63 Int rangmax = *prangmax;
64 free(prangmax);
65
66 /////////////
67 // OUTPUTS //
68 /////////////
69
70 // phi
71 mwSize Size = (mwSize)pow(rangmax-rangmin+1, k);
72 const mwSize dimPhi[] = {p, m, k, L*Size};
73 Real* phi = (Real*)malloc(dimPhi[0]*dimPhi[1]*dimPhi[2]*dimPhi[3]*sizeof(Real));
74
75 // lvraisemblance
76 const mwSize dimLvraisemblance[] = {L*Size, 2};
77 Real* lvraisemblance = (Real*)malloc(dimLvraisemblance[0]*dimLvraisemblance[1]*sizeof(Real));
78
79 //////////////////////////////////////////////
80 // Main call to constructionModelesLassoMLE //
81 //////////////////////////////////////////////
82
83 constructionModelesLassoRank(
84 Pi,Rho,mini,maxi,X,Y,tau,A1,rangmin,rangmax,
85 phi,lvraisemblance,
86 n,p,m,k,L);
87
88 free(Rho);
89 free(Pi);
90 free(X);
91 free(Y);
92 free(A1);
93
94 // Compare to reference outputs
95 Real* ref_phi = readArray_real("phi",dimPhi, 4);
96 compareArray_real("phi", phi, ref_phi, dimPhi[0]*dimPhi[1]*dimPhi[2]*dimPhi[3]);
97 free(phi);
98 free(ref_phi);
99
100 // lvraisemblance
101 Real* ref_lvraisemblance = readArray_real("lvraisemblance",dimLvraisemblance,2);
102 compareArray_real("lvraisemblance", lvraisemblance, ref_lvraisemblance, dimLvraisemblance[0]*dimLvraisemblance[1]);
103 free(lvraisemblance);
104 free(ref_lvraisemblance);
105
106 return 0;
107 }