From eb444706cb734385d0fcd05a0db791ac49ce30d5 Mon Sep 17 00:00:00 2001
From: "N. Brouard" <brouard@ined.fr>
Date: Thu, 29 Jun 2017 09:47:08 +0000
Subject: [PATCH] Summary: Version 0.99r14

---
 CMakeLists.txt |  2 +-
 src/imach.c    | 48 ++++++++++++++++++++++++++++++++++++++++++++----
 2 files changed, 45 insertions(+), 5 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1586bbe..f428f21 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -8,7 +8,7 @@
 # SET (CMAKE_CONFIGURATION_TYPES "Debug;RelWithDebinfo" CACHE STRING "" FORCE)
 set(PACKAGE_NAME "imach")
 SET(IMACH_VERSION_MAJOR 0)
-SET(IMACH_VERSION_MINOR 99r13)
+SET(IMACH_VERSION_MINOR 99r14)
 SET(IMACH_VERSION_PATCH 0)
 SET(IMACH_VERSION_NOTE "")
 SET(IMACH_VERSION ${IMACH_VERSION_MAJOR}.${IMACH_VERSION_MINOR})
diff --git a/src/imach.c b/src/imach.c
index 514dbf9..755a667 100644
--- a/src/imach.c
+++ b/src/imach.c
@@ -1,6 +1,9 @@
 /* $Id$
   $State$
   $Log$
+  Revision 1.273  2017/06/27 11:06:02  brouard
+  Summary: More documentation on projections
+
   Revision 1.272  2017/06/27 10:22:40  brouard
   Summary: Color of backprojection changed from 6 to 5(yellow)
 
@@ -3851,7 +3854,7 @@ void likelione(FILE *ficres,double p[], int npar, int nlstate, int *globpri, lon
     else if(mle >=1)
       fprintf(fichtm,"\n<br>File of contributions to the likelihood computed with optimized parameters mle = %d.",mle);
     fprintf(fichtm," You should at least run with mle >= 1 to get starting values corresponding to the optimized parameters in order to visualize the real contribution of each individual/wave: <a href=\"%s\">%s</a><br>\n",subdirf(fileresilk),subdirf(fileresilk));
-    
+    fprintf(fichtm,"\n<br>Equation of the model: <b>model=1+age+%s</b><br>\n",model); 
       
     for (k=1; k<= nlstate ; k++) {
       fprintf(fichtm,"<br>- Probability p<sub>%dj</sub> by origin %d and destination j. Dot's sizes are related to corresponding weight: <a href=\"%s-p%dj.png\">%s-p%dj.png</a><br> \
@@ -6960,6 +6963,20 @@ void printinggnuplot(char fileresu[], char optionfilefiname[], double ageminpar,
   /*#endif */
   m=pow(2,cptcoveff);
 
+  /* diagram of the model */
+  fprintf(ficgp,"\n#Diagram of the model \n");
+  fprintf(ficgp,"\ndelta=0.03;delta2=0.07;unset arrow;\n");
+  fprintf(ficgp,"yoff=(%d > 2? 0:1);\n",nlstate);
+  fprintf(ficgp,"\n#Peripheral arrows\nset for [i=1:%d] for [j=1:%d] arrow i*10+j from cos(pi*((1-(%d/2)*2./%d)/2+(i-1)*2./%d))-(i!=j?(i-j)/abs(i-j)*delta:0), yoff +sin(pi*((1-(%d/2)*2./%d)/2+(i-1)*2./%d)) + (i!=j?(i-j)/abs(i-j)*delta:0) rto -0.95*(cos(pi*((1-(%d/2)*2./%d)/2+(i-1)*2./%d))+(i!=j?(i-j)/abs(i-j)*delta:0) - cos(pi*((1-(%d/2)*2./%d)/2+(j-1)*2./%d)) + (i!=j?(i-j)/abs(i-j)*delta2:0)), -0.95*(sin(pi*((1-(%d/2)*2./%d)/2+(i-1)*2./%d)) + (i!=j?(i-j)/abs(i-j)*delta:0) - sin(pi*((1-(%d/2)*2./%d)/2+(j-1)*2./%d))+( i!=j?(i-j)/abs(i-j)*delta2:0)) ls (i < j? 1:2)\n",nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate);
+
+  fprintf(ficgp,"\n#Centripete arrows (turning in other direction (1-i) instead of (i-1)) \nset for [i=1:%d] arrow (%d+1)*10+i from cos(pi*((1-(%d/2)*2./%d)/2+(1-i)*2./%d))-(i!=j?(i-j)/abs(i-j)*delta:0), yoff +sin(pi*((1-(%d/2)*2./%d)/2+(1-i)*2./%d)) + (i!=j?(i-j)/abs(i-j)*delta:0) rto -0.80*(cos(pi*((1-(%d/2)*2./%d)/2+(1-i)*2./%d))+(i!=j?(i-j)/abs(i-j)*delta:0)  ), -0.80*(sin(pi*((1-(%d/2)*2./%d)/2+(1-i)*2./%d)) + (i!=j?(i-j)/abs(i-j)*delta:0) + yoff ) ls 4\n",nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate);
+  fprintf(ficgp,"\n#show arrow\nunset label\n");
+  fprintf(ficgp,"\n#States labels, starting from 2 (2-i) instead of (1-i), was (i-1)\nset for [i=1:%d] label i sprintf(\"State %%d\",i) center at cos(pi*((1-(%d/2)*2./%d)/2+(2-i)*2./%d)), yoff+sin(pi*((1-(%d/2)*2./%d)/2+(2-i)*2./%d)) font \"helvetica, 16\" tc rgbcolor \"blue\"\n",nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate);
+  fprintf(ficgp,"\nset label %d+1 sprintf(\"State %%d\",%d+1) center at 0.,0.  font \"helvetica, 16\" tc rgbcolor \"red\"\n",nlstate,nlstate);
+  fprintf(ficgp,"\n#show label\nunset border;unset xtics; unset ytics;\n");
+  fprintf(ficgp,"\n\nset ter svg size 640, 480;set out \"%s_.svg\" \n",subdirf2(optionfilefiname,"D_"));
+  fprintf(ficgp,"unset log y; plot [-1.2:1.2][yoff-1.2:1.2] 1/0 not; set out;reset;\n");
+
   /* Contribution to likelihood */
   /* Plot the probability implied in the likelihood */
   fprintf(ficgp,"\n# Contributions to the Likelihood, mle >=1. For mle=4 no interpolation, pure matrix products.\n#\n");
