version 1.85, 2003/06/17 13:12:43
|
version 1.86, 2003/06/17 20:04:08
|
Line 1
|
Line 1
|
/* $Id$ |
/* $Id$ |
$State$ |
$State$ |
$Log$ |
$Log$ |
|
Revision 1.86 2003/06/17 20:04:08 brouard |
|
(Module): Change position of html and gnuplot routines and added |
|
routine fileappend. |
|
|
Revision 1.85 2003/06/17 13:12:43 brouard |
Revision 1.85 2003/06/17 13:12:43 brouard |
* imach.c (Repository): Check when date of death was earlier that |
* imach.c (Repository): Check when date of death was earlier that |
current date of interview. It may happen when the death was just |
current date of interview. It may happen when the death was just |
Line 19
|
Line 23
|
place. It differs from routine "prevalence" which may be called |
place. It differs from routine "prevalence" which may be called |
many times. Probs is memory consuming and must be used with |
many times. Probs is memory consuming and must be used with |
parcimony. |
parcimony. |
Version 0.95a2 (should output exactly the same maximization than 0.8a2) |
Version 0.95a3 (should output exactly the same maximization than 0.8a2) |
|
|
Revision 1.83 2003/06/10 13:39:11 lievre |
Revision 1.83 2003/06/10 13:39:11 lievre |
*** empty log message *** |
*** empty log message *** |
Line 122
|
Line 126
|
#include <stdlib.h> |
#include <stdlib.h> |
#include <unistd.h> |
#include <unistd.h> |
|
|
|
#include <sys/time.h> |
|
#include <time.h> |
|
#include "timeval.h" |
|
|
#define MAXLINE 256 |
#define MAXLINE 256 |
#define GNUPLOTPROGRAM "gnuplot" |
#define GNUPLOTPROGRAM "gnuplot" |
/*#define GNUPLOTPROGRAM "..\\gp37mgw\\wgnuplot"*/ |
/*#define GNUPLOTPROGRAM "..\\gp37mgw\\wgnuplot"*/ |
Line 1342 double funcone( double *x)
|
Line 1350 double funcone( double *x)
|
ll[s[mw[mi][i]][i]] += 2*weight[i]*lli; |
ll[s[mw[mi][i]][i]] += 2*weight[i]*lli; |
/* printf("i=%6d s1=%1d s2=%1d mi=%1d mw=%1d dh=%3d prob=%10.6f w=%6.4f out=%10.6f sav=%10.6f\n",i,s1,s2,mi,mw[mi][i],dh[mi][i],exp(lli),weight[i],out[s1][s2],savm[s1][s2]); */ |
/* printf("i=%6d s1=%1d s2=%1d mi=%1d mw=%1d dh=%3d prob=%10.6f w=%6.4f out=%10.6f sav=%10.6f\n",i,s1,s2,mi,mw[mi][i],dh[mi][i],exp(lli),weight[i],out[s1][s2],savm[s1][s2]); */ |
if(globpr){ |
if(globpr){ |
fprintf(ficresilk,"%6d %1d %1d %1d %1d %3d %10.6f %6.4f %10.6f %10.6f %10.6f ", \ |
fprintf(ficresilk,"%ld %6d %1d %1d %1d %1d %3d %10.6f %6.4f\ |
i,s1,s2,mi,mw[mi][i],dh[mi][i],exp(lli),weight[i],2*weight[i]*lli,out[s1][s2],savm[s1][s2]); |
%10.6f %10.6f %10.6f ", \ |
|
num[i],i,s1,s2,mi,mw[mi][i],dh[mi][i],exp(lli),weight[i], |
|
2*weight[i]*lli,out[s1][s2],savm[s1][s2]); |
for(k=1,l=0.; k<=nlstate; k++) |
for(k=1,l=0.; k<=nlstate; k++) |
fprintf(ficresilk," %10.6f",ll[k]); |
fprintf(ficresilk," %10.6f",ll[k]); |
fprintf(ficresilk,"\n"); |
fprintf(ficresilk,"\n"); |
Line 1371 void likelione(FILE *ficres,double p[],
|
Line 1381 void likelione(FILE *ficres,double p[],
|
printf("Problem with resultfile: %s\n", fileresilk); |
printf("Problem with resultfile: %s\n", fileresilk); |
fprintf(ficlog,"Problem with resultfile: %s\n", fileresilk); |
fprintf(ficlog,"Problem with resultfile: %s\n", fileresilk); |
} |
} |
fprintf(ficresilk, "# individual(line's record) s1 s2 wave# effective_wave# number_of_product_matrix pij weight 2ln(pij)*weight 0pij_x 0pij_(x-stepm) cumulating_loglikeli_by_health_state"); |
fprintf(ficresilk, "#individual(line's record) s1 s2 wave# effective_wave# number_of_product_matrix pij weight 2ln(pij)*weight 0pij_x 0pij_(x-stepm) cumulating_loglikeli_by_health_state\n"); |
fprintf(ficresilk, "# i s1 s2 mi mw dh likeli weight out sav "); |
fprintf(ficresilk, "#num_i i s1 s2 mi mw dh likeli weight out sav "); |
/* i,s1,s2,mi,mw[mi][i],dh[mi][i],exp(lli),weight[i],2*weight[i]*lli,out[s1][s2],savm[s1][s2]); */ |
/* i,s1,s2,mi,mw[mi][i],dh[mi][i],exp(lli),weight[i],2*weight[i]*lli,out[s1][s2],savm[s1][s2]); */ |
for(k=1; k<=nlstate; k++) |
for(k=1; k<=nlstate; k++) |
fprintf(ficresilk," ll[%d]",k); |
fprintf(ficresilk," ll[%d]",k); |
Line 1380 void likelione(FILE *ficres,double p[],
|
Line 1390 void likelione(FILE *ficres,double p[],
|
} |
} |
|
|
*fretone=(*funcone)(p); |
*fretone=(*funcone)(p); |
if(globpr !=0) |
if(globpr !=0){ |
fclose(ficresilk); |
fclose(ficresilk); |
|
if((fichtm=fopen(optionfilehtm,"a"))==NULL) { |
|
printf("Problem with html file: %s\n", optionfilehtm); |
|
fprintf(ficlog,"Problem with html file: %s\n", optionfilehtm); |
|
exit(0); |
|
} |
|
else{ |
|
fprintf(fichtm,"\n<br>File of contributions to the likelihood: <a href=\"%s\">%s</a><br>\n",fileresilk); |
|
fclose(fichtm); |
|
} |
|
} |
return; |
return; |
} |
} |
|
|
Line 1984 void concatwav(int wav[], int **dh, int
|
Line 2004 void concatwav(int wav[], int **dh, int
|
else if(j<0){ |
else if(j<0){ |
printf("Error! Negative delay (%d to death) between waves %d and %d of individual %ld at line %d who is aged %.1f with statuses from %d to %d\n ",j,mw[mi][i],mw[mi+1][i],num[i], i,agev[mw[mi][i]][i],s[mw[mi][i]][i] ,s[mw[mi+1][i]][i]); |
printf("Error! Negative delay (%d to death) between waves %d and %d of individual %ld at line %d who is aged %.1f with statuses from %d to %d\n ",j,mw[mi][i],mw[mi+1][i],num[i], i,agev[mw[mi][i]][i],s[mw[mi][i]][i] ,s[mw[mi+1][i]][i]); |
j=1; /* Careful Patch */ |
j=1; /* Careful Patch */ |
printf(" We assumed that the date of interview was correct (and not the date of death) and postponed the death %d month(s) (one stepm) after the interview.\n You MUST fixe the contradiction between dates.\n",stepm); |
printf(" We assumed that the date of interview was correct (and not the date of death) and postponed the death %d month(s) (one stepm) after the interview.\n You MUST fix the contradiction between dates.\n",stepm); |
printf("Error! Negative delay (%d to death) between waves %d and %d of individual %ld at line %d who is aged %.1f with statuses from %d to %d\n ",j,mw[mi][i],mw[mi+1][i],num[i], i,agev[mw[mi][i]][i],s[mw[mi][i]][i] ,s[mw[mi+1][i]][i]); |
printf("Error! Negative delay (%d to death) between waves %d and %d of individual %ld at line %d who is aged %.1f with statuses from %d to %d\n ",j,mw[mi][i],mw[mi+1][i],num[i], i,agev[mw[mi][i]][i],s[mw[mi][i]][i] ,s[mw[mi+1][i]][i]); |
fprintf(ficlog," We assumed that the date of interview was correct (and not the date of death) and postponed the death %d month(s) (one stepm) after the interview.\n You MUST fix the contradiction between dates.\n",stepm); |
fprintf(ficlog," We assumed that the date of interview was correct (and not the date of death) and postponed the death %d month(s) (one stepm) after the interview.\n You MUST fix the contradiction between dates.\n",stepm); |
} |
} |
Line 3591 populforecast(char fileres[], double anp
|
Line 3611 populforecast(char fileres[], double anp
|
fclose(ficrespop); |
fclose(ficrespop); |
} /* End of popforecast */ |
} /* End of popforecast */ |
|
|
|
int fileappend(FILE *fichier, char *optionfile) |
|
{ |
|
if((fichier=fopen(optionfile,"a"))==NULL) { |
|
printf("Problem with file: %s\n", optionfile); |
|
fprintf(ficlog,"Problem with file: %s\n", optionfile); |
|
return (1); |
|
} |
|
|
|
} |
/***********************************************/ |
/***********************************************/ |
/**************** Main Program *****************/ |
/**************** Main Program *****************/ |
/***********************************************/ |
/***********************************************/ |
Line 3644 int main(int argc, char *argv[])
|
Line 3673 int main(int argc, char *argv[])
|
|
|
|
|
char z[1]="c", occ; |
char z[1]="c", occ; |
#include <sys/time.h> |
|
#include <time.h> |
|
char stra[80], strb[80], strc[80], strd[80],stre[80],modelsav[80]; |
char stra[80], strb[80], strc[80], strd[80],stre[80],modelsav[80]; |
char *strt, *strtend; |
char *strt, *strtend; |
char *stratrunc; |
char *stratrunc; |
Line 3664 int main(int argc, char *argv[])
|
Line 3692 int main(int argc, char *argv[])
|
tm = *localtime(&start_time.tv_sec); |
tm = *localtime(&start_time.tv_sec); |
tmg = *gmtime(&start_time.tv_sec); |
tmg = *gmtime(&start_time.tv_sec); |
strt=asctime(&tm); |
strt=asctime(&tm); |
|
|
/* printf("Localtime (at start)=%s",strt); */ |
/* printf("Localtime (at start)=%s",strt); */ |
/* tp.tv_sec = tp.tv_sec +86400; */ |
/* tp.tv_sec = tp.tv_sec +86400; */ |
/* tm = *localtime(&start_time.tv_sec); */ |
/* tm = *localtime(&start_time.tv_sec); */ |
Line 3713 int main(int argc, char *argv[])
|
Line 3742 int main(int argc, char *argv[])
|
fprintf(ficlog,"\n%s\n%s",version,fullversion); |
fprintf(ficlog,"\n%s\n%s",version,fullversion); |
fprintf(ficlog,"\nEnter the parameter file name: "); |
fprintf(ficlog,"\nEnter the parameter file name: "); |
fprintf(ficlog,"pathtot=%s, path=%s, optionfile=%s optionfilext=%s optionfilefiname=%s\n",pathtot,path,optionfile,optionfilext,optionfilefiname); |
fprintf(ficlog,"pathtot=%s, path=%s, optionfile=%s optionfilext=%s optionfilefiname=%s\n",pathtot,path,optionfile,optionfilext,optionfilefiname); |
printf("Localtime (at start)=%s",strt); |
|
fprintf(ficlog,"Localtime (at start)=%s",strt); |
printf("Localtime (at start)=%s",strt); |
|
fprintf(ficlog,"Localtime (at start)=%s",strt); |
fflush(ficlog); |
fflush(ficlog); |
|
|
/* */ |
/* */ |
Line 4224 int main(int argc, char *argv[])
|
Line 4254 int main(int argc, char *argv[])
|
} |
} |
scanf("%d",i);*/ |
scanf("%d",i);*/ |
|
|
|
/*------------ gnuplot -------------*/ |
|
strcpy(optionfilegnuplot,optionfilefiname); |
|
strcat(optionfilegnuplot,".gp"); |
|
if((ficgp=fopen(optionfilegnuplot,"w"))==NULL) { |
|
printf("Problem with file %s",optionfilegnuplot); |
|
} |
|
else{ |
|
fprintf(ficgp,"\n# %s\n", version); |
|
fprintf(ficgp,"# %s\n", optionfilegnuplot); |
|
fprintf(ficgp,"set missing 'NaNq'\n"); |
|
} |
|
fclose(ficgp); |
|
/*--------- index.htm --------*/ |
|
|
|
strcpy(optionfilehtm,optionfile); |
|
strcat(optionfilehtm,".htm"); |
|
if((fichtm=fopen(optionfilehtm,"w"))==NULL) { |
|
printf("Problem with %s \n",optionfilehtm), exit(0); |
|
} |
|
|
|
fprintf(fichtm,"<body> <font size=\"2\">%s <br> %s</font> \ |
|
<hr size=\"2\" color=\"#EC5E5E\"> \n\ |
|
Title=%s <br>Datafile=%s Firstpass=%d Lastpass=%d Stepm=%d Weight=%d Model=%s<br>\n\ |
|
\n\ |
|
<hr size=\"2\" color=\"#EC5E5E\">\ |
|
<ul><li><h4>Parameter files</h4>\n\ |
|
- Copy of the parameter file: <a href=\"o%s\">o%s</a><br>\n\ |
|
- Log file of the run: <a href=\"%s\">%s</a><br>\n\ |
|
- Gnuplot file name: <a href=\"%s\">%s</a>\n\ |
|
- Date and time at start: %s</ul>\n",\ |
|
version,fullversion,title,datafile,firstpass,lastpass,stepm, weightopt,\ |
|
model,fileres,fileres,\ |
|
filelog,filelog,optionfilegnuplot,optionfilegnuplot,strt); |
|
fclose(fichtm); |
|
|
/* Calculates basic frequencies. Computes observed prevalence at single age |
/* Calculates basic frequencies. Computes observed prevalence at single age |
and prints on file fileres'p'. */ |
and prints on file fileres'p'. */ |
freqsummary(fileres, agemin, agemax, s, agev, nlstate, imx,Tvaraff,nbcode, ncodemax,mint,anint); |
freqsummary(fileres, agemin, agemax, s, agev, nlstate, imx,Tvaraff,nbcode, ncodemax,mint,anint); |
|
|
|
if(fileappend(fichtm, optionfilehtm)){ |
|
fprintf(fichtm,"<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); |
|
fclose(fichtm); |
|
} |
pmmij= matrix(1,nlstate+ndeath,1,nlstate+ndeath); /* creation */ |
pmmij= matrix(1,nlstate+ndeath,1,nlstate+ndeath); /* creation */ |
oldms= 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 */ |
newms= matrix(1,nlstate+ndeath,1,nlstate+ndeath); /* creation */ |
Line 4239 int main(int argc, char *argv[])
|
Line 4311 int main(int argc, char *argv[])
|
so we point p on param[1][1] so that p[1] maps on param[1][1][1] */ |
so we point p on param[1][1] so that p[1] maps on param[1][1][1] */ |
p=param[1][1]; /* *(*(*(param +1)+1)+0) */ |
p=param[1][1]; /* *(*(*(param +1)+1)+0) */ |
|
|
globpr=0; /* To get ipmx number of contributions and sum of weights*/ |
globpr=0; /* To get the number ipmx of contributions and the sum of weights*/ |
likelione(ficres, p, npar, nlstate, &globpr, &ipmx, &sw, &fretone, funcone); /* Prints the contributions to the likelihood */ |
likelione(ficres, p, npar, nlstate, &globpr, &ipmx, &sw, &fretone, funcone); /* Prints the contributions to the likelihood */ |
printf("First Likeli=%12.6f ipmx=%ld sw=%12.6f",fretone,ipmx,sw); |
printf("First Likeli=%12.6f ipmx=%ld sw=%12.6f",fretone,ipmx,sw); |
for (k=1; k<=npar;k++) |
for (k=1; k<=npar;k++) |
Line 4413 int main(int argc, char *argv[])
|
Line 4485 int main(int argc, char *argv[])
|
fprintf(ficparo,"popforecast=%d popfile=%s popfiledate=%.lf/%.lf/%.lf last-popfiledate=%.lf/%.lf/%.lf\n",popforecast,popfile,jpyram,mpyram,anpyram,jpyram1,mpyram1,anpyram1); |
fprintf(ficparo,"popforecast=%d popfile=%s popfiledate=%.lf/%.lf/%.lf last-popfiledate=%.lf/%.lf/%.lf\n",popforecast,popfile,jpyram,mpyram,anpyram,jpyram1,mpyram1,anpyram1); |
fprintf(ficres,"popforecast=%d popfile=%s popfiledate=%.lf/%.lf/%.lf last-popfiledate=%.lf/%.lf/%.lf\n",popforecast,popfile,jpyram,mpyram,anpyram,jpyram1,mpyram1,anpyram1); |
fprintf(ficres,"popforecast=%d popfile=%s popfiledate=%.lf/%.lf/%.lf last-popfiledate=%.lf/%.lf/%.lf\n",popforecast,popfile,jpyram,mpyram,anpyram,jpyram1,mpyram1,anpyram1); |
|
|
freqsummary(fileres, agemin, agemax, s, agev, nlstate, imx,Tvaraff,nbcode, ncodemax,mint,anint); |
/* freqsummary(fileres, agemin, agemax, s, agev, nlstate, imx,Tvaraff,nbcode, ncodemax,mint,anint);*/ |
/*,dateprev1,dateprev2,jprev1, mprev1,anprev1,jprev2, mprev2,anprev2);*/ |
/*,dateprev1,dateprev2,jprev1, mprev1,anprev1,jprev2, mprev2,anprev2);*/ |
|
|
/*------------ gnuplot -------------*/ |
|
strcpy(optionfilegnuplot,optionfilefiname); |
|
strcat(optionfilegnuplot,".gp"); |
|
if((ficgp=fopen(optionfilegnuplot,"w"))==NULL) { |
|
printf("Problem with file %s",optionfilegnuplot); |
|
} |
|
else{ |
|
fprintf(ficgp,"\n# %s\n", version); |
|
fprintf(ficgp,"# %s\n", optionfilegnuplot); |
|
fprintf(ficgp,"set missing 'NaNq'\n"); |
|
} |
|
fclose(ficgp); |
|
printinggnuplot(fileres, ageminpar,agemaxpar,fage, pathc,p); |
printinggnuplot(fileres, ageminpar,agemaxpar,fage, pathc,p); |
/*--------- index.htm --------*/ |
|
|
|
strcpy(optionfilehtm,optionfile); |
|
strcat(optionfilehtm,".htm"); |
|
if((fichtm=fopen(optionfilehtm,"w"))==NULL) { |
|
printf("Problem with %s \n",optionfilehtm), exit(0); |
|
} |
|
|
|
fprintf(fichtm,"<body> <font size=\"2\">%s </font> <hr size=\"2\" color=\"#EC5E5E\"> \n\ |
|
Title=%s <br>Datafile=%s Firstpass=%d Lastpass=%d Stepm=%d Weight=%d Model=%s<br>\n\ |
|
\n\ |
|
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\ |
|
<hr size=\"2\" color=\"#EC5E5E\">\ |
|
<ul><li><h4>Parameter files</h4>\n\ |
|
- Copy of the parameter file: <a href=\"o%s\">o%s</a><br>\n\ |
|
- Log file of the run: <a href=\"%s\">%s</a><br>\n\ |
|
- Gnuplot file name: <a href=\"%s\">%s</a></ul>\n",\ |
|
version,title,datafile,firstpass,lastpass,stepm, weightopt,\ |
|
model,imx,agemin,agemax,jmin,jmax,jmean,fileres,fileres,\ |
|
filelog,filelog,optionfilegnuplot,optionfilegnuplot); |
|
fclose(fichtm); |
|
|
|
printinghtml(fileres,title,datafile, firstpass, lastpass, stepm, weightopt,\ |
printinghtml(fileres,title,datafile, firstpass, lastpass, stepm, weightopt,\ |
model,imx,jmin,jmax,jmean,rfileres,popforecast,estepm,\ |
model,imx,jmin,jmax,jmean,rfileres,popforecast,estepm,\ |
Line 4800 ageminpar, agemax, s[lastpass][imx], age
|
Line 4837 ageminpar, agemax, s[lastpass][imx], age
|
printf("Total time was %d Sec. %d uSec.\n", end_time.tv_sec -start_time.tv_sec, end_time.tv_usec -start_time.tv_usec); |
printf("Total time was %d Sec. %d uSec.\n", end_time.tv_sec -start_time.tv_sec, end_time.tv_usec -start_time.tv_usec); |
fprintf(ficlog,"Total time was %d Sec. %d uSec.\n", end_time.tv_sec -start_time.tv_sec, end_time.tv_usec -start_time.tv_usec); |
fprintf(ficlog,"Total time was %d Sec. %d uSec.\n", end_time.tv_sec -start_time.tv_sec, end_time.tv_usec -start_time.tv_usec); |
/* printf("Total time was %d uSec.\n", total_usecs);*/ |
/* printf("Total time was %d uSec.\n", total_usecs);*/ |
|
if(fileappend(fichtm,optionfilehtm)){ |
|
fprintf(fichtm,"<br>Localtime at start %s and at end=%s<br>",strt, strtend); |
|
fclose(fichtm); |
|
} |
/*------ End -----------*/ |
/*------ End -----------*/ |
|
|
end: |
end: |