--- imach/src/imach.c 2022/09/16 13:52:36 1.346 +++ imach/src/imach.c 2022/09/20 00:01:38 1.348 @@ -1,6 +1,16 @@ -/* $Id: imach.c,v 1.346 2022/09/16 13:52:36 brouard Exp $ +/* $Id: imach.c,v 1.348 2022/09/20 00:01:38 brouard Exp $ $State: Exp $ $Log: imach.c,v $ + Revision 1.348 2022/09/20 00:01:38 brouard + Summary: version 0.99r43 + + * imach.c (Module): Version 0.99r42 needed a newer version of + Gnuplot. But newer version 0.99r43 should run with the Gnuplot + version 5.0 or 5.1 distributed with IMaCh. + + Revision 1.347 2022/09/18 14:36:44 brouard + Summary: version 0.99r42 + Revision 1.346 2022/09/16 13:52:36 brouard * src/imach.c (Module): 0.99r41 Was an error when product of timevarying and fixed. Using FixedV[of name] now. Thank you Feinuo @@ -1352,12 +1362,12 @@ double gnuplotversion=GNUPLOTVERSION; #define ODIRSEPARATOR '\\' #endif -/* $Id: imach.c,v 1.346 2022/09/16 13:52:36 brouard Exp $ */ +/* $Id: imach.c,v 1.348 2022/09/20 00:01:38 brouard Exp $ */ /* $State: Exp $ */ #include "version.h" char version[]=__IMACH_VERSION__; char copyright[]="September 2022,INED-EUROREVES-Institut de longevite-Japan Society for the Promotion of Science (Grant-in-Aid for Scientific Research 25293121), Intel Software 2015-2020, Nihon University 2021-202, INED 2000-2022"; -char fullversion[]="$Revision: 1.346 $ $Date: 2022/09/16 13:52:36 $"; +char fullversion[]="$Revision: 1.348 $ $Date: 2022/09/20 00:01:38 $"; char strstart[80]; char optionfilext[10], optionfilefiname[FILENAMELENGTH]; int erreur=0, nberr=0, nbwarn=0; /* Error number, number of errors number of warnings */ @@ -8224,14 +8234,22 @@ void printinggnuplot(char fileresu[], ch fprintf(ficgp,"\nset ter pngcairo size 640, 480"); /* if(debugILK==1){ */ for(kf=1; kf <= ncovf; kf++){ /* For each simple dummy covariate of the model */ - kvar=Tvar[TvarFind[kf]]; /* variable */ - k=18+Tvar[TvarFind[kf]];/*offset because there are 18 columns in the ILK_ file */ + kvar=Tvar[TvarFind[kf]]; /* variable name */ + /* k=18+Tvar[TvarFind[kf]];/\*offset because there are 18 columns in the ILK_ file but could be placed else where *\/ */ + k=18+kf;/*offset because there are 18 columns in the ILK_ file */ for (i=1; i<= nlstate ; i ++) { fprintf(ficgp,"\nset out \"%s-p%dj-%d.png\";set ylabel \"Probability for each individual/wave\";",subdirf2(optionfilefiname,"ILK_"),i,kvar); fprintf(ficgp,"unset log;\n# For each simple dummy covariate of the model \n plot \"%s\"",subdirf(fileresilk)); - fprintf(ficgp," u 2:($5 == %d && $6==%d ? $10 : 1/0):($%d==0 ? 7 : 9):($%d==0 ? $6 : $6+4) t \"p%d%d V%d\" with points pt variable ps 0.4 lc variable \\\n",i,1,k,k,i,1,kvar); - for (j=2; j<= nlstate+ndeath ; j ++) { - fprintf(ficgp,",\\\n \"\" u 2:($5 == %d && $6==%d ? $10 : 1/0):($%d==0 ? 7 : 9):($%d==0 ? $6 : $6+4) t \"p%d%d V%d\" with points pt variable ps 0.4 lc variable ",i,j,k,k,i,j,kvar); + if(gnuplotversion >=5.2){ /* Former gnuplot versions do not have variable pointsize!! */ + fprintf(ficgp," u 2:($5 == %d && $6==%d ? $10 : 1/0):($%d==0 ? 7 : 9):($%d==0 ? $6 : $6+4) t \"p%d%d V%d\" with points pt variable ps 0.4 lc variable \\\n",i,1,k,k,i,1,kvar); + for (j=2; j<= nlstate+ndeath ; j ++) { + fprintf(ficgp,",\\\n \"\" u 2:($5 == %d && $6==%d ? $10 : 1/0):($%d==0 ? 7 : 9):($%d==0 ? $6 : $6+4) t \"p%d%d V%d\" with points pt variable ps 0.4 lc variable ",i,j,k,k,i,j,kvar); + } + }else{ + fprintf(ficgp," u 2:($5 == %d && $6==%d ? $10 : 1/0):($%d==0 ? $6 : $6+4) t \"p%d%d V%d\" with points pt 7 ps 0.4 lc variable \\\n",i,1,k,i,1,kvar); + for (j=2; j<= nlstate+ndeath ; j ++) { + fprintf(ficgp,",\\\n \"\" u 2:($5 == %d && $6==%d ? $10 : 1/0):($%d==0 ? $6 : $6+4) t \"p%d%d V%d\" with points pt 7 ps 0.4 lc variable ",i,j,k,i,j,kvar); + } } fprintf(ficgp,";\nset out; unset ylabel;\n"); } @@ -8261,6 +8279,7 @@ void printinggnuplot(char fileresu[], ch fprintf(ficgp,"\nset out \"%s-p%dj-%d.png\";set ylabel \"Probability for each individual/wave\";",subdirf2(optionfilefiname,"ILK_"),i,kvar); fprintf(ficgp,"unset log;\n# For each simple dummy covariate of the model \n plot \"%s\"",subdirf(fileresilk)); + /* printf("Before DebugILK gnuplotversion=%g >=5.2\n",gnuplotversion); */ if(gnuplotversion >=5.2){ /* Former gnuplot versions do not have variable pointsize!! */ /* printf("DebugILK gnuplotversion=%g >=5.2\n",gnuplotversion); */ fprintf(ficgp," u 2:($5 == %d && $6==%d ? $10 : 1/0):($%d==0 ? 7 : 9):($%d==0 ? $6 : $6+4) t \"p%d%d V%d\" with points pt variable ps 0.4 lc variable \\\n",i,1,k,k,i,1,kvar); @@ -10650,9 +10669,13 @@ int readdata(char datafile[], int firsto errno=0; lval=strtol(strb,&endptr,10); /* if (errno == ERANGE && (lval == LONG_MAX || lval == LONG_MIN))*/ - if( strb[0]=='\0' || (*endptr != '\0')){ - printf("Error reading data around '%s' at line number %d for individual %d, '%s'\nShould be a status of wave %d. Setting maxwav=%d might be wrong. Exiting.\n", strb, linei,i,line,j,maxwav); - fprintf(ficlog,"Error reading data around '%s' at line number %d for individual %d, '%s'\nShould be a status of wave %d. Setting maxwav=%d might be wrong. Exiting.\n", strb, linei,i,line,j,maxwav);fflush(ficlog); + if( strb[0]=='\0' || (*endptr != '\0' )){ + printf("Error reading data around '%s' at line number %d for individual %d, '%s'\nShould be a status of wave %d. Setting maxwav=%d might be wrong. Exiting.\n", strb, linei,i,line,j,maxwav); + fprintf(ficlog,"Error reading data around '%s' at line number %d for individual %d, '%s'\nShould be a status of wave %d. Setting maxwav=%d might be wrong. Exiting.\n", strb, linei,i,line,j,maxwav);fflush(ficlog); + return 1; + }else if( lval==0 || lval > nlstate+ndeath){ + printf("Error in data around '%s' at line number %d for individual %d, '%s'\n Should be a state at wave %d. A state should be 1 to %d and not %ld.\n Fix your data file '%s'! Exiting.\n", strb, linei,i,line,j,nlstate+ndeath, lval, datafile);fflush(stdout); + fprintf(ficlog,"Error in data around '%s' at line number %d for individual %d, '%s'\n Should be a state at wave %d. A state should be 1 to %d and not %ld.\n Fix your data file '%s'! Exiting.\n", strb, linei,i,line,j,nlstate+ndeath, lval, datafile); fflush(ficlog); return 1; } }