|
|
| version 1.193, 2015/08/04 07:17:42 | version 1.195, 2015/08/18 16:28:39 |
|---|---|
| Line 1 | Line 1 |
| /* $Id$ | /* $Id$ |
| $State$ | $State$ |
| $Log$ | $Log$ |
| Revision 1.195 2015/08/18 16:28:39 brouard | |
| Summary: Adding a hack for testing purpose | |
| After reading the title, ftol and model lines, if the comment line has | |
| a q, starting with #q, the answer at the end of the run is quit. It | |
| permits to run test files in batch with ctest. The former workaround was | |
| $ echo q | imach foo.imach | |
| Revision 1.194 2015/08/18 13:32:00 brouard | |
| Summary: Adding error when the covariance matrix doesn't contain the exact number of lines required by the model line. | |
| Revision 1.193 2015/08/04 07:17:42 brouard | Revision 1.193 2015/08/04 07:17:42 brouard |
| Summary: 0.98q4 | Summary: 0.98q4 |
| Line 685 typedef struct { | Line 696 typedef struct { |
| #define YEARM 12. /**< Number of months per year */ | #define YEARM 12. /**< Number of months per year */ |
| #define AGESUP 130 | #define AGESUP 130 |
| #define AGEBASE 40 | #define AGEBASE 40 |
| #define AGEOVERFLOW 1.e20 | |
| #define AGEGOMP 10 /**< Minimal age for Gompertz adjustment */ | #define AGEGOMP 10 /**< Minimal age for Gompertz adjustment */ |
| #ifdef _WIN32 | #ifdef _WIN32 |
| #define DIRSEPARATOR '\\' | #define DIRSEPARATOR '\\' |
| Line 699 typedef struct { | Line 711 typedef struct { |
| /* $Id$ */ | /* $Id$ */ |
| /* $State$ */ | /* $State$ */ |
| char version[]="Imach version 0.98q4, July 2015,INED-EUROREVES-Institut de longevite-Japan Society for the Promotion of Science (Grant-in-Aid for Scientific Research 25293121), Intel Software 2015"; | char version[]="Imach version 0.98q5, August 2015,INED-EUROREVES-Institut de longevite-Japan Society for the Promotion of Science (Grant-in-Aid for Scientific Research 25293121), Intel Software 2015"; |
| char fullversion[]="$Revision$ $Date$"; | char fullversion[]="$Revision$ $Date$"; |
| char strstart[80]; | char strstart[80]; |
| char optionfilext[10], optionfilefiname[FILENAMELENGTH]; | char optionfilext[10], optionfilefiname[FILENAMELENGTH]; |
| Line 5436 int readdata(char datafile[], int firsto | Line 5448 int readdata(char datafile[], int firsto |
| if((fic=fopen(datafile,"r"))==NULL) { | if((fic=fopen(datafile,"r"))==NULL) { |
| printf("Problem while opening datafile: %s\n", datafile);return 1; | printf("Problem while opening datafile: %s\n", datafile);fflush(stdout); |
| fprintf(ficlog,"Problem while opening datafile: %s\n", datafile);return 1; | fprintf(ficlog,"Problem while opening datafile: %s\n", datafile);fflush(ficlog);return 1; |
| } | } |
| i=1; | i=1; |
| Line 6272 int main(int argc, char *argv[]) | Line 6284 int main(int argc, char *argv[]) |
| /* FILE *ficgp;*/ /*Gnuplot File */ | /* FILE *ficgp;*/ /*Gnuplot File */ |
| struct stat info; | struct stat info; |
| double agedeb=0.; | double agedeb=0.; |
| double ageminpar=1.e20,agemin=1.e20, agemaxpar=-1.e20, agemax=-1.e20; | |
| double ageminpar=AGEOVERFLOW,agemin=AGEOVERFLOW, agemaxpar=-AGEOVERFLOW, agemax=-AGEOVERFLOW; | |
| double fret; | double fret; |
| double dum=0.; /* Dummy variable */ | double dum=0.; /* Dummy variable */ |
| Line 6284 int main(int argc, char *argv[]) | Line 6297 int main(int argc, char *argv[]) |
| char pathr[MAXLINE], pathimach[MAXLINE]; | char pathr[MAXLINE], pathimach[MAXLINE]; |
| char *tok, *val; /* pathtot */ | char *tok, *val; /* pathtot */ |
| int firstobs=1, lastobs=10; | int firstobs=1, lastobs=10; |
| int c, h , cpt; | int c, h , cpt, c2; |
| int jl=0; | int jl=0; |
| int i1, j1, jk, stepsize=0; | int i1, j1, jk, stepsize=0; |
| int count=0; | |
| int *tab; | int *tab; |
| int mobilavproj=0 , prevfcast=0 ; /* moving average of prev, If prevfcast=1 prevalence projection */ | int mobilavproj=0 , prevfcast=0 ; /* moving average of prev, If prevfcast=1 prevalence projection */ |
| int mobilav=0,popforecast=0; | int mobilav=0,popforecast=0; |
| Line 6477 int main(int argc, char *argv[]) | Line 6492 int main(int argc, char *argv[]) |
| ungetc(c,ficpar); | ungetc(c,ficpar); |
| fscanf(ficpar,"title=%s datafile=%s lastobs=%d firstpass=%d lastpass=%d\nftol=%lf stepm=%d ncovcol=%d nlstate=%d ndeath=%d maxwav=%d mle=%d weight=%d model=1+age+%s\n",title, datafile, &lastobs, &firstpass,&lastpass,&ftol, &stepm, &ncovcol, &nlstate,&ndeath, &maxwav, &mle, &weightopt,model); | fscanf(ficpar,"title=%s datafile=%s lastobs=%d firstpass=%d lastpass=%d\nftol=%lf stepm=%d ncovcol=%d nlstate=%d ndeath=%d maxwav=%d mle=%d weight=%d model=1+age+%s\n",title, datafile, &lastobs, &firstpass,&lastpass,&ftol, &stepm, &ncovcol, &nlstate,&ndeath, &maxwav, &mle, &weightopt,model); |
| numlinepar++; | numlinepar=numlinepar+3; /* In general */ |
| printf("title=%s datafile=%s lastobs=%d firstpass=%d lastpass=%d\nftol=%e stepm=%d ncovcol=%d nlstate=%d ndeath=%d maxwav=%d mle=%d weight=%d\nmodel=1+age+%s\n", title, datafile, lastobs, firstpass,lastpass,ftol, stepm, ncovcol, nlstate,ndeath, maxwav, mle, weightopt,model); | printf("title=%s datafile=%s lastobs=%d firstpass=%d lastpass=%d\nftol=%e stepm=%d ncovcol=%d nlstate=%d ndeath=%d maxwav=%d mle=%d weight=%d\nmodel=1+age+%s\n", title, datafile, lastobs, firstpass,lastpass,ftol, stepm, ncovcol, nlstate,ndeath, maxwav, mle, weightopt,model); |
| if(model[strlen(model)-1]=='.') /* Suppressing leading dot in the model */ | if(model[strlen(model)-1]=='.') /* Suppressing leading dot in the model */ |
| model[strlen(model)-1]='\0'; | model[strlen(model)-1]='\0'; |
| Line 6498 int main(int argc, char *argv[]) | Line 6513 int main(int argc, char *argv[]) |
| ungetc(c,ficpar); | ungetc(c,ficpar); |
| fgets(line, MAXLINE, ficpar); | fgets(line, MAXLINE, ficpar); |
| numlinepar++; | numlinepar++; |
| if(line[1]=='q'){ /* This #q will quit imach (the answer is q) */ | |
| z[0]=line[1]; | |
| } | |
| /* printf("****line [1] = %c \n",line[1]); */ | |
| fputs(line, stdout); | fputs(line, stdout); |
| //puts(line); | //puts(line); |
| fputs(line,ficparo); | fputs(line,ficparo); |
| Line 6654 run imach with mle=-1 to get a correct t | Line 6673 run imach with mle=-1 to get a correct t |
| for(i=1; i <=npar; i++) | for(i=1; i <=npar; i++) |
| for(j=1; j <=npar; j++) matcov[i][j]=0.; | for(j=1; j <=npar; j++) matcov[i][j]=0.; |
| /* Scans npar lines */ | |
| for(i=1; i <=npar; i++){ | for(i=1; i <=npar; i++){ |
| fscanf(ficpar,"%s",str); | count=fscanf(ficpar,"%1d%1d%1d",&i1,&j1,&jk); |
| if(count != 3){ | |
| printf("Error! Error in parameter file %s at line %d after line starting with %1d%1d%1d\n\ | |
| This is probably because your covariance matrix doesn't \n contain exactly %d lines corresponding to your model line '1+age+%s'.\n\ | |
| Please run with mle=-1 to get a correct covariance matrix.\n",optionfile,numlinepar, i1,j1,jk, npar, model); | |
| fprintf(ficlog,"Error! Error in parameter file %s at line %d after line starting with %1d%1d%1d\n\ | |
| This is probably because your covariance matrix doesn't \n contain exactly %d lines corresponding to your model line '1+age+%s'.\n\ | |
| Please run with mle=-1 to get a correct covariance matrix.\n",optionfile,numlinepar, i1,j1,jk, npar, model); | |
| exit(1); | |
| }else | |
| if(mle==1) | if(mle==1) |
| printf("%s",str); | printf("%1d%1d%1d",i1,j1,jk); |
| fprintf(ficlog,"%s",str); | fprintf(ficlog,"%1d%1d%1d",i1,j1,jk); |
| fprintf(ficparo,"%s",str); | fprintf(ficparo,"%1d%1d%1d",i1,j1,jk); |
| for(j=1; j <=i; j++){ | for(j=1; j <=i; j++){ |
| fscanf(ficpar," %le",&matcov[i][j]); | fscanf(ficpar," %le",&matcov[i][j]); |
| if(mle==1){ | if(mle==1){ |
| Line 6675 run imach with mle=-1 to get a correct t | Line 6704 run imach with mle=-1 to get a correct t |
| fprintf(ficlog,"\n"); | fprintf(ficlog,"\n"); |
| fprintf(ficparo,"\n"); | fprintf(ficparo,"\n"); |
| } | } |
| /* End of read covariance matrix npar lines */ | |
| for(i=1; i <=npar; i++) | for(i=1; i <=npar; i++) |
| for(j=i+1;j<=npar;j++) | for(j=i+1;j<=npar;j++) |
| matcov[i][j]=matcov[j][i]; | matcov[i][j]=matcov[j][i]; |
| Line 7149 Interval (in months) between two waves: | Line 7179 Interval (in months) between two waves: |
| replace_back_to_slash(pathc,pathcd); /* Even gnuplot wants a / */ | replace_back_to_slash(pathc,pathcd); /* Even gnuplot wants a / */ |
| printinggnuplotmort(fileres, optionfilefiname,ageminpar,agemaxpar,fage, pathc,p); | if(ageminpar == AGEOVERFLOW ||agemaxpar == AGEOVERFLOW){ |
| printf("Warning! Error in gnuplot file with ageminpar %f or agemaxpar %f overflow\n\ | |
| This is probably because your parameter file doesn't \n contain the exact number of lines (or columns) corresponding to your model line.\n\ | |
| Please run with mle=-1 to get a correct covariance matrix.\n",ageminpar,agemaxpar); | |
| fprintf(ficlog,"Warning! Error in gnuplot file with ageminpar %f or agemaxpar %f overflow\n\ | |
| This is probably because your parameter file doesn't \n contain the exact number of lines (or columns) corresponding to your model line.\n\ | |
| Please run with mle=-1 to get a correct covariance matrix.\n",ageminpar,agemaxpar); | |
| }else | |
| printinggnuplotmort(fileres, optionfilefiname,ageminpar,agemaxpar,fage, pathc,p); | |
| printinghtmlmort(fileres,title,datafile, firstpass, lastpass, \ | printinghtmlmort(fileres,title,datafile, firstpass, lastpass, \ |
| stepm, weightopt,\ | stepm, weightopt,\ |
| model,imx,p,matcov,agemortsup); | model,imx,p,matcov,agemortsup); |
| Line 7413 Interval (in months) between two waves: | Line 7450 Interval (in months) between two waves: |
| /* ,dateprev1,dateprev2,jprev1, mprev1,anprev1,jprev2, mprev2,anprev2); */ | /* ,dateprev1,dateprev2,jprev1, mprev1,anprev1,jprev2, mprev2,anprev2); */ |
| replace_back_to_slash(pathc,pathcd); /* Even gnuplot wants a / */ | replace_back_to_slash(pathc,pathcd); /* Even gnuplot wants a / */ |
| printinggnuplot(fileres, optionfilefiname,ageminpar,agemaxpar,fage, pathc,p); | if(ageminpar == AGEOVERFLOW ||agemaxpar == -AGEOVERFLOW){ |
| printf("Warning! Error in gnuplot file with ageminpar %f or agemaxpar %f overflow\n\ | |
| This is probably because your parameter file doesn't \n contain the exact number of lines (or columns) corresponding to your model line.\n\ | |
| Please run with mle=-1 to get a correct covariance matrix.\n",ageminpar,agemaxpar); | |
| fprintf(ficlog,"Warning! Error in gnuplot file with ageminpar %f or agemaxpar %f overflow\n\ | |
| This is probably because your parameter file doesn't \n contain the exact number of lines (or columns) corresponding to your model line.\n\ | |
| Please run with mle=-1 to get a correct covariance matrix.\n",ageminpar,agemaxpar); | |
| }else | |
| printinggnuplot(fileres, optionfilefiname,ageminpar,agemaxpar,fage, pathc,p); | |
| 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 7816 Interval (in months) between two waves: | Line 7861 Interval (in months) between two waves: |
| } | } |
| end: | end: |
| while (z[0] != 'q') { | while (z[0] != 'q') { |
| printf("\nType q for exiting: "); | printf("\nType q for exiting: "); fflush(stdout); |
| scanf("%s",z); | scanf("%s",z); |
| } | } |
| } | } |