|
|
| version 1.90, 2003/06/24 12:34:15 | version 1.91, 2003/06/25 15:30:29 |
|---|---|
| Line 1 | Line 1 |
| /* $Id$ | /* $Id$ |
| $State$ | $State$ |
| $Log$ | $Log$ |
| Revision 1.91 2003/06/25 15:30:29 brouard | |
| * imach.c (Repository): Duplicated warning errors corrected. | |
| (Repository): Elapsed time after each iteration is now output. It | |
| helps to forecast when convergence will be reached. Elapsed time | |
| is stamped in powell. We created a new html file for the graphs | |
| concerning matrix of covariance. It has extension -cov.htm. | |
| Revision 1.90 2003/06/24 12:34:15 brouard | Revision 1.90 2003/06/24 12:34:15 brouard |
| (Module): Some bugs corrected for windows. Also, when | (Module): Some bugs corrected for windows. Also, when |
| mle=-1 a template is output in file "or"mypar.txt with the design | mle=-1 a template is output in file "or"mypar.txt with the design |
| Line 179 | Line 186 |
| char version[]="Imach version 0.96a, June 2003, INED-EUROREVES "; | char version[]="Imach version 0.96a, June 2003, INED-EUROREVES "; |
| char fullversion[]="$Revision$ $Date$"; | char fullversion[]="$Revision$ $Date$"; |
| int erreur; /* Error number */ | int erreur, nberr=0, nbwarn=0; /* Error number, number of errors number of warnings */ |
| int nvar; | int nvar; |
| int cptcovn=0, cptcovage=0, cptcoveff=0,cptcov; | int cptcovn=0, cptcovage=0, cptcoveff=0,cptcov; |
| int npar=NPARMAX; | int npar=NPARMAX; |
| Line 211 char fileresilk[FILENAMELENGTH]; /* File | Line 218 char fileresilk[FILENAMELENGTH]; /* File |
| FILE *ficresilk; | FILE *ficresilk; |
| FILE *ficgp,*ficresprob,*ficpop, *ficresprobcov, *ficresprobcor; | FILE *ficgp,*ficresprob,*ficpop, *ficresprobcov, *ficresprobcor; |
| FILE *ficresprobmorprev; | FILE *ficresprobmorprev; |
| FILE *fichtm; /* Html File */ | FILE *fichtm, *fichtmcov; /* Html File */ |
| FILE *ficreseij; | FILE *ficreseij; |
| char filerese[FILENAMELENGTH]; | char filerese[FILENAMELENGTH]; |
| FILE *ficresvij; | FILE *ficresvij; |
| Line 232 char filerest[FILENAMELENGTH]; | Line 239 char filerest[FILENAMELENGTH]; |
| char fileregp[FILENAMELENGTH]; | char fileregp[FILENAMELENGTH]; |
| char popfile[FILENAMELENGTH]; | char popfile[FILENAMELENGTH]; |
| char optionfilegnuplot[FILENAMELENGTH], optionfilehtm[FILENAMELENGTH]; | char optionfilegnuplot[FILENAMELENGTH], optionfilehtm[FILENAMELENGTH], optionfilehtmcov[FILENAMELENGTH] ; |
| struct timeval start_time, end_time, curr_time, last_time, forecast_time; | |
| struct timezone tzp; | |
| extern int gettimeofday(); | |
| struct tm tmg, tm, tmf, *gmtime(), *localtime(); | |
| long time_value; | |
| extern long time(); | |
| char strcurr[80], strfor[80]; | |
| #define NR_END 1 | #define NR_END 1 |
| #define FREE_ARG char* | #define FREE_ARG char* |
| Line 713 void linmin(double p[], double xi[], int | Line 728 void linmin(double p[], double xi[], int |
| free_vector(pcom,1,n); | free_vector(pcom,1,n); |
| } | } |
| char *asc_diff_time(long time_sec, char ascdiff[]) | |
| { | |
| long sec_left, days, hours, minutes; | |
| days = (time_sec) / (60*60*24); | |
| sec_left = (time_sec) % (60*60*24); | |
| hours = (sec_left) / (60*60) ; | |
| sec_left = (sec_left) %(60*60); | |
| minutes = (sec_left) /60; | |
| sec_left = (sec_left) % (60); | |
| sprintf(ascdiff,"%d day(s) %d hour(s) %d minute(s) %d second(s)",days, hours, minutes, sec_left); | |
| return ascdiff; | |
| } | |
| /*************** powell ************************/ | /*************** powell ************************/ |
| void powell(double p[], double **xi, int n, double ftol, int *iter, double *fret, | void powell(double p[], double **xi, int n, double ftol, int *iter, double *fret, |
| double (*func)(double [])) | double (*func)(double [])) |
| Line 723 void powell(double p[], double **xi, int | Line 751 void powell(double p[], double **xi, int |
| double del,t,*pt,*ptt,*xit; | double del,t,*pt,*ptt,*xit; |
| double fp,fptt; | double fp,fptt; |
| double *xits; | double *xits; |
| int niterf, itmp; | |
| pt=vector(1,n); | pt=vector(1,n); |
| ptt=vector(1,n); | ptt=vector(1,n); |
| xit=vector(1,n); | xit=vector(1,n); |
| Line 733 void powell(double p[], double **xi, int | Line 763 void powell(double p[], double **xi, int |
| fp=(*fret); | fp=(*fret); |
| ibig=0; | ibig=0; |
| del=0.0; | del=0.0; |
| printf("\nPowell iter=%d -2*LL=%.12f",*iter,*fret); | last_time=curr_time; |
| fprintf(ficlog,"\nPowell iter=%d -2*LL=%.12f",*iter,*fret); | (void) gettimeofday(&curr_time,&tzp); |
| fprintf(ficrespow,"%d %.12f",*iter,*fret); | printf("\nPowell iter=%d -2*LL=%.12f %ld sec. %ld sec.",*iter,*fret, curr_time.tv_sec-last_time.tv_sec, curr_time.tv_sec-start_time.tv_sec);fflush(stdout); |
| fprintf(ficlog,"\nPowell iter=%d -2*LL=%.12f %ld sec. %ld sec.",*iter,*fret, curr_time.tv_sec-last_time.tv_sec, curr_time.tv_sec-start_time.tv_sec); | |
| fprintf(ficrespow,"%d %.12f %ld",*iter,*fret,curr_time.tv_sec-start_time.tv_sec); | |
| for (i=1;i<=n;i++) { | for (i=1;i<=n;i++) { |
| printf(" %d %.12f",i, p[i]); | printf(" %d %.12f",i, p[i]); |
| fprintf(ficlog," %d %.12lf",i, p[i]); | fprintf(ficlog," %d %.12lf",i, p[i]); |
| Line 743 void powell(double p[], double **xi, int | Line 775 void powell(double p[], double **xi, int |
| } | } |
| printf("\n"); | printf("\n"); |
| fprintf(ficlog,"\n"); | fprintf(ficlog,"\n"); |
| fprintf(ficrespow,"\n"); | fprintf(ficrespow,"\n");fflush(ficrespow); |
| if(*iter <=3){ | |
| tm = *localtime(&curr_time.tv_sec); | |
| asctime_r(&tm,strcurr); | |
| forecast_time=curr_time; | |
| itmp = strlen(strcurr); | |
| if(strcurr[itmp-1]=='\n') | |
| strcurr[itmp-1]='\0'; | |
| printf("\nConsidering the time needed for this last iteration #%d: %ld seconds,\n",*iter,curr_time.tv_sec-last_time.tv_sec); | |
| fprintf(ficlog,"\nConsidering the time needed for this last iteration #%d: %ld seconds,\n",*iter,curr_time.tv_sec-last_time.tv_sec); | |
| for(niterf=10;niterf<=30;niterf+=10){ | |
| forecast_time.tv_sec=curr_time.tv_sec+(niterf-*iter)*(curr_time.tv_sec-last_time.tv_sec); | |
| tmf = *localtime(&forecast_time.tv_sec); | |
| asctime_r(&tmf,strfor); | |
| /* strcpy(strfor,asctime(&tmf)); */ | |
| itmp = strlen(strfor); | |
| if(strfor[itmp-1]=='\n') | |
| strfor[itmp-1]='\0'; | |
| printf(" - if your program needs %d iterations to converge, convergence will be \n reached in %s or\n on %s (current time is %s);\n",niterf, asc_diff_time(forecast_time.tv_sec-curr_time.tv_sec,tmpout),strfor,strcurr); | |
| fprintf(ficlog," - if your program needs %d iterations to converge, convergence will be \n reached in %s or\n on %s (current time is %s);\n",niterf, asc_diff_time(forecast_time.tv_sec-curr_time.tv_sec,tmpout),strfor,strcurr); | |
| } | |
| } | |
| for (i=1;i<=n;i++) { | for (i=1;i<=n;i++) { |
| for (j=1;j<=n;j++) xit[j]=xi[j][i]; | for (j=1;j<=n;j++) xit[j]=xi[j][i]; |
| fptt=(*fret); | fptt=(*fret); |
| Line 1398 double funcone( double *x) | Line 1451 double funcone( double *x) |
| char *subdirf(char fileres[]) | char *subdirf(char fileres[]) |
| { | { |
| /* Caution optionfilefiname is hidden */ | |
| strcpy(tmpout,optionfilefiname); | strcpy(tmpout,optionfilefiname); |
| strcat(tmpout,"/"); /* Add to the right */ | strcat(tmpout,"/"); /* Add to the right */ |
| strcat(tmpout,fileres); | strcat(tmpout,fileres); |
| Line 2036 void concatwav(int wav[], int **dh, int | Line 2089 void concatwav(int wav[], int **dh, int |
| wav[i]=mi; | wav[i]=mi; |
| if(mi==0){ | if(mi==0){ |
| nbwarn++; | |
| if(first==0){ | if(first==0){ |
| printf("Warning! None valid information for:%ld line=%d (skipped) and may be others, see log file\n",num[i],i); | printf("Warning! None valid information for:%ld line=%d (skipped) and may be others, see log file\n",num[i],i); |
| first=1; | first=1; |
| Line 2056 void concatwav(int wav[], int **dh, int | Line 2110 void concatwav(int wav[], int **dh, int |
| j= rint(agedc[i]*12-agev[mw[mi][i]][i]*12); | j= rint(agedc[i]*12-agev[mw[mi][i]][i]*12); |
| if(j==0) j=1; /* Survives at least one month after exam */ | if(j==0) j=1; /* Survives at least one month after exam */ |
| else if(j<0){ | else if(j<0){ |
| nberr++; | |
| 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; /* Temporary Dangerous 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 fix 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]); | fprintf(ficlog,"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); |
| } | } |
| k=k+1; | k=k+1; |
| Line 2079 void concatwav(int wav[], int **dh, int | Line 2134 void concatwav(int wav[], int **dh, int |
| /* if (j<10) printf("j=%d jmin=%d num=%d ",j,jmin,i); */ | /* if (j<10) printf("j=%d jmin=%d num=%d ",j,jmin,i); */ |
| /*printf("%d %lf %d %d %d\n", i,agev[mw[mi][i]][i],j,s[mw[mi][i]][i] ,s[mw[mi+1][i]][i]);*/ | /*printf("%d %lf %d %d %d\n", i,agev[mw[mi][i]][i],j,s[mw[mi][i]][i] ,s[mw[mi+1][i]][i]);*/ |
| if(j<0){ | if(j<0){ |
| nberr++; | |
| printf("Error! Negative delay (%d) 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) 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,"Error! Negative delay (%d) 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,"Error! Negative delay (%d) 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]); |
| } | } |
| Line 2809 void varprob(char optionfilefiname[], do | Line 2865 void varprob(char optionfilefiname[], do |
| fprintf(fichtm,"\n<li><h4> Computing and drawing one step probabilities with their confidence intervals</h4></li>\n"); | fprintf(fichtm,"\n<li><h4> Computing and drawing one step probabilities with their confidence intervals</h4></li>\n"); |
| fprintf(fichtm,"\n"); | fprintf(fichtm,"\n"); |
| fprintf(fichtm,"\n<li><h4> Computing matrix of variance-covariance of step probabilities</h4></li>\n"); | fprintf(fichtm,"\n<li><h4> <a href=\"%s\">Computing matrix of variance-covariance of step probabilities</a></h4></li>\n",optionfilehtmcov); |
| fprintf(fichtm,"\nWe have drawn ellipsoids of confidence around the p<inf>ij</inf>, p<inf>kl</inf> to understand the covariance between two incidences. They are expressed in year<sup>-1</sup> in order to be less dependent of stepm.<br>\n"); | fprintf(fichtmcov,"\n<h4>Computing matrix of variance-covariance of step probabilities</h4>\n\ |
| fprintf(fichtm,"\n<br> We have drawn x'cov<sup>-1</sup>x = 4 where x is the column vector (pij,pkl). It means that if pij and pkl where uncorrelated the (2X2) matrix would have been (1/(var pij), 0 , 0, 1/(var pkl)), and the confidence interval would be 2 standard deviations wide on each axis. <br> When both incidences are correlated we diagonalised the inverse of the covariance matrix and made the appropriate rotation.<br> \n"); | file %s<br>\n",optionfilehtmcov); |
| fprintf(fichtmcov,"\nEllipsoids of confidence centered on point (p<inf>ij</inf>, p<inf>kl</inf>) are estimated\ | |
| and drawn. It helps understanding how is the covariance between two incidences.\ | |
| They are expressed in year<sup>-1</sup> in order to be less dependent of stepm.<br>\n"); | |
| fprintf(fichtmcov,"\n<br> Contour plot corresponding to x'cov<sup>-1</sup>x = 4 (where x is the column vector (pij,pkl)) are drawn. \ | |
| It can be understood this way: if pij and pkl where uncorrelated the (2x2) matrix of covariance \ | |
| would have been (1/(var pij), 0 , 0, 1/(var pkl)), and the confidence interval would be 2 \ | |
| standard deviations wide on each axis. <br>\ | |
| Now, if both incidences are correlated (usual case) we diagonalised the inverse of the covariance matrix\ | |
| and made the appropriate rotation to look at the uncorrelated principal directions.<br>\ | |
| To be simple, these graphs help to understand the significativity of each parameter in relation to a second other one.<br> \n"); | |
| cov[1]=1; | cov[1]=1; |
| tj=cptcoveff; | tj=cptcoveff; |
| Line 2993 void varprob(char optionfilefiname[], do | Line 3059 void varprob(char optionfilefiname[], do |
| fprintf(ficgp,"\nset parametric;unset label"); | fprintf(ficgp,"\nset parametric;unset label"); |
| fprintf(ficgp,"\nset log y;set log x; set xlabel \"p%1d%1d (year-1)\";set ylabel \"p%1d%1d (year-1)\"",k1,l1,k2,l2); | fprintf(ficgp,"\nset log y;set log x; set xlabel \"p%1d%1d (year-1)\";set ylabel \"p%1d%1d (year-1)\"",k1,l1,k2,l2); |
| fprintf(ficgp,"\nset ter png small\nset size 0.65,0.65"); | fprintf(ficgp,"\nset ter png small\nset size 0.65,0.65"); |
| fprintf(fichtm,"\n<br>Ellipsoids of confidence cov(p%1d%1d,p%1d%1d) expressed in year<sup>-1</sup>\ | fprintf(fichtmcov,"\n<br>Ellipsoids of confidence cov(p%1d%1d,p%1d%1d) expressed in year<sup>-1</sup>\ |
| :<a href=\"%s%d%1d%1d-%1d%1d.png\">\ | :<a href=\"%s%d%1d%1d-%1d%1d.png\">\ |
| %s%d%1d%1d-%1d%1d.png</A>, ",k1,l1,k2,l2,\ | %s%d%1d%1d-%1d%1d.png</A>, ",k1,l1,k2,l2,\ |
| subdirf2(optionfilefiname,"varpijgr"), j1,k1,l1,k2,l2,\ | subdirf2(optionfilefiname,"varpijgr"), j1,k1,l1,k2,l2,\ |
| subdirf2(optionfilefiname,"varpijgr"), j1,k1,l1,k2,l2); | subdirf2(optionfilefiname,"varpijgr"), j1,k1,l1,k2,l2); |
| fprintf(fichtm,"\n<br><img src=\"%s%d%1d%1d-%1d%1d.png\"> ",subdirf2(optionfilefiname,"varpijgr"), j1,k1,l1,k2,l2); | fprintf(fichtmcov,"\n<br><img src=\"%s%d%1d%1d-%1d%1d.png\"> ",subdirf2(optionfilefiname,"varpijgr"), j1,k1,l1,k2,l2); |
| fprintf(fichtm,"\n<br> Correlation at age %d (%.3f),",(int) age, c12); | fprintf(fichtmcov,"\n<br> Correlation at age %d (%.3f),",(int) age, c12); |
| fprintf(ficgp,"\nset out \"%s%d%1d%1d-%1d%1d.png\"",subdirf2(optionfilefiname,"varpijgr"), j1,k1,l1,k2,l2); | fprintf(ficgp,"\nset out \"%s%d%1d%1d-%1d%1d.png\"",subdirf2(optionfilefiname,"varpijgr"), j1,k1,l1,k2,l2); |
| fprintf(ficgp,"\nset label \"%d\" at %11.3e,%11.3e center",(int) age, mu1,mu2); | fprintf(ficgp,"\nset label \"%d\" at %11.3e,%11.3e center",(int) age, mu1,mu2); |
| fprintf(ficgp,"\n# Age %d, p%1d%1d - p%1d%1d",(int) age, k1,l1,k2,l2); | fprintf(ficgp,"\n# Age %d, p%1d%1d - p%1d%1d",(int) age, k1,l1,k2,l2); |
| Line 3008 void varprob(char optionfilefiname[], do | Line 3074 void varprob(char optionfilefiname[], do |
| mu2,std,v21,sqrt(lc1),v22,sqrt(lc2)); | mu2,std,v21,sqrt(lc1),v22,sqrt(lc2)); |
| }else{ | }else{ |
| first=0; | first=0; |
| fprintf(fichtm," %d (%.3f),",(int) age, c12); | fprintf(fichtmcov," %d (%.3f),",(int) age, c12); |
| fprintf(ficgp,"\n# Age %d, p%1d%1d - p%1d%1d",(int) age, k1,l1,k2,l2); | fprintf(ficgp,"\n# Age %d, p%1d%1d - p%1d%1d",(int) age, k1,l1,k2,l2); |
| fprintf(ficgp,"\nset label \"%d\" at %11.3e,%11.3e center",(int) age, mu1,mu2); | fprintf(ficgp,"\nset label \"%d\" at %11.3e,%11.3e center",(int) age, mu1,mu2); |
| fprintf(ficgp,"\nreplot %11.3e+ %.3f*(%11.3e*%11.3e*cos(t)+%11.3e*%11.3e*sin(t)), %11.3e +%.3f*(%11.3e*%11.3e*cos(t)+%11.3e*%11.3e*sin(t)) not",\ | fprintf(ficgp,"\nreplot %11.3e+ %.3f*(%11.3e*%11.3e*cos(t)+%11.3e*%11.3e*sin(t)), %11.3e +%.3f*(%11.3e*%11.3e*cos(t)+%11.3e*%11.3e*sin(t)) not",\ |
| Line 3031 void varprob(char optionfilefiname[], do | Line 3097 void varprob(char optionfilefiname[], do |
| fclose(ficresprob); | fclose(ficresprob); |
| fclose(ficresprobcov); | fclose(ficresprobcov); |
| fclose(ficresprobcor); | fclose(ficresprobcor); |
| /* fclose(ficgp);*/ | fflush(ficgp); |
| fflush(fichtmcov); | |
| } | } |
| Line 3794 void prwizard(int ncovmodel, int nlstate | Line 3861 void prwizard(int ncovmodel, int nlstate |
| } /* end of prwizard */ | } /* end of prwizard */ |
| /***********************************************/ | /***********************************************/ |
| /**************** Main Program *****************/ | /**************** Main Program *****************/ |
| /***********************************************/ | /***********************************************/ |
| Line 3857 int main(int argc, char *argv[]) | Line 3925 int main(int argc, char *argv[]) |
| int lstra; | int lstra; |
| long total_usecs; | long total_usecs; |
| struct timeval start_time, end_time, curr_time; | |
| struct timezone tzp; | |
| extern int gettimeofday(); | |
| struct tm tmg, tm, *gmtime(), *localtime(); | |
| long time_value; | |
| extern long time(); | |
| /* gettimeofday(&start_time, (struct timezone*)0); */ /* at first time */ | /* gettimeofday(&start_time, (struct timezone*)0); */ /* at first time */ |
| (void) gettimeofday(&start_time,&tzp); | (void) gettimeofday(&start_time,&tzp); |
| curr_time=start_time; | |
| tm = *localtime(&start_time.tv_sec); | tm = *localtime(&start_time.tv_sec); |
| tmg = *gmtime(&start_time.tv_sec); | tmg = *gmtime(&start_time.tv_sec); |
| strcpy(strstart,asctime(&tm)); | strcpy(strstart,asctime(&tm)); |
| Line 3886 int main(int argc, char *argv[]) | Line 3949 int main(int argc, char *argv[]) |
| * printf("tim_value=%d,asctime=%s\n",time_value,strstart); | * printf("tim_value=%d,asctime=%s\n",time_value,strstart); |
| */ | */ |
| nberr=0; /* Number of errors and warnings */ | |
| nbwarn=0; | |
| getcwd(pathcd, size); | getcwd(pathcd, size); |
| printf("\n%s\n%s",version,fullversion); | printf("\n%s\n%s",version,fullversion); |
| Line 3937 int main(int argc, char *argv[]) | Line 4002 int main(int argc, char *argv[]) |
| printf("Localtime (at start):%s",strstart); | printf("Localtime (at start):%s",strstart); |
| fprintf(ficlog,"Localtime (at start): %s",strstart); | fprintf(ficlog,"Localtime (at start): %s",strstart); |
| fflush(ficlog); | fflush(ficlog); |
| /* (void) gettimeofday(&curr_time,&tzp); */ | |
| /* printf("Elapsed time %d\n", asc_diff_time(curr_time.tv_sec-start_time.tv_sec,tmpout)); */ | |
| /* */ | /* */ |
| strcpy(fileres,"r"); | strcpy(fileres,"r"); |
| Line 4328 int main(int argc, char *argv[]) | Line 4395 int main(int argc, char *argv[]) |
| s[m][i]=-1; | s[m][i]=-1; |
| } | } |
| if((int)moisdc[i]==99 && (int)andc[i]==9999 && s[m][i]>nlstate){ | if((int)moisdc[i]==99 && (int)andc[i]==9999 && s[m][i]>nlstate){ |
| nberr++; | |
| printf("Error! Date of death (month %2d and year %4d) of individual %ld on line %d was unknown, you must set an arbitrary year of death or he/she is skipped and results are biased\n",(int)moisdc[i],(int)andc[i],num[i],i); | printf("Error! Date of death (month %2d and year %4d) of individual %ld on line %d was unknown, you must set an arbitrary year of death or he/she is skipped and results are biased\n",(int)moisdc[i],(int)andc[i],num[i],i); |
| fprintf(ficlog,"Error! Date of death (month %2d and year %4d) of individual %ld on line %d was unknown, you must set an arbitrary year of death or he/she is skipped and results are biased\n",(int)moisdc[i],(int)andc[i],num[i],i); | fprintf(ficlog,"Error! Date of death (month %2d and year %4d) of individual %ld on line %d was unknown, you must set an arbitrary year of death or he/she is skipped and results are biased\n",(int)moisdc[i],(int)andc[i],num[i],i); |
| s[m][i]=-1; | s[m][i]=-1; |
| } | } |
| if((int)moisdc[i]==99 && (int)andc[i]!=9999 && s[m][i]>nlstate){ | if((int)moisdc[i]==99 && (int)andc[i]!=9999 && s[m][i]>nlstate){ |
| nberr++; | |
| printf("Error! Month of death of individual %ld on line %d was unknown %2d, you should set it otherwise the information on the death is skipped and results are biased.\n",num[i],i,(int)moisdc[i]); | printf("Error! Month of death of individual %ld on line %d was unknown %2d, you should set it otherwise the information on the death is skipped and results are biased.\n",num[i],i,(int)moisdc[i]); |
| fprintf(ficlog,"Error! Month of death of individual %ld on line %d was unknown %f, you should set it otherwise the information on the death is skipped and results are biased.\n",num[i],i,moisdc[i]); | fprintf(ficlog,"Error! Month of death of individual %ld on line %d was unknown %f, you should set it otherwise the information on the death is skipped and results are biased.\n",num[i],i,moisdc[i]); |
| s[m][i]=-1; /* We prefer to skip it (and to skip it in version 0.8a1 too */ | s[m][i]=-1; /* We prefer to skip it (and to skip it in version 0.8a1 too */ |
| Line 4351 int main(int argc, char *argv[]) | Line 4420 int main(int argc, char *argv[]) |
| /*if(moisdc[i]==99 && andc[i]==9999) s[m][i]=-1;*/ | /*if(moisdc[i]==99 && andc[i]==9999) s[m][i]=-1;*/ |
| else { | else { |
| if ((int)andc[i]!=9999){ | if ((int)andc[i]!=9999){ |
| nbwarn++; | |
| printf("Warning negative age at death: %ld line:%d\n",num[i],i); | printf("Warning negative age at death: %ld line:%d\n",num[i],i); |
| fprintf(ficlog,"Warning negative age at death: %ld line:%d\n",num[i],i); | fprintf(ficlog,"Warning negative age at death: %ld line:%d\n",num[i],i); |
| agev[m][i]=-1; | agev[m][i]=-1; |
| Line 4387 int main(int argc, char *argv[]) | Line 4457 int main(int argc, char *argv[]) |
| for (i=1; i<=imx; i++) { | for (i=1; i<=imx; i++) { |
| for(m=firstpass; (m<=lastpass); m++){ | for(m=firstpass; (m<=lastpass); m++){ |
| if (s[m][i] > (nlstate+ndeath)) { | if (s[m][i] > (nlstate+ndeath)) { |
| nberr++; | |
| printf("Error: on wave %d of individual %d status %d > (nlstate+ndeath)=(%d+%d)=%d\n",m,i,s[m][i],nlstate, ndeath, nlstate+ndeath); | printf("Error: on wave %d of individual %d status %d > (nlstate+ndeath)=(%d+%d)=%d\n",m,i,s[m][i],nlstate, ndeath, nlstate+ndeath); |
| fprintf(ficlog,"Error: on wave %d of individual %d status %d > (nlstate+ndeath)=(%d+%d)=%d\n",m,i,s[m][i],nlstate, ndeath, nlstate+ndeath); | fprintf(ficlog,"Error: on wave %d of individual %d status %d > (nlstate+ndeath)=(%d+%d)=%d\n",m,i,s[m][i],nlstate, ndeath, nlstate+ndeath); |
| goto end; | goto end; |
| Line 4469 int main(int argc, char *argv[]) | Line 4540 int main(int argc, char *argv[]) |
| /* fclose(ficgp);*/ | /* fclose(ficgp);*/ |
| /*--------- index.htm --------*/ | /*--------- index.htm --------*/ |
| strcpy(optionfilehtm,optionfilefiname); | strcpy(optionfilehtm,optionfilefiname); /* Main html file */ |
| strcat(optionfilehtm,".htm"); | strcat(optionfilehtm,".htm"); |
| if((fichtm=fopen(optionfilehtm,"w"))==NULL) { | if((fichtm=fopen(optionfilehtm,"w"))==NULL) { |
| printf("Problem with %s \n",optionfilehtm), exit(0); | printf("Problem with %s \n",optionfilehtm), exit(0); |
| } | } |
| strcpy(optionfilehtmcov,optionfilefiname); /* Only for matrix of covariance */ | |
| strcat(optionfilehtmcov,"-cov.htm"); | |
| if((fichtmcov=fopen(optionfilehtmcov,"w"))==NULL) { | |
| printf("Problem with %s \n",optionfilehtmcov), exit(0); | |
| } | |
| else{ | |
| fprintf(fichtmcov,"<body>\n<title>IMaCh Cov %s</title>\n <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",\ | |
| fileres,version,fullversion,title,datafile,firstpass,lastpass,stepm, weightopt, model); | |
| } | |
| fprintf(fichtm,"<body>\n<title>IMaCh %s</title>\n <font size=\"2\">%s <br> %s</font> \ | fprintf(fichtm,"<body>\n<title>IMaCh %s</title>\n <font size=\"2\">%s <br> %s</font> \ |
| <hr size=\"2\" color=\"#EC5E5E\"> \n\ | <hr size=\"2\" color=\"#EC5E5E\"> \n\ |
| Title=%s <br>Datafile=%s Firstpass=%d Lastpass=%d Stepm=%d Weight=%d Model=%s<br>\n\ | Title=%s <br>Datafile=%s Firstpass=%d Lastpass=%d Stepm=%d Weight=%d Model=%s<br>\n\ |
| Line 4485 Title=%s <br>Datafile=%s Firstpass=%d La | Line 4568 Title=%s <br>Datafile=%s Firstpass=%d La |
| - Log file of the run: <a href=\"%s\">%s</a><br>\n\ | - Log file of the run: <a href=\"%s\">%s</a><br>\n\ |
| - Gnuplot file name: <a href=\"%s\">%s</a><br>\n\ | - Gnuplot file name: <a href=\"%s\">%s</a><br>\n\ |
| - Date and time at start: %s</ul>\n",\ | - Date and time at start: %s</ul>\n",\ |
| fileres,version,fullversion,title,datafile,firstpass,lastpass,stepm, weightopt,\ | fileres,version,fullversion,title,datafile,firstpass,lastpass,stepm, weightopt, model,\ |
| model,fileres,fileres,\ | fileres,fileres,\ |
| filelog,filelog,optionfilegnuplot,optionfilegnuplot,strstart); | filelog,filelog,optionfilegnuplot,optionfilegnuplot,strstart); |
| /*fclose(fichtm);*/ | |
| fflush(fichtm); | fflush(fichtm); |
| strcpy(pathr,path); | strcpy(pathr,path); |
| Line 5024 ageminpar, agemax, s[lastpass][imx], age | Line 5106 ageminpar, agemax, s[lastpass][imx], age |
| fflush(ficgp); | fflush(ficgp); |
| if(erreur >0){ | if((nberr >0) || (nbwarn>0)){ |
| printf("End of Imach with error or warning %d\n",erreur); | printf("End of Imach with %d errors and/or warnings %d\n",nberr,nbwarn); |
| fprintf(ficlog,"End of Imach with error or warning %d\n",erreur); | fprintf(ficlog,"End of Imach with %d errors and/or warnings %d\n",nberr,nbwarn); |
| }else{ | }else{ |
| printf("End of Imach\n"); | printf("End of Imach\n"); |
| fprintf(ficlog,"End of Imach\n"); | fprintf(ficlog,"End of Imach\n"); |
| } | } |
| printf("See log file on %s\n",filelog); | printf("See log file on %s\n",filelog); |
| fclose(ficlog); | |
| /* gettimeofday(&end_time, (struct timezone*)0);*/ /* after time */ | /* gettimeofday(&end_time, (struct timezone*)0);*/ /* after time */ |
| (void) gettimeofday(&end_time,&tzp); | (void) gettimeofday(&end_time,&tzp); |
| tm = *localtime(&end_time.tv_sec); | tm = *localtime(&end_time.tv_sec); |
| tmg = *gmtime(&end_time.tv_sec); | tmg = *gmtime(&end_time.tv_sec); |
| strcpy(strtend,asctime(&tm)); | strcpy(strtend,asctime(&tm)); |
| printf("Localtime at start %s\nLocaltime at end %s",strstart, strtend); | printf("Localtime at start %s\nLocaltime at end %s",strstart, strtend); |
| fprintf(ficlog,"Localtime at start %s\nLocal time at end %s",strstart, strtend); | fprintf(ficlog,"Localtime at start %s\nLocal time at end %s\n",strstart, strtend); |
| /* printf("Total time used %d Sec\n", asc_time(end_time.tv_sec -start_time.tv_sec);*/ | printf("Total time used %s\n", asc_diff_time(end_time.tv_sec -start_time.tv_sec,tmpout)); |
| 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.\n", end_time.tv_sec -start_time.tv_sec); |
| 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 used %s\n", asc_diff_time(end_time.tv_sec -start_time.tv_sec,tmpout)); |
| fprintf(ficlog,"Total time was %d Sec.\n", end_time.tv_sec -start_time.tv_sec); | |
| /* printf("Total time was %d uSec.\n", total_usecs);*/ | /* printf("Total time was %d uSec.\n", total_usecs);*/ |
| /* if(fileappend(fichtm,optionfilehtm)){ */ | /* if(fileappend(fichtm,optionfilehtm)){ */ |
| fprintf(fichtm,"<br>Local time at start %s<br>Local time at end %s<br>",strstart, strtend); | fprintf(fichtm,"<br>Local time at start %s<br>Local time at end %s<br>",strstart, strtend); |
| fclose(fichtm); | fclose(fichtm); |
| fclose(fichtmcov); | |
| fclose(ficgp); | fclose(ficgp); |
| fclose(ficlog); | |
| /*------ End -----------*/ | /*------ End -----------*/ |
| end: | |
| #ifdef windows | |
| /* chdir(pathcd);*/ | |
| #endif | |
| chdir(path); | chdir(path); |
| /*system("wgnuplot graph.plt");*/ | |
| /*system("../gp37mgw/wgnuplot graph.plt");*/ | |
| /*system("cd ../gp37mgw");*/ | |
| /* system("..\\gp37mgw\\wgnuplot graph.plt");*/ | |
| strcpy(plotcmd,GNUPLOTPROGRAM); | strcpy(plotcmd,GNUPLOTPROGRAM); |
| strcat(plotcmd," "); | strcat(plotcmd," "); |
| strcat(plotcmd,optionfilegnuplot); | strcat(plotcmd,optionfilegnuplot); |
| printf("Starting graphs with: %s",plotcmd);fflush(stdout); | printf("Starting graphs with: %s",plotcmd);fflush(stdout); |
| system(plotcmd); | if((outcmd=system(plotcmd)) != 0){ |
| printf(" Problem with gnuplot\n"); | |
| } | |
| printf(" Wait..."); | printf(" Wait..."); |
| /*#ifdef windows*/ | |
| while (z[0] != 'q') { | while (z[0] != 'q') { |
| /* chdir(path); */ | /* chdir(path); */ |
| printf("\nType e to edit output files, g to graph again, c to start again, and q for exiting: "); | printf("\nType e to edit output files, g to graph again and q for exiting: "); |
| scanf("%s",z); | scanf("%s",z); |
| if (z[0] == 'c') system("./imach"); | /* if (z[0] == 'c') system("./imach"); */ |
| else if (z[0] == 'e') system(optionfilehtm); | if (z[0] == 'e') system(optionfilehtm); |
| else if (z[0] == 'g') system(plotcmd); | else if (z[0] == 'g') system(plotcmd); |
| else if (z[0] == 'q') exit(0); | else if (z[0] == 'q') exit(0); |
| } | } |
| /*#endif */ | end: |
| while (z[0] != 'q') { | |
| printf("\nType q for exiting: "); | |
| scanf("%s",z); | |
| } | |
| } | } |