Commit | Line | Data |
---|---|---|
7b272073 | 1 | #include "selectiontotale.h" |
9ff729fb | 2 | #include "test_utils.h" |
7b272073 | 3 | |
7ea8c1e5 | 4 | int main(int argc, char** argv) |
7b272073 BA |
5 | { |
6 | // read dimensions | |
7ea8c1e5 BA |
7 | const int nbDims = 5; |
8 | int* dimensions = readArray_int("dimensions",&nbDims,1); | |
9 | int n = dimensions[0]; | |
10 | int p = dimensions[1]; | |
11 | int m = dimensions[2]; | |
12 | int k = dimensions[3]; | |
13 | int L = dimensions[4]; | |
7b272073 | 14 | free(dimensions); |
7ea8c1e5 | 15 | int lengthOne = 1; |
7b272073 BA |
16 | |
17 | //////////// | |
18 | // INPUTS // | |
19 | //////////// | |
20 | ||
21 | // phiInit | |
7ea8c1e5 BA |
22 | const int dimPhiInit[] = {p, m, k}; |
23 | float* phiInit = readArray_real("phiInit",dimPhiInit,3); | |
7b272073 BA |
24 | |
25 | // rhoInit | |
7ea8c1e5 BA |
26 | const int dimRhoInit[] = {m, m, k}; |
27 | float* rhoInit = readArray_real("rhoInit",dimRhoInit,3); | |
7b272073 BA |
28 | |
29 | // piInit | |
7ea8c1e5 | 30 | float* piInit = readArray_real("piInit",&k,1); |
7b272073 BA |
31 | |
32 | // gamInit | |
7ea8c1e5 BA |
33 | const int dimGamInit[] = {n, k}; |
34 | float* gamInit = readArray_real("gamInit",dimGamInit, 2); | |
7b272073 BA |
35 | |
36 | // min number of iterations | |
7ea8c1e5 BA |
37 | int* pmini = readArray_int("mini",&lengthOne,1); |
38 | int mini = *pmini; | |
7b272073 BA |
39 | free(pmini); |
40 | ||
41 | // max number of iterations | |
7ea8c1e5 BA |
42 | int* pmaxi = readArray_int("maxi",&lengthOne,1); |
43 | int maxi = *pmaxi; | |
7b272073 BA |
44 | free(pmaxi); |
45 | ||
46 | // gamma | |
7ea8c1e5 BA |
47 | float* pgamma = readArray_real("gamma",&lengthOne,1); |
48 | float gamma = *pgamma; | |
7b272073 BA |
49 | free(pgamma); |
50 | ||
51 | // lambda | |
7ea8c1e5 | 52 | float* glambda = readArray_real("glambda",&L,1); |
7b272073 BA |
53 | |
54 | // X | |
7ea8c1e5 BA |
55 | const int dimX[] = {n, p}; |
56 | float* X = readArray_real("X",dimX,2); | |
7b272073 BA |
57 | |
58 | // Y | |
7ea8c1e5 BA |
59 | const int dimY[] = {n, m}; |
60 | float* Y = readArray_real("Y",dimY,2); | |
7b272073 BA |
61 | |
62 | // seuil | |
7ea8c1e5 BA |
63 | float* pseuil = readArray_real("seuil",&lengthOne,1); |
64 | float seuil = *pseuil; | |
7b272073 BA |
65 | free(pseuil); |
66 | ||
67 | // tau | |
7ea8c1e5 BA |
68 | float* ptau = readArray_real("tau",&lengthOne,1); |
69 | float tau = *ptau; | |
7b272073 BA |
70 | free(ptau); |
71 | ||
72 | ///////////// | |
73 | // OUTPUTS // | |
74 | ///////////// | |
75 | ||
76 | // A1 | |
7ea8c1e5 BA |
77 | const int dimA[] = {p, m+1, L}; |
78 | int* A1 = (int*)malloc(dimA[0]*dimA[1]*dimA[2]*sizeof(int)); | |
7b272073 BA |
79 | |
80 | // A2 | |
7ea8c1e5 | 81 | int* A2 = (int*)malloc(dimA[0]*dimA[1]*dimA[2]*sizeof(int)); |
7b272073 BA |
82 | |
83 | // rho | |
7ea8c1e5 BA |
84 | const int dimRho[] = {m, m, k, L}; |
85 | float* Rho = (float*)malloc(dimRho[0]*dimRho[1]*dimRho[2]*dimRho[3]*sizeof(float)); | |
7b272073 BA |
86 | |
87 | // pi | |
7ea8c1e5 BA |
88 | const int dimPi[] = {k, L}; |
89 | float* Pi = (float*)malloc(dimPi[0]*dimPi[1]*sizeof(float)); | |
7b272073 BA |
90 | |
91 | ////////////////////////////////////////////// | |
92 | // Main call to constructionModelesLassoMLE // | |
93 | ////////////////////////////////////////////// | |
94 | ||
95 | selectiontotale( | |
96 | phiInit,rhoInit,piInit,gamInit,mini,maxi,gamma,glambda,X,Y,seuil,tau, | |
97 | A1,A2,Rho,Pi, | |
98 | n,p,m,k,L); | |
99 | ||
100 | // free input pointers | |
101 | free(phiInit); | |
102 | free(rhoInit); | |
103 | free(piInit); | |
104 | free(gamInit); | |
105 | free(glambda); | |
106 | free(X); | |
107 | free(Y); | |
108 | ||
109 | // Compare to reference outputs | |
7ea8c1e5 | 110 | int* ref_A1 = readArray_int("A1",dimA, 3); |
7b272073 BA |
111 | compareArray_int("A1", A1, ref_A1, dimA[0]*dimA[1]*dimA[2]); |
112 | free(A1); | |
113 | free(ref_A1); | |
114 | ||
115 | // A2 | |
7ea8c1e5 | 116 | int* ref_A2 = readArray_int("A2",dimA, 3); |
7b272073 BA |
117 | compareArray_int("A2", A2, ref_A2, dimA[0]*dimA[1]*dimA[2]); |
118 | free(A2); | |
119 | free(ref_A2); | |
120 | ||
121 | // Rho | |
7ea8c1e5 | 122 | float* ref_Rho = readArray_real("Rho",dimRho, 4); |
7b272073 BA |
123 | compareArray_real("Rho", Rho, ref_Rho, dimRho[0]*dimRho[1]*dimRho[2]*dimRho[3]); |
124 | free(Rho); | |
125 | free(ref_Rho); | |
126 | ||
127 | // Pi | |
7ea8c1e5 | 128 | float* ref_Pi = readArray_real("Pi",dimPi, 2); |
7b272073 BA |
129 | compareArray_real("Pi", Pi, ref_Pi, dimPi[0]*dimPi[1]); |
130 | free(Pi); | |
131 | free(ref_Pi); | |
132 | ||
133 | return 0; | |
134 | } |