|
|
| version 1.290, 2019/05/09 13:39:37 | version 1.297, 2019/05/22 17:56:10 |
|---|---|
| Line 1 | Line 1 |
| /* $Id$ | /* $Id$ |
| $State$ | $State$ |
| $Log$ | $Log$ |
| Revision 1.297 2019/05/22 17:56:10 brouard | |
| Summary: Fix bug by moving date2dmy and nhstepm which gaefin=-1 | |
| Revision 1.296 2019/05/20 13:03:18 brouard | |
| Summary: Projection syntax simplified | |
| We can now start projections, forward or backward, from the mean date | |
| of inteviews up to or down to a number of years of projection: | |
| prevforecast=1 yearsfproj=15.3 mobil_average=0 | |
| or | |
| prevforecast=1 starting-proj-date=1/1/2007 final-proj-date=12/31/2017 mobil_average=0 | |
| or | |
| prevbackcast=1 yearsbproj=12.3 mobil_average=1 | |
| or | |
| prevbackcast=1 starting-back-date=1/10/1999 final-back-date=1/1/1985 mobil_average=1 | |
| Revision 1.295 2019/05/18 09:52:50 brouard | |
| Summary: doxygen tex bug | |
| Revision 1.294 2019/05/16 14:54:33 brouard | |
| Summary: There was some wrong lines added | |
| Revision 1.293 2019/05/09 15:17:34 brouard | |
| *** empty log message *** | |
| Revision 1.292 2019/05/09 14:17:20 brouard | |
| Summary: Some updates | |
| Revision 1.291 2019/05/09 13:44:18 brouard | |
| Summary: Before ncovmax | |
| Revision 1.290 2019/05/09 13:39:37 brouard | Revision 1.290 2019/05/09 13:39:37 brouard |
| Summary: 0.99r18 unlimited number of individuals | Summary: 0.99r18 unlimited number of individuals |
| Line 1054 typedef struct { | Line 1086 typedef struct { |
| #define NINTERVMAX 8 | #define NINTERVMAX 8 |
| #define NLSTATEMAX 8 /**< Maximum number of live states (for func) */ | #define NLSTATEMAX 8 /**< Maximum number of live states (for func) */ |
| #define NDEATHMAX 8 /**< Maximum number of dead states (for func) */ | #define NDEATHMAX 8 /**< Maximum number of dead states (for func) */ |
| /* #define NCOVMAX 20 */ /**< Maximum number of covariates, including generated covariates V1*V2 */ | #define NCOVMAX 20 /**< Maximum number of covariates, including generated covariates V1*V2 */ |
| #define codtabm(h,k) (1 & (h-1) >> (k-1))+1 | #define codtabm(h,k) (1 & (h-1) >> (k-1))+1 |
| /*#define decodtabm(h,k,cptcoveff)= (h <= (1<<cptcoveff)?(((h-1) >> (k-1)) & 1) +1 : -1)*/ | /*#define decodtabm(h,k,cptcoveff)= (h <= (1<<cptcoveff)?(((h-1) >> (k-1)) & 1) +1 : -1)*/ |
| #define decodtabm(h,k,cptcoveff) (((h-1) >> (k-1)) & 1) +1 | #define decodtabm(h,k,cptcoveff) (((h-1) >> (k-1)) & 1) +1 |
| Line 1247 double **pmmij, ***probs; /* Global poin | Line 1279 double **pmmij, ***probs; /* Global poin |
| double ***mobaverage, ***mobaverages; /* New global variable */ | double ***mobaverage, ***mobaverages; /* New global variable */ |
| double *ageexmed,*agecens; | double *ageexmed,*agecens; |
| double dateintmean=0; | double dateintmean=0; |
| double anprojd, mprojd, jprojd; /* For eventual projections */ | |
| double anprojf, mprojf, jprojf; | |
| double anbackd, mbackd, jbackd; /* For eventual backprojections */ | |
| double anbackf, mbackf, jbackf; | |
| double jintmean,mintmean,aintmean; | |
| double *weight; | double *weight; |
| int **s; /* Status */ | int **s; /* Status */ |
| double *agedc; | double *agedc; |
| Line 2960 double **pmij(double **ps, double *cov, | Line 2997 double **pmij(double **ps, double *cov, |
| ps[ii][ii]=1; | ps[ii][ii]=1; |
| } | } |
| } | } |
| /* for(ii=1; ii<= nlstate+ndeath; ii++){ */ | /* for(ii=1; ii<= nlstate+ndeath; ii++){ */ |
| /* for(jj=1; jj<= nlstate+ndeath; jj++){ */ | /* for(jj=1; jj<= nlstate+ndeath; jj++){ */ |
| /* printf(" pmij ps[%d][%d]=%lf ",ii,jj,ps[ii][jj]); */ | /* printf(" pmij ps[%d][%d]=%lf ",ii,jj,ps[ii][jj]); */ |
| Line 2989 double **pmij(double **ps, double *cov, | Line 3026 double **pmij(double **ps, double *cov, |
| double **out, **pmij(); | double **out, **pmij(); |
| double sumnew=0.; | double sumnew=0.; |
| double agefin; | double agefin; |
| double k3=0.; /* constant of the w_x diagonal matrixe (in order for B to sum to 1 even for death state) */ | double k3=0.; /* constant of the w_x diagonal matrix (in order for B to sum to 1 even for death state) */ |
| double **dnewm, **dsavm, **doldm; | double **dnewm, **dsavm, **doldm; |
| double **bbmij; | double **bbmij; |
| Line 3008 double **pmij(double **ps, double *cov, | Line 3045 double **pmij(double **ps, double *cov, |
| /* outputs pmmij which is a stochastic matrix in row */ | /* outputs pmmij which is a stochastic matrix in row */ |
| /* Diag(w_x) */ | /* Diag(w_x) */ |
| /* Problem with prevacurrent which can be zero */ | /* Rescaling the cross-sectional prevalence: Problem with prevacurrent which can be zero */ |
| sumnew=0.; | sumnew=0.; |
| /*for (ii=1;ii<=nlstate+ndeath;ii++){*/ | /*for (ii=1;ii<=nlstate+ndeath;ii++){*/ |
| for (ii=1;ii<=nlstate;ii++){ /* Only on live states */ | for (ii=1;ii<=nlstate;ii++){ /* Only on live states */ |
| /* printf(" agefin=%d, ii=%d, ij=%d, prev=%f\n",(int)agefin,ii, ij, prevacurrent[(int)agefin][ii][ij]); */ | /* printf(" agefin=%d, ii=%d, ij=%d, prev=%f\n",(int)agefin,ii, ij, prevacurrent[(int)agefin][ii][ij]); */ |
| sumnew+=prevacurrent[(int)agefin][ii][ij]; | sumnew+=prevacurrent[(int)agefin][ii][ij]; |
| } | } |
| if(sumnew >0.01){ /* At least some value in the prevalence */ | if(sumnew >0.01){ /* At least some value in the prevalence */ |
| Line 3035 double **pmij(double **ps, double *cov, | Line 3072 double **pmij(double **ps, double *cov, |
| } | } |
| /* End doldm, At the end doldm is diag[(w_i)] */ | /* End doldm, At the end doldm is diag[(w_i)] */ |
| /* left Product of this diag matrix by pmmij=Px (dnewm=dsavm*doldm) */ | /* Left product of this diag matrix by pmmij=Px (dnewm=dsavm*doldm): diag[(w_i)*Px */ |
| bbmij=matprod2(dnewm, doldm,1,nlstate+ndeath,1,nlstate+ndeath,1,nlstate+ndeath, pmmij); /* Bug Valgrind */ | bbmij=matprod2(dnewm, doldm,1,nlstate+ndeath,1,nlstate+ndeath,1,nlstate+ndeath, pmmij); /* was a Bug Valgrind */ |
| /* Diag(Sum_i w^i_x p^ij_x */ | /* Diag(Sum_i w^i_x p^ij_x, should be the prevalence at age x+stepm */ |
| /* w1 p11 + w2 p21 only on live states N1./N..*N11/N1. + N2./N..*N21/N2.=(N11+N21)/N..=N.1/N.. */ | /* w1 p11 + w2 p21 only on live states N1./N..*N11/N1. + N2./N..*N21/N2.=(N11+N21)/N..=N.1/N.. */ |
| for (j=1;j<=nlstate+ndeath;j++){ | for (j=1;j<=nlstate+ndeath;j++){ |
| sumnew=0.; | sumnew=0.; |
| Line 3056 double **pmij(double **ps, double *cov, | Line 3093 double **pmij(double **ps, double *cov, |
| } /*End ii */ | } /*End ii */ |
| } /* End j, At the end dsavm is diag[1/(w_1p1i+w_2 p2i)] for ALL states even if the sum is only for live states */ | } /* End j, At the end dsavm is diag[1/(w_1p1i+w_2 p2i)] for ALL states even if the sum is only for live states */ |
| ps=matprod2(ps, dnewm,1,nlstate+ndeath,1,nlstate+ndeath,1,nlstate+ndeath, dsavm); /* Bug Valgrind */ | ps=matprod2(ps, dnewm,1,nlstate+ndeath,1,nlstate+ndeath,1,nlstate+ndeath, dsavm); /* was a Bug Valgrind */ |
| /* ps is now diag[w_i] * Px * diag [1/(w_1p1i+w_2 p2i)] */ | /* ps is now diag[w_i] * Px * diag [1/(w_1p1i+w_2 p2i)] */ |
| /* end bmij */ | /* end bmij */ |
| return ps; /*pointer is unchanged */ | return ps; /*pointer is unchanged */ |
| Line 3128 double **bpmij(double **ps, double *cov, | Line 3165 double **bpmij(double **ps, double *cov, |
| ps[ii][ii]=1; | ps[ii][ii]=1; |
| } | } |
| } | } |
| /* Added for backcast */ /* Transposed matrix too */ | /* Added for prevbcast */ /* Transposed matrix too */ |
| for(jj=1; jj<= nlstate+ndeath; jj++){ | for(jj=1; jj<= nlstate+ndeath; jj++){ |
| s1=0.; | s1=0.; |
| for(ii=1; ii<= nlstate+ndeath; ii++){ | for(ii=1; ii<= nlstate+ndeath; ii++){ |
| Line 3888 return -l; | Line 3925 return -l; |
| /*************** function likelione ***********/ | /*************** function likelione ***********/ |
| void likelione(FILE *ficres,double p[], int npar, int nlstate, int *globpri, long *ipmx, double *sw, double *fretone, double (*funcone)(double [])) | void likelione(FILE *ficres,double p[], int npar, int nlstate, int *globpri, long *ipmx, double *sw, double *fretone, double (*func)(double [])) |
| { | { |
| /* This routine should help understanding what is done with | /* This routine should help understanding what is done with |
| the selection of individuals/waves and | the selection of individuals/waves and |
| Line 3912 void likelione(FILE *ficres,double p[], | Line 3949 void likelione(FILE *ficres,double p[], |
| fprintf(ficresilk," -2*gipw/gsw*weight*ll(total)\n"); | fprintf(ficresilk," -2*gipw/gsw*weight*ll(total)\n"); |
| } | } |
| *fretone=(*funcone)(p); | *fretone=(*func)(p); |
| if(*globpri !=0){ | if(*globpri !=0){ |
| fclose(ficresilk); | fclose(ficresilk); |
| if (mle ==0) | if (mle ==0) |
| Line 4387 void pstamp(FILE *fichier) | Line 4424 void pstamp(FILE *fichier) |
| fprintf(fichier,"# %s.%s\n#IMaCh version %s, %s\n#%s\n# %s", optionfilefiname,optionfilext,version,copyright, fullversion, strstart); | fprintf(fichier,"# %s.%s\n#IMaCh version %s, %s\n#%s\n# %s", optionfilefiname,optionfilext,version,copyright, fullversion, strstart); |
| } | } |
| void date2dmy(double date,double *day, double *month, double *year){ | |
| double yp=0., yp1=0., yp2=0.; | |
| yp1=modf(date,&yp);/* extracts integral of date in yp and | |
| fractional in yp1 */ | |
| *year=yp; | |
| yp2=modf((yp1*12),&yp); | |
| *month=yp; | |
| yp1=modf((yp2*30.5),&yp); | |
| *day=yp; | |
| if(*day==0) *day=1; | |
| if(*month==0) *month=1; | |
| } | |
| /************ Frequencies ********************/ | /************ Frequencies ********************/ |
| Line 4961 Title=%s <br>Datafile=%s Firstpass=%d La | Line 5012 Title=%s <br>Datafile=%s Firstpass=%d La |
| } | } |
| } /* end mle=-2 */ | } /* end mle=-2 */ |
| dateintmean=dateintsum/k2cpt; | dateintmean=dateintsum/k2cpt; |
| date2dmy(dateintmean,&jintmean,&mintmean,&aintmean); | |
| fclose(ficresp); | fclose(ficresp); |
| fclose(ficresphtm); | fclose(ficresphtm); |
| Line 6003 void concatwav(int wav[], int **dh, int | Line 6055 void concatwav(int wav[], int **dh, int |
| prlim[i][i]=mobaverage[(int)age][i][ij]; | prlim[i][i]=mobaverage[(int)age][i][ij]; |
| } | } |
| } | } |
| /**< Computes the shifted transition matrix \f$ {}{h}_p^{ij}_x\f$ at horizon h. | /**< Computes the shifted transition matrix \f$ {}{h}_p^{ij}x\f$ at horizon h. |
| */ | */ |
| hpxij(p3mat,nhstepm,age,hstepm,xp,nlstate,stepm,oldm,savm, ij,nres); /* Returns p3mat[i][j][h] for h=0 to nhstepm */ | hpxij(p3mat,nhstepm,age,hstepm,xp,nlstate,stepm,oldm,savm, ij,nres); /* Returns p3mat[i][j][h] for h=0 to nhstepm */ |
| /**< And for each alive state j, sums over i \f$ w^i_x {}{h}_p^{ij}_x\f$, which are the probability | /**< And for each alive state j, sums over i \f$ w^i_x {}{h}_p^{ij}x\f$, which are the probability |
| * at horizon h in state j including mortality. | * at horizon h in state j including mortality. |
| */ | */ |
| for(j=1; j<= nlstate; j++){ | for(j=1; j<= nlstate; j++){ |
| Line 6796 To be simple, these graphs help to under | Line 6848 To be simple, these graphs help to under |
| void printinghtml(char fileresu[], char title[], char datafile[], int firstpass, \ | void printinghtml(char fileresu[], char title[], char datafile[], int firstpass, \ |
| int lastpass, int stepm, int weightopt, char model[],\ | int lastpass, int stepm, int weightopt, char model[],\ |
| int imx,int jmin, int jmax, double jmeanint,char rfileres[],\ | int imx,int jmin, int jmax, double jmeanint,char rfileres[],\ |
| int popforecast, int mobilav, int prevfcast, int mobilavproj, int backcast, int estepm , \ | int popforecast, int mobilav, int prevfcast, int mobilavproj, int prevbcast, int estepm , \ |
| double jprev1, double mprev1,double anprev1, double dateprev1, double dateproj1, double dateback1, \ | double jprev1, double mprev1,double anprev1, double dateprev1, double dateprojd, double dateback1, \ |
| double jprev2, double mprev2,double anprev2, double dateprev2, double dateproj2, double dateback2){ | double jprev2, double mprev2,double anprev2, double dateprev2, double dateprojf, double dateback2){ |
| int jj1, k1, i1, cpt, k4, nres; | int jj1, k1, i1, cpt, k4, nres; |
| fprintf(fichtm,"<ul><li><a href='#firstorder'>Result files (first order: no variance)</a>\n \ | fprintf(fichtm,"<ul><li><a href='#firstorder'>Result files (first order: no variance)</a>\n \ |
| Line 6928 divided by h: <sub>h</sub>P<sub>ij</sub> | Line 6980 divided by h: <sub>h</sub>P<sub>ij</sub> |
| <img src=\"%s_%d-3-%d.svg\">",stepm,subdirf2(optionfilefiname,"PE_"),k1,nres,subdirf2(optionfilefiname,"PE_"),k1,nres,subdirf2(optionfilefiname,"PE_"),k1,nres); | <img src=\"%s_%d-3-%d.svg\">",stepm,subdirf2(optionfilefiname,"PE_"),k1,nres,subdirf2(optionfilefiname,"PE_"),k1,nres,subdirf2(optionfilefiname,"PE_"),k1,nres); |
| /* Survival functions (period) in state j */ | /* Survival functions (period) in state j */ |
| for(cpt=1; cpt<=nlstate;cpt++){ | for(cpt=1; cpt<=nlstate;cpt++){ |
| fprintf(fichtm,"<br>\n- Survival functions in state %d. Or probability to survive in state %d being in state (1 to %d) at different ages. <a href=\"%s_%d-%d-%d.svg\">%s_%d-%d-%d.svg</a><br> \ | fprintf(fichtm,"<br>\n- Survival functions in state %d. And probability to be observed in state %d being in state (1 to %d) at different ages. <a href=\"%s_%d-%d-%d.svg\">%s_%d-%d-%d.svg</a><br> \ |
| <img src=\"%s_%d-%d-%d.svg\">", cpt, cpt, nlstate, subdirf2(optionfilefiname,"LIJ_"),cpt,k1,nres,subdirf2(optionfilefiname,"LIJ_"),cpt,k1,nres,subdirf2(optionfilefiname,"LIJ_"),cpt,k1,nres); | <img src=\"%s_%d-%d-%d.svg\">", cpt, cpt, nlstate, subdirf2(optionfilefiname,"LIJ_"),cpt,k1,nres,subdirf2(optionfilefiname,"LIJ_"),cpt,k1,nres,subdirf2(optionfilefiname,"LIJ_"),cpt,k1,nres); |
| } | } |
| /* State specific survival functions (period) */ | /* State specific survival functions (period) */ |
| for(cpt=1; cpt<=nlstate;cpt++){ | for(cpt=1; cpt<=nlstate;cpt++){ |
| fprintf(fichtm,"<br>\n- Survival functions from state %d in each live state and total.\ | fprintf(fichtm,"<br>\n- Survival functions in state %d and in any other live state (total).\ |
| Or probability to survive in various states (1 to %d) being in state %d at different ages. \ | And probability to be observed in various states (up to %d) being in state %d at different ages. \ |
| <a href=\"%s_%d-%d-%d.svg\">%s_%d-%d-%d.svg</a><br> <img src=\"%s_%d-%d-%d.svg\">", cpt, nlstate, cpt, subdirf2(optionfilefiname,"LIJT_"),cpt,k1,nres,subdirf2(optionfilefiname,"LIJT_"),cpt,k1,nres,subdirf2(optionfilefiname,"LIJT_"),cpt,k1,nres); | <a href=\"%s_%d-%d-%d.svg\">%s_%d-%d-%d.svg</a><br> <img src=\"%s_%d-%d-%d.svg\">", cpt, nlstate, cpt, subdirf2(optionfilefiname,"LIJT_"),cpt,k1,nres,subdirf2(optionfilefiname,"LIJT_"),cpt,k1,nres,subdirf2(optionfilefiname,"LIJT_"),cpt,k1,nres); |
| } | } |
| /* Period (forward stable) prevalence in each health state */ | /* Period (forward stable) prevalence in each health state */ |
| Line 6942 divided by h: <sub>h</sub>P<sub>ij</sub> | Line 6994 divided by h: <sub>h</sub>P<sub>ij</sub> |
| fprintf(fichtm,"<br>\n- Convergence to period (stable) prevalence in state %d. Or probability for a person being in state (1 to %d) at different ages, to be in state %d some years after. <a href=\"%s_%d-%d-%d.svg\">%s_%d-%d-%d.svg</a><br> \ | fprintf(fichtm,"<br>\n- Convergence to period (stable) prevalence in state %d. Or probability for a person being in state (1 to %d) at different ages, to be in state %d some years after. <a href=\"%s_%d-%d-%d.svg\">%s_%d-%d-%d.svg</a><br> \ |
| <img src=\"%s_%d-%d-%d.svg\">", cpt, nlstate, cpt, subdirf2(optionfilefiname,"P_"),cpt,k1,nres,subdirf2(optionfilefiname,"P_"),cpt,k1,nres,subdirf2(optionfilefiname,"P_"),cpt,k1,nres); | <img src=\"%s_%d-%d-%d.svg\">", cpt, nlstate, cpt, subdirf2(optionfilefiname,"P_"),cpt,k1,nres,subdirf2(optionfilefiname,"P_"),cpt,k1,nres,subdirf2(optionfilefiname,"P_"),cpt,k1,nres); |
| } | } |
| if(backcast==1){ | if(prevbcast==1){ |
| /* Backward prevalence in each health state */ | /* Backward prevalence in each health state */ |
| for(cpt=1; cpt<=nlstate;cpt++){ | for(cpt=1; cpt<=nlstate;cpt++){ |
| fprintf(fichtm,"<br>\n- Convergence to mixed (stable) back prevalence in state %d. Or probability for a person to be in state %d at a younger age, knowing that she/he was in state (1 to %d) at different older ages. <a href=\"%s_%d-%d-%d.svg\">%s_%d-%d-%d.svg</a><br> \ | fprintf(fichtm,"<br>\n- Convergence to mixed (stable) back prevalence in state %d. Or probability for a person to be in state %d at a younger age, knowing that she/he was in state (1 to %d) at different older ages. <a href=\"%s_%d-%d-%d.svg\">%s_%d-%d-%d.svg</a><br> \ |
| Line 6953 divided by h: <sub>h</sub>P<sub>ij</sub> | Line 7005 divided by h: <sub>h</sub>P<sub>ij</sub> |
| /* Projection of prevalence up to period (forward stable) prevalence in each health state */ | /* Projection of prevalence up to period (forward stable) prevalence in each health state */ |
| for(cpt=1; cpt<=nlstate;cpt++){ | for(cpt=1; cpt<=nlstate;cpt++){ |
| fprintf(fichtm,"<br>\n- Projection of cross-sectional prevalence (estimated with cases observed from %.1f to %.1f and mobil_average=%d), from year %.1f up to year %.1f tending to period (stable) forward prevalence in state %d. Or probability to be in state %d being in an observed weighted state (from 1 to %d). <a href=\"%s_%d-%d-%d.svg\">%s_%d-%d-%d.svg</a><br> \ | fprintf(fichtm,"<br>\n- Projection of cross-sectional prevalence (estimated with cases observed from %.1f to %.1f and mobil_average=%d), from year %.1f up to year %.1f tending to period (stable) forward prevalence in state %d. Or probability to be in state %d being in an observed weighted state (from 1 to %d). <a href=\"%s_%d-%d-%d.svg\">%s_%d-%d-%d.svg</a><br> \ |
| <img src=\"%s_%d-%d-%d.svg\">", dateprev1, dateprev2, mobilavproj, dateproj1, dateproj2, cpt, cpt, nlstate, subdirf2(optionfilefiname,"PROJ_"),cpt,k1,nres,subdirf2(optionfilefiname,"PROJ_"),cpt,k1,nres,subdirf2(optionfilefiname,"PROJ_"),cpt,k1,nres); | <img src=\"%s_%d-%d-%d.svg\">", dateprev1, dateprev2, mobilavproj, dateprojd, dateprojf, cpt, cpt, nlstate, subdirf2(optionfilefiname,"PROJ_"),cpt,k1,nres,subdirf2(optionfilefiname,"PROJ_"),cpt,k1,nres,subdirf2(optionfilefiname,"PROJ_"),cpt,k1,nres); |
| } | } |
| } | } |
| if(backcast==1){ | if(prevbcast==1){ |
| /* Back projection of prevalence up to stable (mixed) back-prevalence in each health state */ | /* Back projection of prevalence up to stable (mixed) back-prevalence in each health state */ |
| for(cpt=1; cpt<=nlstate;cpt++){ | for(cpt=1; cpt<=nlstate;cpt++){ |
| fprintf(fichtm,"<br>\n- Back projection of cross-sectional prevalence (estimated with cases observed from %.1f to %.1f and mobil_average=%d), \ | fprintf(fichtm,"<br>\n- Back projection of cross-sectional prevalence (estimated with cases observed from %.1f to %.1f and mobil_average=%d), \ |
| Line 7069 true period expectancies (those weighted | Line 7121 true period expectancies (those weighted |
| } | } |
| /******************* Gnuplot file **************/ | /******************* Gnuplot file **************/ |
| void printinggnuplot(char fileresu[], char optionfilefiname[], double ageminpar, double agemaxpar, double bage, double fage , int prevfcast, int backcast, char pathc[], double p[], int offyear, int offbyear){ | void printinggnuplot(char fileresu[], char optionfilefiname[], double ageminpar, double agemaxpar, double bage, double fage , int prevfcast, int prevbcast, char pathc[], double p[], int offyear, int offbyear){ |
| char dirfileres[132],optfileres[132]; | char dirfileres[132],optfileres[132]; |
| char gplotcondition[132], gplotlabel[132]; | char gplotcondition[132], gplotlabel[132]; |
| Line 7223 void printinggnuplot(char fileresu[], ch | Line 7275 void printinggnuplot(char fileresu[], ch |
| } /* end covariate */ | } /* end covariate */ |
| } /* end if no covariate */ | } /* end if no covariate */ |
| if(backcast==1){ /* We need to get the corresponding values of the covariates involved in this combination k1 */ | if(prevbcast==1){ /* We need to get the corresponding values of the covariates involved in this combination k1 */ |
| /* fprintf(ficgp,",\"%s\" every :::%d::%d u 1:($%d) t\"Backward stable prevalence\" w l lt 3",subdirf2(fileresu,"PLB_"),k1-1,k1-1,1+cpt); */ | /* fprintf(ficgp,",\"%s\" every :::%d::%d u 1:($%d) t\"Backward stable prevalence\" w l lt 3",subdirf2(fileresu,"PLB_"),k1-1,k1-1,1+cpt); */ |
| fprintf(ficgp,",\"%s\" u 1:((",subdirf2(fileresu,"PLB_")); /* Age is in 1, nres in 2 to be fixed */ | fprintf(ficgp,",\"%s\" u 1:((",subdirf2(fileresu,"PLB_")); /* Age is in 1, nres in 2 to be fixed */ |
| if(cptcoveff ==0){ | if(cptcoveff ==0){ |
| Line 7250 void printinggnuplot(char fileresu[], ch | Line 7302 void printinggnuplot(char fileresu[], ch |
| } | } |
| } /* end covariate */ | } /* end covariate */ |
| } /* end if no covariate */ | } /* end if no covariate */ |
| if(backcast == 1){ | if(prevbcast == 1){ |
| fprintf(ficgp,", \"%s\" every :::%d::%d u 1:($2==%d ? $3:1/0) \"%%lf %%lf",subdirf2(fileresu,"VBL_"),nres-1,nres-1,nres); | fprintf(ficgp,", \"%s\" every :::%d::%d u 1:($2==%d ? $3:1/0) \"%%lf %%lf",subdirf2(fileresu,"VBL_"),nres-1,nres-1,nres); |
| /* k1-1 error should be nres-1*/ | /* k1-1 error should be nres-1*/ |
| for (i=1; i<= nlstate ; i ++) { | for (i=1; i<= nlstate ; i ++) { |
| Line 7269 void printinggnuplot(char fileresu[], ch | Line 7321 void printinggnuplot(char fileresu[], ch |
| } | } |
| fprintf(ficgp,"\" t\"\" w l lt 4"); | fprintf(ficgp,"\" t\"\" w l lt 4"); |
| } /* end if backprojcast */ | } /* end if backprojcast */ |
| } /* end if backcast */ | } /* end if prevbcast */ |
| /* fprintf(ficgp,"\nset out ;unset label;\n"); */ | /* fprintf(ficgp,"\nset out ;unset label;\n"); */ |
| fprintf(ficgp,"\nset out ;unset title;\n"); | fprintf(ficgp,"\nset out ;unset title;\n"); |
| } /* nres */ | } /* nres */ |
| Line 7557 set ter svg size 640, 480\nunset log y\n | Line 7609 set ter svg size 640, 480\nunset log y\n |
| /* 7eme */ | /* 7eme */ |
| if(backcast == 1){ | if(prevbcast == 1){ |
| /* CV backward prevalence for each covariate */ | /* CV backward prevalence for each covariate */ |
| for (k1=1; k1<= m ; k1 ++) /* For each covariate combination if any */ | for (k1=1; k1<= m ; k1 ++) /* For each covariate combination if any */ |
| for(nres=1; nres <= nresult; nres++){ /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| Line 7609 set ter svg size 640, 480\nunset log y\n | Line 7661 set ter svg size 640, 480\nunset log y\n |
| fprintf(ficgp,"\nset out; unset label;\n"); | fprintf(ficgp,"\nset out; unset label;\n"); |
| } /* end cpt state*/ | } /* end cpt state*/ |
| } /* end covariate */ | } /* end covariate */ |
| } /* End if backcast */ | } /* End if prevbcast */ |
| /* 8eme */ | /* 8eme */ |
| if(prevfcast==1){ | if(prevfcast==1){ |
| Line 7725 set ter svg size 640, 480\nunset log y\n | Line 7777 set ter svg size 640, 480\nunset log y\n |
| } /* end covariate */ | } /* end covariate */ |
| } /* End if prevfcast */ | } /* End if prevfcast */ |
| if(backcast==1){ | if(prevbcast==1){ |
| /* Back projection from cross-sectional to stable (mixed) for each covariate */ | /* Back projection from cross-sectional to stable (mixed) for each covariate */ |
| for (k1=1; k1<= m ; k1 ++) /* For each covariate combination if any */ | for (k1=1; k1<= m ; k1 ++) /* For each covariate combination if any */ |
| Line 7838 set ter svg size 640, 480\nunset log y\n | Line 7890 set ter svg size 640, 480\nunset log y\n |
| fprintf(ficgp,"\nset out; unset label;\n"); | fprintf(ficgp,"\nset out; unset label;\n"); |
| } /* end cpt state*/ | } /* end cpt state*/ |
| } /* end covariate */ | } /* end covariate */ |
| } /* End if backcast */ | } /* End if prevbcast */ |
| /* 9eme writing MLE parameters */ | /* 9eme writing MLE parameters */ |
| Line 8286 set ter svg size 640, 480\nunset log y\n | Line 8338 set ter svg size 640, 480\nunset log y\n |
| }/* End movingaverage */ | }/* End movingaverage */ |
| /************** Forecasting ******************/ | /************** Forecasting ******************/ |
| void prevforecast(char fileres[], double anproj1, double mproj1, double jproj1, double ageminpar, double agemax, double dateprev1, double dateprev2, int mobilav, double ***prev, double bage, double fage, int firstpass, int lastpass, double anproj2, double p[], int cptcoveff){ | /* void prevforecast(char fileres[], double dateintmean, double anprojd, double mprojd, double jprojd, double ageminpar, double agemax, double dateprev1, double dateprev2, int mobilav, double ***prev, double bage, double fage, int firstpass, int lastpass, double anprojf, double p[], int cptcoveff)*/ |
| /* proj1, year, month, day of starting projection | void prevforecast(char fileres[], double dateintmean, double dateprojd, double dateprojf, double ageminpar, double agemax, double dateprev1, double dateprev2, int mobilav, double ***prev, double bage, double fage, int firstpass, int lastpass, double p[], int cptcoveff){ |
| /* dateintemean, mean date of interviews | |
| dateprojd, year, month, day of starting projection | |
| dateprojf date of end of projection;year of end of projection (same day and month as proj1). | |
| agemin, agemax range of age | agemin, agemax range of age |
| dateprev1 dateprev2 range of dates during which prevalence is computed | dateprev1 dateprev2 range of dates during which prevalence is computed |
| anproj2 year of en of projection (same day and month as proj1). | |
| */ | */ |
| /* double anprojd, mprojd, jprojd; */ | |
| /* double anprojf, mprojf, jprojf; */ | |
| int yearp, stepsize, hstepm, nhstepm, j, k, cptcod, i, h, i1, k4, nres=0; | int yearp, stepsize, hstepm, nhstepm, j, k, cptcod, i, h, i1, k4, nres=0; |
| double agec; /* generic age */ | double agec; /* generic age */ |
| double agelim, ppij, yp,yp1,yp2,jprojmean,mprojmean,anprojmean; | double agelim, ppij, yp,yp1,yp2; |
| double *popeffectif,*popcount; | double *popeffectif,*popcount; |
| double ***p3mat; | double ***p3mat; |
| /* double ***mobaverage; */ | /* double ***mobaverage; */ |
| Line 8332 set ter svg size 640, 480\nunset log y\n | Line 8389 set ter svg size 640, 480\nunset log y\n |
| if(estepm > stepm){ /* Yes every two year */ | if(estepm > stepm){ /* Yes every two year */ |
| stepsize=2; | stepsize=2; |
| } | } |
| hstepm=hstepm/stepm; | |
| hstepm=hstepm/stepm; | |
| yp1=modf(dateintmean,&yp);/* extracts integral of datemean in yp and | /* yp1=modf(dateintmean,&yp);/\* extracts integral of datemean in yp and */ |
| fractional in yp1 */ | /* fractional in yp1 *\/ */ |
| anprojmean=yp; | /* aintmean=yp; */ |
| yp2=modf((yp1*12),&yp); | /* yp2=modf((yp1*12),&yp); */ |
| mprojmean=yp; | /* mintmean=yp; */ |
| yp1=modf((yp2*30.5),&yp); | /* yp1=modf((yp2*30.5),&yp); */ |
| jprojmean=yp; | /* jintmean=yp; */ |
| if(jprojmean==0) jprojmean=1; | /* if(jintmean==0) jintmean=1; */ |
| if(mprojmean==0) jprojmean=1; | /* if(mintmean==0) mintmean=1; */ |
| /* date2dmy(dateintmean,&jintmean,&mintmean,&aintmean); */ | |
| /* date2dmy(dateprojd,&jprojd, &mprojd, &anprojd); */ | |
| /* date2dmy(dateprojf,&jprojf, &mprojf, &anprojf); */ | |
| i1=pow(2,cptcoveff); | i1=pow(2,cptcoveff); |
| if (cptcovn < 1){i1=1;} | if (cptcovn < 1){i1=1;} |
| fprintf(ficresf,"# Mean day of interviews %.lf/%.lf/%.lf (%.2f) between %.2f and %.2f \n",jprojmean,mprojmean,anprojmean,dateintmean,dateprev1,dateprev2); | fprintf(ficresf,"# Mean day of interviews %.lf/%.lf/%.lf (%.2f) between %.2f and %.2f \n",jintmean,mintmean,aintmean,dateintmean,dateprev1,dateprev2); |
| fprintf(ficresf,"#****** Routine prevforecast **\n"); | fprintf(ficresf,"#****** Routine prevforecast **\n"); |
| Line 8373 set ter svg size 640, 480\nunset log y\n | Line 8435 set ter svg size 640, 480\nunset log y\n |
| fprintf(ficresf," p%d%d",i,j); | fprintf(ficresf," p%d%d",i,j); |
| fprintf(ficresf," wp.%d",j); | fprintf(ficresf," wp.%d",j); |
| } | } |
| for (yearp=0; yearp<=(anproj2-anproj1);yearp +=stepsize) { | for (yearp=0; yearp<=(anprojf-anprojd);yearp +=stepsize) { |
| fprintf(ficresf,"\n"); | fprintf(ficresf,"\n"); |
| fprintf(ficresf,"\n# Forecasting at date %.lf/%.lf/%.lf ",jproj1,mproj1,anproj1+yearp); | fprintf(ficresf,"\n# Forecasting at date %.lf/%.lf/%.lf ",jprojd,mprojd,anprojd+yearp); |
| /* for (agec=fage; agec>=(ageminpar-1); agec--){ */ | /* for (agec=fage; agec>=(ageminpar-1); agec--){ */ |
| for (agec=fage; agec>=(bage); agec--){ | for (agec=fage; agec>=(bage); agec--){ |
| nhstepm=(int) rint((agelim-agec)*YEARM/stepm); | nhstepm=(int) rint((agelim-agec)*YEARM/stepm); |
| Line 8393 set ter svg size 640, 480\nunset log y\n | Line 8455 set ter svg size 640, 480\nunset log y\n |
| fprintf(ficresf,"\n"); | fprintf(ficresf,"\n"); |
| for(j=1;j<=cptcoveff;j++) | for(j=1;j<=cptcoveff;j++) |
| fprintf(ficresf,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); | fprintf(ficresf,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
| fprintf(ficresf,"%.f %.f ",anproj1+yearp,agec+h*hstepm/YEARM*stepm); | fprintf(ficresf,"%.f %.f ",anprojd+yearp,agec+h*hstepm/YEARM*stepm); |
| for(j=1; j<=nlstate+ndeath;j++) { | for(j=1; j<=nlstate+ndeath;j++) { |
| ppij=0.; | ppij=0.; |
| Line 8421 set ter svg size 640, 480\nunset log y\n | Line 8483 set ter svg size 640, 480\nunset log y\n |
| } | } |
| /************** Back Forecasting ******************/ | /************** Back Forecasting ******************/ |
| void prevbackforecast(char fileres[], double ***prevacurrent, double anback1, double mback1, double jback1, double ageminpar, double agemax, double dateprev1, double dateprev2, int mobilav, double bage, double fage, int firstpass, int lastpass, double anback2, double p[], int cptcoveff){ | /* void prevbackforecast(char fileres[], double ***prevacurrent, double anback1, double mback1, double jback1, double ageminpar, double agemax, double dateprev1, double dateprev2, int mobilav, double bage, double fage, int firstpass, int lastpass, double anback2, double p[], int cptcoveff){ */ |
| /* back1, year, month, day of starting backection | void prevbackforecast(char fileres[], double ***prevacurrent, double dateintmean, double dateprojd, double dateprojf, double ageminpar, double agemax, double dateprev1, double dateprev2, int mobilav, double bage, double fage, int firstpass, int lastpass, double p[], int cptcoveff){ |
| /* back1, year, month, day of starting backprojection | |
| agemin, agemax range of age | agemin, agemax range of age |
| dateprev1 dateprev2 range of dates during which prevalence is computed | dateprev1 dateprev2 range of dates during which prevalence is computed |
| anback2 year of end of backprojection (same day and month as back1). | anback2 year of end of backprojection (same day and month as back1). |
| Line 8430 set ter svg size 640, 480\nunset log y\n | Line 8493 set ter svg size 640, 480\nunset log y\n |
| */ | */ |
| int yearp, stepsize, hstepm, nhstepm, j, k, cptcod, i, h, i1, k4, nres=0; | int yearp, stepsize, hstepm, nhstepm, j, k, cptcod, i, h, i1, k4, nres=0; |
| double agec; /* generic age */ | double agec; /* generic age */ |
| double agelim, ppij, ppi, yp,yp1,yp2,jprojmean,mprojmean,anprojmean; | double agelim, ppij, ppi, yp,yp1,yp2,jintmean,mintmean,aintmean; |
| double *popeffectif,*popcount; | double *popeffectif,*popcount; |
| double ***p3mat; | double ***p3mat; |
| /* double ***mobaverage; */ | /* double ***mobaverage; */ |
| Line 8473 set ter svg size 640, 480\nunset log y\n | Line 8536 set ter svg size 640, 480\nunset log y\n |
| } | } |
| hstepm=hstepm/stepm; | hstepm=hstepm/stepm; |
| yp1=modf(dateintmean,&yp);/* extracts integral of datemean in yp and | /* yp1=modf(dateintmean,&yp);/\* extracts integral of datemean in yp and */ |
| fractional in yp1 */ | /* fractional in yp1 *\/ */ |
| anprojmean=yp; | /* aintmean=yp; */ |
| yp2=modf((yp1*12),&yp); | /* yp2=modf((yp1*12),&yp); */ |
| mprojmean=yp; | /* mintmean=yp; */ |
| yp1=modf((yp2*30.5),&yp); | /* yp1=modf((yp2*30.5),&yp); */ |
| jprojmean=yp; | /* jintmean=yp; */ |
| if(jprojmean==0) jprojmean=1; | /* if(jintmean==0) jintmean=1; */ |
| if(mprojmean==0) jprojmean=1; | /* if(mintmean==0) jintmean=1; */ |
| i1=pow(2,cptcoveff); | i1=pow(2,cptcoveff); |
| if (cptcovn < 1){i1=1;} | if (cptcovn < 1){i1=1;} |
| fprintf(ficresfb,"# Mean day of interviews %.lf/%.lf/%.lf (%.2f) between %.2f and %.2f \n",jprojmean,mprojmean,anprojmean,dateintmean,dateprev1,dateprev2); | fprintf(ficresfb,"# Mean day of interviews %.lf/%.lf/%.lf (%.2f) between %.2f and %.2f \n",jintmean,mintmean,aintmean,dateintmean,dateprev1,dateprev2); |
| printf("# Mean day of interviews %.lf/%.lf/%.lf (%.2f) between %.2f and %.2f \n",jprojmean,mprojmean,anprojmean,dateintmean,dateprev1,dateprev2); | printf("# Mean day of interviews %.lf/%.lf/%.lf (%.2f) between %.2f and %.2f \n",jintmean,mintmean,aintmean,dateintmean,dateprev1,dateprev2); |
| fprintf(ficresfb,"#****** Routine prevbackforecast **\n"); | fprintf(ficresfb,"#****** Routine prevbackforecast **\n"); |
| Line 8512 set ter svg size 640, 480\nunset log y\n | Line 8575 set ter svg size 640, 480\nunset log y\n |
| fprintf(ficresfb," b%d%d",i,j); | fprintf(ficresfb," b%d%d",i,j); |
| fprintf(ficresfb," b.%d",j); | fprintf(ficresfb," b.%d",j); |
| } | } |
| for (yearp=0; yearp>=(anback2-anback1);yearp -=stepsize) { | for (yearp=0; yearp>=(anbackf-anbackd);yearp -=stepsize) { |
| /* for (yearp=0; yearp<=(anproj2-anproj1);yearp +=stepsize) { */ | /* for (yearp=0; yearp<=(anproj2-anproj1);yearp +=stepsize) { */ |
| fprintf(ficresfb,"\n"); | fprintf(ficresfb,"\n"); |
| fprintf(ficresfb,"\n# Back Forecasting at date %.lf/%.lf/%.lf ",jback1,mback1,anback1+yearp); | fprintf(ficresfb,"\n# Back Forecasting at date %.lf/%.lf/%.lf ",jbackd,mbackd,anbackd+yearp); |
| /* printf("\n# Back Forecasting at date %.lf/%.lf/%.lf ",jback1,mback1,anback1+yearp); */ | /* printf("\n# Back Forecasting at date %.lf/%.lf/%.lf ",jback1,mback1,anback1+yearp); */ |
| /* for (agec=bage; agec<=agemax-1; agec++){ /\* testing *\/ */ | /* for (agec=bage; agec<=agemax-1; agec++){ /\* testing *\/ */ |
| for (agec=bage; agec<=fage; agec++){ /* testing */ | for (agec=bage; agec<=fage; agec++){ /* testing */ |
| Line 8538 set ter svg size 640, 480\nunset log y\n | Line 8601 set ter svg size 640, 480\nunset log y\n |
| fprintf(ficresfb,"\n"); | fprintf(ficresfb,"\n"); |
| for(j=1;j<=cptcoveff;j++) | for(j=1;j<=cptcoveff;j++) |
| fprintf(ficresfb,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); | fprintf(ficresfb,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
| fprintf(ficresfb,"%.f %.f ",anback1+yearp,agec-h*hstepm/YEARM*stepm); | fprintf(ficresfb,"%.f %.f ",anbackd+yearp,agec-h*hstepm/YEARM*stepm); |
| for(i=1; i<=nlstate+ndeath;i++) { | for(i=1; i<=nlstate+ndeath;i++) { |
| ppij=0.;ppi=0.; | ppij=0.;ppi=0.; |
| for(j=1; j<=nlstate;j++) { | for(j=1; j<=nlstate;j++) { |
| Line 10196 BOOL IsWow64() | Line 10259 BOOL IsWow64() |
| #endif | #endif |
| void syscompilerinfo(int logged) | void syscompilerinfo(int logged) |
| { | { |
| /* #include "syscompilerinfo.h"*/ | #include <stdint.h> |
| /* #include "syscompilerinfo.h"*/ | |
| /* command line Intel compiler 32bit windows, XP compatible:*/ | /* command line Intel compiler 32bit windows, XP compatible:*/ |
| /* /GS /W3 /Gy | /* /GS /W3 /Gy |
| /Zc:wchar_t /Zi /O2 /Fd"Release\vc120.pdb" /D "WIN32" /D "NDEBUG" /D | /Zc:wchar_t /Zi /O2 /Fd"Release\vc120.pdb" /D "WIN32" /D "NDEBUG" /D |
| Line 10232 void syscompilerinfo(int logged) | Line 10297 void syscompilerinfo(int logged) |
| /ManifestFile:"Release\IMaCh.exe.intermediate.manifest" /OPT:ICF | /ManifestFile:"Release\IMaCh.exe.intermediate.manifest" /OPT:ICF |
| /NOLOGO /TLBID:1 | /NOLOGO /TLBID:1 |
| */ | */ |
| #if defined __INTEL_COMPILER | #if defined __INTEL_COMPILER |
| #if defined(__GNUC__) | #if defined(__GNUC__) |
| struct utsname sysInfo; /* For Intel on Linux and OS/X */ | struct utsname sysInfo; /* For Intel on Linux and OS/X */ |
| Line 10248 void syscompilerinfo(int logged) | Line 10315 void syscompilerinfo(int logged) |
| } | } |
| #endif | #endif |
| #include <stdint.h> | |
| printf("Compiled with:");if(logged)fprintf(ficlog,"Compiled with:"); | printf("Compiled with:");if(logged)fprintf(ficlog,"Compiled with:"); |
| #if defined(__clang__) | #if defined(__clang__) |
| printf(" Clang/LLVM");if(logged)fprintf(ficlog," Clang/LLVM"); /* Clang/LLVM. ---------------------------------------------- */ | printf(" Clang/LLVM");if(logged)fprintf(ficlog," Clang/LLVM"); /* Clang/LLVM. ---------------------------------------------- */ |
| Line 10686 int hPijx(double *p, int bage, int fage) | Line 10751 int hPijx(double *p, int bage, int fage) |
| /* for (agedeb=fage; agedeb>=bage; agedeb--){ /\* If stepm=6 months *\/ */ | /* for (agedeb=fage; agedeb>=bage; agedeb--){ /\* If stepm=6 months *\/ */ |
| for (agedeb=bage; agedeb<=fage; agedeb++){ /* If stepm=6 months and estepm=24 (2 years) */ | for (agedeb=bage; agedeb<=fage; agedeb++){ /* If stepm=6 months and estepm=24 (2 years) */ |
| /* nhstepm=(int) rint((agelim-agedeb)*YEARM/stepm); /\* Typically 20 years = 20*12/6=40 *\/ */ | /* nhstepm=(int) rint((agelim-agedeb)*YEARM/stepm); /\* Typically 20 years = 20*12/6=40 *\/ */ |
| nhstepm=(int) rint((agedeb-ageminl)*YEARM/stepm); /* Typically 20 years = 20*12/6=40 */ | nhstepm=(int) rint((agedeb-ageminl)*YEARM/stepm+0.1)-1; /* Typically 20 years = 20*12/6=40 or 55*12/24=27.5-1.1=>27 */ |
| nhstepm = nhstepm/hstepm; /* Typically 40/4=10, because estepm=24 stepm=6 => hstepm=24/6=4 */ | nhstepm = nhstepm/hstepm; /* Typically 40/4=10, because estepm=24 stepm=6 => hstepm=24/6=4 or 28*/ |
| /* nhstepm=nhstepm*YEARM; aff par mois*/ | /* nhstepm=nhstepm*YEARM; aff par mois*/ |
| Line 10779 int main(int argc, char *argv[]) | Line 10844 int main(int argc, char *argv[]) |
| 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 backcast=0; | /* double anprojd, mprojd, jprojd; /\* For eventual projections *\/ */ |
| /* double anprojf, mprojf, jprojf; */ | |
| /* double jintmean,mintmean,aintmean; */ | |
| int prvforecast = 0; /* Might be 1 (date of beginning of projection is a choice or 2 is the dateintmean */ | |
| int prvbackcast = 0; /* Might be 1 (date of beginning of projection is a choice or 2 is the dateintmean */ | |
| double yrfproj= 10.0; /* Number of years of forward projections */ | |
| double yrbproj= 10.0; /* Number of years of backward projections */ | |
| int prevbcast=0; /* defined as global for mlikeli and mle, replacing backcast */ | |
| int mobilav=0,popforecast=0; | int mobilav=0,popforecast=0; |
| int hstepm=0, nhstepm=0; | int hstepm=0, nhstepm=0; |
| int agemortsup; | int agemortsup; |
| Line 10804 int main(int argc, char *argv[]) | Line 10876 int main(int argc, char *argv[]) |
| double *epj, vepp; | double *epj, vepp; |
| double dateprev1, dateprev2; | double dateprev1, dateprev2; |
| double jproj1=1,mproj1=1,anproj1=2000,jproj2=1,mproj2=1,anproj2=2000, dateproj1=0, dateproj2=0; | double jproj1=1,mproj1=1,anproj1=2000,jproj2=1,mproj2=1,anproj2=2000, dateproj1=0, dateproj2=0, dateprojd=0, dateprojf=0; |
| double jback1=1,mback1=1,anback1=2000,jback2=1,mback2=1,anback2=2000, dateback1=0, dateback2=0; | double jback1=1,mback1=1,anback1=2000,jback2=1,mback2=1,anback2=2000, dateback1=0, dateback2=0, datebackd=0, datebackf=0; |
| double **ximort; | double **ximort; |
| char *alph[]={"a","a","b","c","d","e"}, str[4]="1234"; | char *alph[]={"a","a","b","c","d","e"}, str[4]="1234"; |
| Line 11204 int main(int argc, char *argv[]) | Line 11277 int main(int argc, char *argv[]) |
| for(jj=1; jj <=nlstate+ndeath; jj++){ | for(jj=1; jj <=nlstate+ndeath; jj++){ |
| if(jj==i) continue; | if(jj==i) continue; |
| j++; | j++; |
| while((c=getc(ficpar))=='#' && c!= EOF){ | |
| ungetc(c,ficpar); | |
| fgets(line, MAXLINE, ficpar); | |
| numlinepar++; | |
| fputs(line,stdout); | |
| fputs(line,ficparo); | |
| fputs(line,ficlog); | |
| } | |
| ungetc(c,ficpar); | |
| fscanf(ficpar,"%1d%1d",&i1,&j1); | fscanf(ficpar,"%1d%1d",&i1,&j1); |
| if ((i1 != i) || (j1 != jj)){ | if ((i1 != i) || (j1 != jj)){ |
| printf("Error in line parameters number %d, %1d%1d instead of %1d%1d \n \ | printf("Error in line parameters number %d, %1d%1d instead of %1d%1d \n \ |
| Line 12251 Please run with mle=-1 to get a correct | Line 12333 Please run with mle=-1 to get a correct |
| continue; | continue; |
| }else if(sscanf(line,"prevforecast=%[^\n]\n",modeltemp)) | }else if(sscanf(line,"prevforecast=%[^\n]\n",modeltemp)) |
| parameterline=11; | parameterline=11; |
| else if(sscanf(line,"backcast=%[^\n]\n",modeltemp)) | else if(sscanf(line,"prevbackcast=%[^\n]\n",modeltemp)) |
| parameterline=12; | parameterline=12; |
| else if(sscanf(line,"result:%[^\n]\n",modeltemp)) | else if(sscanf(line,"result:%[^\n]\n",modeltemp)) |
| parameterline=13; | parameterline=13; |
| Line 12260 Please run with mle=-1 to get a correct | Line 12342 Please run with mle=-1 to get a correct |
| } | } |
| switch (parameterline){ | switch (parameterline){ |
| case 11: | case 11: |
| if((num_filled=sscanf(line,"prevforecast=%d starting-proj-date=%lf/%lf/%lf final-proj-date=%lf/%lf/%lf mobil_average=%d\n",&prevfcast,&jproj1,&mproj1,&anproj1,&jproj2,&mproj2,&anproj2,&mobilavproj)) !=EOF){ | if((num_filled=sscanf(line,"prevforecast=%d starting-proj-date=%lf/%lf/%lf final-proj-date=%lf/%lf/%lf mobil_average=%d\n",&prevfcast,&jproj1,&mproj1,&anproj1,&jproj2,&mproj2,&anproj2,&mobilavproj)) !=EOF && (num_filled == 8)){ |
| if (num_filled != 8) { | fprintf(ficparo,"prevforecast=%d starting-proj-date=%.lf/%.lf/%.lf final-proj-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevfcast,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2,mobilavproj); |
| printf("Error: Not 8 (data)parameters in line but %d, for example:prevforecast=1 starting-proj-date=1/1/1990 final-proj-date=1/1/2000 mobil_average=0\n, your line=%s . Probably you are running an older format.\n",num_filled,line); | |
| fprintf(ficlog,"Error: Not 8 (data)parameters in line but %d, for example:prevforecast=1 starting-proj-date=1/1/1990 final-proj-date=1/1/2000 mov_average=0\n, your line=%s . Probably you are running an older format.\n",num_filled,line); | |
| goto end; | |
| } | |
| fprintf(ficparo,"prevforecast=%d starting-proj-date=%.lf/%.lf/%.lf final-proj-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevfcast,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2,mobilavproj); | |
| printf("prevforecast=%d starting-proj-date=%.lf/%.lf/%.lf final-proj-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevfcast,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2,mobilavproj); | printf("prevforecast=%d starting-proj-date=%.lf/%.lf/%.lf final-proj-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevfcast,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2,mobilavproj); |
| fprintf(ficlog,"prevforecast=%d starting-proj-date=%.lf/%.lf/%.lf final-proj-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevfcast,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2,mobilavproj); | fprintf(ficlog,"prevforecast=%d starting-proj-date=%.lf/%.lf/%.lf final-proj-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevfcast,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2,mobilavproj); |
| fprintf(ficres,"prevforecast=%d starting-proj-date=%.lf/%.lf/%.lf final-proj-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevfcast,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2,mobilavproj); | fprintf(ficres,"prevforecast=%d starting-proj-date=%.lf/%.lf/%.lf final-proj-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevfcast,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2,mobilavproj); |
| /* day and month of proj2 are not used but only year anproj2.*/ | /* day and month of proj2 are not used but only year anproj2.*/ |
| dateproj1=anproj1+(mproj1-1)/12.+(jproj1-1)/365.; | dateproj1=anproj1+(mproj1-1)/12.+(jproj1-1)/365.; |
| dateproj2=anproj2+(mproj2-1)/12.+(jproj2-1)/365.; | dateproj2=anproj2+(mproj2-1)/12.+(jproj2-1)/365.; |
| prvforecast = 1; | |
| } | |
| else if((num_filled=sscanf(line,"prevforecast=%d yearsfproj=%lf mobil_average=%d\n",&prevfcast,&yrfproj,&mobilavproj)) !=EOF){/* && (num_filled == 3))*/ | |
| printf(" Num_filled=%d, yearsfproj=%lf, mobil_average=%d\n",prevfcast,yrfproj,mobilavproj); | |
| prvforecast = 2; | |
| } | |
| else { | |
| printf("Error: Not 8 (data)parameters in line but %d, for example:prevforecast=1 starting-proj-date=1/1/1990 final-proj-date=1/1/2000 mobil_average=0\nnor 3 (data)parameters, for example:prevforecast=1 yearsfproj=10 mobil_average=0. Your line=%s . You are running probably an older format.\n, ",num_filled,line); | |
| fprintf(ficlog,"Error: Not 8 (data)parameters in line but %d, for example:prevforecast=1 starting-proj-date=1/1/1990 final-proj-date=1/1/2000 mobil_average=0\nnor 3 (data)parameters, for example:prevforecast=1 yearproj=10 mobil_average=0. Your line=%s . You are running probably an older format.\n, ",num_filled,line); | |
| goto end; | |
| } | } |
| break; | break; |
| case 12: | case 12: |
| /*fscanf(ficpar,"backcast=%d starting-back-date=%lf/%lf/%lf final-back-date=%lf/%lf/%lf mobil_average=%d\n",&backcast,&jback1,&mback1,&anback1,&jback2,&mback2,&anback2,&mobilavproj);*/ | if((num_filled=sscanf(line,"prevbackcast=%d starting-back-date=%lf/%lf/%lf final-back-date=%lf/%lf/%lf mobil_average=%d\n",&prevbcast,&jback1,&mback1,&anback1,&jback2,&mback2,&anback2,&mobilavproj)) !=EOF && (num_filled == 8)){ |
| if((num_filled=sscanf(line,"backcast=%d starting-back-date=%lf/%lf/%lf final-back-date=%lf/%lf/%lf mobil_average=%d\n",&backcast,&jback1,&mback1,&anback1,&jback2,&mback2,&anback2,&mobilavproj)) !=EOF){ | fprintf(ficparo,"prevbackcast=%d starting-back-date=%.lf/%.lf/%.lf final-back-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevbcast,jback1,mback1,anback1,jback2,mback2,anback2,mobilavproj); |
| if (num_filled != 8) { | printf("prevbackcast=%d starting-back-date=%.lf/%.lf/%.lf final-back-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevbcast,jback1,mback1,anback1,jback2,mback2,anback2,mobilavproj); |
| printf("Error: Not 8 (data)parameters in line but %d, for example:backcast=1 starting-back-date=1/1/1990 final-back-date=1/1/1970 mobil_average=1\n, your line=%s . Probably you are running an older format.\n",num_filled,line); | fprintf(ficlog,"prevbackcast=%d starting-back-date=%.lf/%.lf/%.lf final-back-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevbcast,jback1,mback1,anback1,jback2,mback2,anback2,mobilavproj); |
| fprintf(ficlog,"Error: Not 8 (data)parameters in line but %d, for example:backcast=1 starting-back-date=1/1/1990 final-back-date=1/1/1970 mobil_average=1\n, your line=%s . Probably you are running an older format.\n",num_filled,line); | fprintf(ficres,"prevbackcast=%d starting-back-date=%.lf/%.lf/%.lf final-back-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevbcast,jback1,mback1,anback1,jback2,mback2,anback2,mobilavproj); |
| goto end; | /* day and month of back2 are not used but only year anback2.*/ |
| } | |
| printf("backcast=%d starting-back-date=%.lf/%.lf/%.lf final-back-date=%.lf/%.lf/%.lf mobil_average=%d\n",backcast,jback1,mback1,anback1,jback2,mback2,anback2,mobilavproj); | |
| fprintf(ficparo,"backcast=%d starting-back-date=%.lf/%.lf/%.lf final-back-date=%.lf/%.lf/%.lf mobil_average=%d\n",backcast,jback1,mback1,anback1,jback2,mback2,anback2,mobilavproj); | |
| fprintf(ficlog,"backcast=%d starting-back-date=%.lf/%.lf/%.lf final-back-date=%.lf/%.lf/%.lf mobil_average=%d\n",backcast,jback1,mback1,anback1,jback2,mback2,anback2,mobilavproj); | |
| fprintf(ficres,"backcast=%d starting-back-date=%.lf/%.lf/%.lf final-back-date=%.lf/%.lf/%.lf mobil_average=%d\n",backcast,jback1,mback1,anback1,jback2,mback2,anback2,mobilavproj); | |
| /* day and month of proj2 are not used but only year anproj2.*/ | |
| dateback1=anback1+(mback1-1)/12.+(jback1-1)/365.; | dateback1=anback1+(mback1-1)/12.+(jback1-1)/365.; |
| dateback2=anback2+(mback2-1)/12.+(jback2-1)/365.; | dateback2=anback2+(mback2-1)/12.+(jback2-1)/365.; |
| prvbackcast = 1; | |
| } | |
| else if((num_filled=sscanf(line,"prevbackcast=%d yearsbproj=%lf mobil_average=%d\n",&prevbcast,&yrbproj,&mobilavproj)) ==3){/* && (num_filled == 3))*/ | |
| printf(" Num_filled=%d, yearsbproj=%lf, mobil_average=%d\n",prevbcast,yrbproj,mobilavproj); | |
| prvbackcast = 2; | |
| } | |
| else { | |
| printf("Error: Not 8 (data)parameters in line but %d, for example:prevbackcast=1 starting-back-date=1/1/1990 final-back-date=1/1/2000 mobil_average=0\nnor 3 (data)parameters, for example:prevbackcast=1 yearsbproj=10 mobil_average=0. Your line=%s . You are running probably an older format.\n, ",num_filled,line); | |
| fprintf(ficlog,"Error: Not 8 (data)parameters in line but %d, for example:prevbackcast=1 starting-back-date=1/1/1990 final-back-date=1/1/2000 mobil_average=0\nnor 3 (data)parameters, for example:prevbackcast=1 yearbproj=10 mobil_average=0. Your line=%s . You are running probably an older format.\n, ",num_filled,line); | |
| goto end; | |
| } | } |
| break; | break; |
| /* /\*fscanf(ficpar,"backcast=%d starting-back-date=%lf/%lf/%lf final-back-date=%lf/%lf/%lf mobil_average=%d\n",&backcast,&jback1,&mback1,&anback1,&jback2,&mback2,&anback2,&mobilavproj);*\/ */ | |
| /* if((num_filled=sscanf(line,"backcast=%d starting-back-date=%lf/%lf/%lf final-back-date=%lf/%lf/%lf mobil_average=%d\n",&backcast,&jback1,&mback1,&anback1,&jback2,&mback2,&anback2,&mobilavproj)) !=EOF){ */ | |
| /* if (num_filled != 8) { */ | |
| /* printf("Error: Not 8 (data)parameters in line but %d, for example:backcast=1 starting-back-date=1/1/1990 final-back-date=1/1/1970 mobil_average=1\n, your line=%s . Probably you are running an older format.\n",num_filled,line); */ | |
| /* fprintf(ficlog,"Error: Not 8 (data)parameters in line but %d, for example:backcast=1 starting-back-date=1/1/1990 final-back-date=1/1/1970 mobil_average=1\n, your line=%s . Probably you are running an older format.\n",num_filled,line); */ | |
| /* goto end; */ | |
| /* } */ | |
| /* printf("backcast=%d starting-back-date=%.lf/%.lf/%.lf final-back-date=%.lf/%.lf/%.lf mobil_average=%d\n",backcast,jback1,mback1,anback1,jback2,mback2,anback2,mobilavproj); */ | |
| /* fprintf(ficparo,"backcast=%d starting-back-date=%.lf/%.lf/%.lf final-back-date=%.lf/%.lf/%.lf mobil_average=%d\n",backcast,jback1,mback1,anback1,jback2,mback2,anback2,mobilavproj); */ | |
| /* fprintf(ficlog,"backcast=%d starting-back-date=%.lf/%.lf/%.lf final-back-date=%.lf/%.lf/%.lf mobil_average=%d\n",backcast,jback1,mback1,anback1,jback2,mback2,anback2,mobilavproj); */ | |
| /* fprintf(ficres,"backcast=%d starting-back-date=%.lf/%.lf/%.lf final-back-date=%.lf/%.lf/%.lf mobil_average=%d\n",backcast,jback1,mback1,anback1,jback2,mback2,anback2,mobilavproj); */ | |
| /* /\* day and month of proj2 are not used but only year anproj2.*\/ */ | |
| /* dateback1=anback1+(mback1-1)/12.+(jback1-1)/365.; */ | |
| /* dateback2=anback2+(mback2-1)/12.+(jback2-1)/365.; */ | |
| /* } */ | |
| /* break; */ | |
| case 13: | case 13: |
| if((num_filled=sscanf(line,"result:%[^\n]\n",resultline)) !=EOF){ | if((num_filled=sscanf(line,"result:%[^\n]\n",resultline)) !=EOF){ |
| if (num_filled == 0){ | if (num_filled == 0){ |
| Line 12342 This is probably because your parameter | Line 12448 This is probably because your parameter |
| Please run with mle=-1 to get a correct covariance matrix.\n",ageminpar,agemaxpar); | Please run with mle=-1 to get a correct covariance matrix.\n",ageminpar,agemaxpar); |
| }else{ | }else{ |
| /* printinggnuplot(fileresu, optionfilefiname,ageminpar,agemaxpar,fage, prevfcast, backcast, pathc,p, (int)anproj1-(int)agemin, (int)anback1-(int)agemax+1); */ | /* printinggnuplot(fileresu, optionfilefiname,ageminpar,agemaxpar,fage, prevfcast, backcast, pathc,p, (int)anproj1-(int)agemin, (int)anback1-(int)agemax+1); */ |
| printinggnuplot(fileresu, optionfilefiname,ageminpar,agemaxpar,bage, fage, prevfcast, backcast, pathc,p, (int)anproj1-bage, (int)anback1-fage); | /* It seems that anprojd which is computed from the mean year at interview which is known yet because of freqsummary */ |
| /* date2dmy(dateintmean,&jintmean,&mintmean,&aintmean); */ /* Done in freqsummary */ | |
| if(prvforecast==1){ | |
| dateprojd=(jproj1+12*mproj1+365*anproj1)/365; | |
| jprojd=jproj1; | |
| mprojd=mproj1; | |
| anprojd=anproj1; | |
| dateprojf=(jproj2+12*mproj2+365*anproj2)/365; | |
| jprojf=jproj2; | |
| mprojf=mproj2; | |
| anprojf=anproj2; | |
| } else if(prvforecast == 2){ | |
| dateprojd=dateintmean; | |
| date2dmy(dateprojd,&jprojd, &mprojd, &anprojd); | |
| dateprojf=dateintmean+yrfproj; | |
| date2dmy(dateprojf,&jprojf, &mprojf, &anprojf); | |
| } | |
| if(prvbackcast==1){ | |
| datebackd=(jback1+12*mback1+365*anback1)/365; | |
| jbackd=jback1; | |
| mbackd=mback1; | |
| anbackd=anback1; | |
| datebackf=(jback2+12*mback2+365*anback2)/365; | |
| jbackf=jback2; | |
| mbackf=mback2; | |
| anbackf=anback2; | |
| } else if(prvbackcast == 2){ | |
| datebackd=dateintmean; | |
| date2dmy(datebackd,&jbackd, &mbackd, &anbackd); | |
| datebackf=dateintmean-yrbproj; | |
| date2dmy(datebackf,&jbackf, &mbackf, &anbackf); | |
| } | |
| printinggnuplot(fileresu, optionfilefiname,ageminpar,agemaxpar,bage, fage, prevfcast, prevbcast, pathc,p, (int)anprojd-bage, (int)anbackd-fage); | |
| } | } |
| printinghtml(fileresu,title,datafile, firstpass, lastpass, stepm, weightopt, \ | printinghtml(fileresu,title,datafile, firstpass, lastpass, stepm, weightopt, \ |
| model,imx,jmin,jmax,jmean,rfileres,popforecast,mobilav,prevfcast,mobilavproj,backcast, estepm, \ | model,imx,jmin,jmax,jmean,rfileres,popforecast,mobilav,prevfcast,mobilavproj,prevbcast, estepm, \ |
| jprev1,mprev1,anprev1,dateprev1, dateproj1, dateback1,jprev2,mprev2,anprev2,dateprev2,dateproj2, dateback2); | jprev1,mprev1,anprev1,dateprev1, dateprojd, datebackd,jprev2,mprev2,anprev2,dateprev2,dateprojf, datebackf); |
| /*------------ free_vector -------------*/ | /*------------ free_vector -------------*/ |
| /* chdir(path); */ | /* chdir(path); */ |
| Line 12419 Please run with mle=-1 to get a correct | Line 12558 Please run with mle=-1 to get a correct |
| }/* end if moving average */ | }/* end if moving average */ |
| /*---------- Forecasting ------------------*/ | /*---------- Forecasting ------------------*/ |
| if(prevfcast==1){ | if(prevfcast==1){ |
| /* if(stepm ==1){*/ | /* /\* if(stepm ==1){*\/ */ |
| prevforecast(fileresu, anproj1, mproj1, jproj1, agemin, agemax, dateprev1, dateprev2, mobilavproj, mobaverage, bage, fage, firstpass, lastpass, anproj2, p, cptcoveff); | /* /\* anproj1, mproj1, jproj1 either read explicitly or yrfproj *\/ */ |
| /*This done previously after freqsummary.*/ | |
| /* dateprojd=(jproj1+12*mproj1+365*anproj1)/365; */ | |
| /* dateprojf=(jproj2+12*mproj2+365*anproj2)/365; */ | |
| /* } else if (prvforecast==2){ */ | |
| /* /\* if(stepm ==1){*\/ */ | |
| /* /\* anproj1, mproj1, jproj1 either read explicitly or yrfproj *\/ */ | |
| /* } */ | |
| /*prevforecast(fileresu, dateintmean, anproj1, mproj1, jproj1, agemin, agemax, dateprev1, dateprev2, mobilavproj, mobaverage, bage, fage, firstpass, lastpass, anproj2, p, cptcoveff);*/ | |
| prevforecast(fileresu,dateintmean, dateprojd, dateprojf, agemin, agemax, dateprev1, dateprev2, mobilavproj, mobaverage, bage, fage, firstpass, lastpass, p, cptcoveff); | |
| } | } |
| /* Backcasting */ | /* Prevbcasting */ |
| if(backcast==1){ | if(prevbcast==1){ |
| ddnewms=matrix(1,nlstate+ndeath,1,nlstate+ndeath); | ddnewms=matrix(1,nlstate+ndeath,1,nlstate+ndeath); |
| ddoldms=matrix(1,nlstate+ndeath,1,nlstate+ndeath); | ddoldms=matrix(1,nlstate+ndeath,1,nlstate+ndeath); |
| ddsavms=matrix(1,nlstate+ndeath,1,nlstate+ndeath); | ddsavms=matrix(1,nlstate+ndeath,1,nlstate+ndeath); |
| Line 12440 Please run with mle=-1 to get a correct | Line 12589 Please run with mle=-1 to get a correct |
| hBijx(p, bage, fage, mobaverage); | hBijx(p, bage, fage, mobaverage); |
| fclose(ficrespijb); | fclose(ficrespijb); |
| prevbackforecast(fileresu, mobaverage, anback1, mback1, jback1, agemin, agemax, dateprev1, dateprev2, | /* /\* prevbackforecast(fileresu, mobaverage, anback1, mback1, jback1, agemin, agemax, dateprev1, dateprev2, *\/ */ |
| mobilavproj, bage, fage, firstpass, lastpass, anback2, p, cptcoveff); | /* /\* mobilavproj, bage, fage, firstpass, lastpass, anback2, p, cptcoveff); *\/ */ |
| /* prevbackforecast(fileresu, mobaverage, anback1, mback1, jback1, agemin, agemax, dateprev1, dateprev2, */ | |
| /* mobilavproj, bage, fage, firstpass, lastpass, anback2, p, cptcoveff); */ | |
| prevbackforecast(fileresu, mobaverage, dateintmean, dateprojd, dateprojf, agemin, agemax, dateprev1, dateprev2, | |
| mobilavproj, bage, fage, firstpass, lastpass, p, cptcoveff); | |
| varbprlim(fileresu, nresult, mobaverage, mobilavproj, bage, fage, bprlim, &ncvyear, ftolpl, p, matcov, delti, stepm, cptcoveff); | varbprlim(fileresu, nresult, mobaverage, mobilavproj, bage, fage, bprlim, &ncvyear, ftolpl, p, matcov, delti, stepm, cptcoveff); |
| Line 12449 Please run with mle=-1 to get a correct | Line 12604 Please run with mle=-1 to get a correct |
| free_matrix(ddnewms, 1, nlstate+ndeath, 1, nlstate+ndeath); | free_matrix(ddnewms, 1, nlstate+ndeath, 1, nlstate+ndeath); |
| free_matrix(ddsavms, 1, nlstate+ndeath, 1, nlstate+ndeath); | free_matrix(ddsavms, 1, nlstate+ndeath, 1, nlstate+ndeath); |
| free_matrix(ddoldms, 1, nlstate+ndeath, 1, nlstate+ndeath); | free_matrix(ddoldms, 1, nlstate+ndeath, 1, nlstate+ndeath); |
| } /* end Backcasting */ | } /* end Prevbcasting */ |
| /* ------ Other prevalence ratios------------ */ | /* ------ Other prevalence ratios------------ */ |
| Line 12818 Please run with mle=-1 to get a correct | Line 12973 Please run with mle=-1 to get a correct |
| sprintf(plotcmd,"%s %s",pplotcmd, optionfilegnuplot); | sprintf(plotcmd,"%s %s",pplotcmd, optionfilegnuplot); |
| printf("Starting graphs with: '%s'\n",plotcmd);fflush(stdout); | printf("Starting graphs with: '%s'\n",plotcmd);fflush(stdout); |
| strcpy(pplotcmd,plotcmd); | |
| if((outcmd=system(plotcmd)) != 0){ | if((outcmd=system(plotcmd)) != 0){ |
| printf("gnuplot command might not be in your path: '%s', err=%d\n", plotcmd, outcmd); | printf("Error in gnuplot, command might not be in your path: '%s', err=%d\n", plotcmd, outcmd); |
| printf("\n Trying if gnuplot resides on the same directory that IMaCh\n"); | printf("\n Trying if gnuplot resides on the same directory that IMaCh\n"); |
| sprintf(plotcmd,"%sgnuplot %s", pathimach, optionfilegnuplot); | sprintf(plotcmd,"%sgnuplot %s", pathimach, optionfilegnuplot); |
| if((outcmd=system(plotcmd)) != 0) | if((outcmd=system(plotcmd)) != 0){ |
| printf("\n Still a problem with gnuplot command %s, err=%d\n", plotcmd, outcmd); | printf("\n Still a problem with gnuplot command %s, err=%d\n", plotcmd, outcmd); |
| strcpy(plotcmd,pplotcmd); | |
| } | |
| } | } |
| printf(" Successful, please wait..."); | printf(" Successful, please wait..."); |
| while (z[0] != 'q') { | while (z[0] != 'q') { |