@@ -7119,7 +7136,7 @@ void printinggnuplot(char fileresu[], char optionfilefiname[], double ageminpar,
 	      if (i==cpt) fprintf(ficgp," %%lf (%%lf)");
 	      else fprintf(ficgp," %%*lf (%%*lf)");
 	    } 
-	    fprintf(ficgp,"\" t\"\" w l lt 5");
+	    fprintf(ficgp,"\" t\"\" w l lt 4");
 	  } /* end if backprojcast */
 	} /* end if backcast */
 	fprintf(ficgp,"\nset out ;unset label;\n");
@@ -10583,6 +10600,8 @@ int main(int argc, char *argv[])
   int nres=0;
   int endishere=0;
 
+  int ncurrv=0; /* Temporary variable */
+  
   char ca[32], cb[32];
   /*  FILE *fichtm; *//* Html File */
   /* FILE *ficgp;*/ /*Gnuplot File */
@@ -11467,10 +11486,31 @@ Title=%s <br>Datafile=%s Firstpass=%d Lastpass=%d Stepm=%d Weight=%d Model=1+age
 	      firstpass, lastpass,  stepm,  weightopt, model);
 
   fprintf(fichtm,"\n");
-  fprintf(fichtm,"<br>Total number of observations=%d <br>\n\
+  fprintf(fichtm,"<h4>Parameter line 2</h4><ul><li>Tolerance for the convergence of the likelihood: ftol=%f \n<li>Interval for the elementary matrix (in month): stepm=%d",\
+	  ftol, stepm);
+  fprintf(fichtm,"\n<li>Number of fixed dummy covariates: ncovcol=%d ", ncovcol);
+  ncurrv=1;
+  for(i=ncurrv; i <=ncovcol; i++) fprintf(fichtm,"V%d ", i);
+  fprintf(fichtm,"\n<li> Number of fixed quantitative variables: nqv=%d ", nqv); 
+  ncurrv=i;
+  for(i=ncurrv; i <=ncurrv-1+nqv; i++) fprintf(fichtm,"V%d ", i);
+  fprintf(fichtm,"\n<li> Number of time varying (wave varying) covariates: ntv=%d ", ntv);
+  ncurrv=i;
+  for(i=ncurrv; i <=ncurrv-1+ntv; i++) fprintf(fichtm,"V%d ", i);
+  fprintf(fichtm,"\n<li>Number of quantitative time varying covariates: nqtv=%d ", nqtv);
+  ncurrv=i;
+  for(i=ncurrv; i <=ncurrv-1+nqtv; i++) fprintf(fichtm,"V%d ", i);
+  fprintf(fichtm,"\n<li>Weights column \n<br>Number of alive states: nlstate=%d <br>Number of death states (not really implemented): ndeath=%d \n<li>Number of waves: maxwav=%d \n<li>Parameter for maximization (1), using parameter values (0), for design of parameters and variance-covariance matrix: mle=%d \n<li>Does the weight column be taken into account (1), or not (0): weight=%d</ul>\n", \
+	   nlstate, ndeath, maxwav, mle, weightopt);
+
+  fprintf(fichtm,"<h4> Diagram of states <a href=\"%s_.svg\">%s_.svg</a></h4> \n\
+<img src=\"%s_.svg\">", subdirf2(optionfilefiname,"D_"),subdirf2(optionfilefiname,"D_"),subdirf2(optionfilefiname,"D_"));
+
+  
+  fprintf(fichtm,"\n<h4>Some descriptive statistics </h4>\n<br>Total number of observations=%d <br>\n\
 Youngest age at first (selected) pass %.2f, oldest age %.2f<br>\n\
 Interval (in months) between two waves: Min=%d Max=%d Mean=%.2lf<br>\n",\
-	  imx,agemin,agemax,jmin,jmax,jmean);
+  imx,agemin,agemax,jmin,jmax,jmean);
   pmmij= matrix(1,nlstate+ndeath,1,nlstate+ndeath); /* creation */
   oldms= matrix(1,nlstate+ndeath,1,nlstate+ndeath); /* creation */
   newms= matrix(1,nlstate+ndeath,1,nlstate+ndeath); /* creation */
-- 
2.43.0