version 1.98, 2004/05/16 15:05:56
|
version 1.99, 2004/06/05 08:57:40
|
Line 1
|
Line 1
|
/* $Id$ |
/* $Id$ |
$State$ |
$State$ |
$Log$ |
$Log$ |
|
Revision 1.99 2004/06/05 08:57:40 brouard |
|
*** empty log message *** |
|
|
Revision 1.98 2004/05/16 15:05:56 brouard |
Revision 1.98 2004/05/16 15:05:56 brouard |
New version 0.97 . First attempt to estimate force of mortality |
New version 0.97 . First attempt to estimate force of mortality |
directly from the data i.e. without the need of knowing the health |
directly from the data i.e. without the need of knowing the health |
Line 196
|
Line 199
|
#include <stdlib.h> |
#include <stdlib.h> |
#include <unistd.h> |
#include <unistd.h> |
|
|
#include <sys/time.h> |
/* #include <sys/time.h> */ |
#include <time.h> |
#include <time.h> |
#include "timeval.h" |
#include "timeval.h" |
|
|
Line 235
|
Line 238
|
/* $Id$ */ |
/* $Id$ */ |
/* $State$ */ |
/* $State$ */ |
|
|
char version[]="Imach version 0.70, May 2004, INED-EUROREVES "; |
char version[]="Imach version 0.97b, May 2004, INED-EUROREVES "; |
char fullversion[]="$Revision$ $Date$"; |
char fullversion[]="$Revision$ $Date$"; |
int erreur, nberr=0, nbwarn=0; /* Error number, number of errors number of warnings */ |
int erreur, nberr=0, nbwarn=0; /* Error number, number of errors number of warnings */ |
int nvar; |
int nvar; |
Line 356 double ftolhess; /* Tolerance for comput
|
Line 359 double ftolhess; /* Tolerance for comput
|
/**************** split *************************/ |
/**************** split *************************/ |
static int split( char *path, char *dirc, char *name, char *ext, char *finame ) |
static int split( char *path, char *dirc, char *name, char *ext, char *finame ) |
{ |
{ |
|
/* From a file name with full path (either Unix or Windows) we extract the directory (dirc) |
|
the name of the file (name), its extension only (ext) and its first part of the name (finame) |
|
*/ |
char *ss; /* pointer */ |
char *ss; /* pointer */ |
int l1, l2; /* length counters */ |
int l1, l2; /* length counters */ |
|
|
Line 387 static int split( char *path, char *dirc
|
Line 393 static int split( char *path, char *dirc
|
#endif |
#endif |
*/ |
*/ |
ss = strrchr( name, '.' ); /* find last / */ |
ss = strrchr( name, '.' ); /* find last / */ |
ss++; |
if (ss >0){ |
strcpy(ext,ss); /* save extension */ |
ss++; |
l1= strlen( name); |
strcpy(ext,ss); /* save extension */ |
l2= strlen(ss)+1; |
l1= strlen( name); |
strncpy( finame, name, l1-l2); |
l2= strlen(ss)+1; |
finame[l1-l2]= 0; |
strncpy( finame, name, l1-l2); |
|
finame[l1-l2]= 0; |
|
} |
return( 0 ); /* we're done */ |
return( 0 ); /* we're done */ |
} |
} |
|
|
Line 1050 double **pmij(double **ps, double *cov,
|
Line 1058 double **pmij(double **ps, double *cov,
|
int i,j,j1, nc, ii, jj; |
int i,j,j1, nc, ii, jj; |
|
|
for(i=1; i<= nlstate; i++){ |
for(i=1; i<= nlstate; i++){ |
for(j=1; j<i;j++){ |
for(j=1; j<i;j++){ |
for (nc=1, s2=0.;nc <=ncovmodel; nc++){ |
for (nc=1, s2=0.;nc <=ncovmodel; nc++){ |
/*s2 += param[i][j][nc]*cov[nc];*/ |
/*s2 += param[i][j][nc]*cov[nc];*/ |
s2 += x[(i-1)*nlstate*ncovmodel+(j-1)*ncovmodel+nc+(i-1)*(ndeath-1)*ncovmodel]*cov[nc]; |
s2 += x[(i-1)*nlstate*ncovmodel+(j-1)*ncovmodel+nc+(i-1)*(ndeath-1)*ncovmodel]*cov[nc]; |
/*printf("Int j<i s1=%.17e, s2=%.17e\n",s1,s2);*/ |
/* printf("Int j<i s1=%.17e, s2=%.17e\n",s1,s2); */ |
} |
} |
ps[i][j]=s2; |
ps[i][j]=s2; |
/*printf("s1=%.17e, s2=%.17e\n",s1,s2);*/ |
/* printf("s1=%.17e, s2=%.17e\n",s1,s2); */ |
} |
} |
for(j=i+1; j<=nlstate+ndeath;j++){ |
for(j=i+1; j<=nlstate+ndeath;j++){ |
for (nc=1, s2=0.;nc <=ncovmodel; nc++){ |
for (nc=1, s2=0.;nc <=ncovmodel; nc++){ |
s2 += x[(i-1)*nlstate*ncovmodel+(j-2)*ncovmodel+nc+(i-1)*(ndeath-1)*ncovmodel]*cov[nc]; |
s2 += x[(i-1)*nlstate*ncovmodel+(j-2)*ncovmodel+nc+(i-1)*(ndeath-1)*ncovmodel]*cov[nc]; |
/*printf("Int j>i s1=%.17e, s2=%.17e %lx %lx\n",s1,s2,s1,s2);*/ |
/* printf("Int j>i s1=%.17e, s2=%.17e %lx %lx\n",s1,s2,s1,s2); */ |
|
} |
|
ps[i][j]=s2; |
} |
} |
ps[i][j]=s2; |
|
} |
} |
} |
|
/*ps[3][2]=1;*/ |
/*ps[3][2]=1;*/ |
|
|
for(i=1; i<= nlstate; i++){ |
for(i=1; i<= nlstate; i++){ |
s1=0; |
s1=0; |
for(j=1; j<i; j++) |
for(j=1; j<i; j++) |
s1+=exp(ps[i][j]); |
s1+=exp(ps[i][j]); |
for(j=i+1; j<=nlstate+ndeath; j++) |
for(j=i+1; j<=nlstate+ndeath; j++) |
s1+=exp(ps[i][j]); |
s1+=exp(ps[i][j]); |
ps[i][i]=1./(s1+1.); |
ps[i][i]=1./(s1+1.); |
for(j=1; j<i; j++) |
for(j=1; j<i; j++) |
ps[i][j]= exp(ps[i][j])*ps[i][i]; |
ps[i][j]= exp(ps[i][j])*ps[i][i]; |
for(j=i+1; j<=nlstate+ndeath; j++) |
for(j=i+1; j<=nlstate+ndeath; j++) |
ps[i][j]= exp(ps[i][j])*ps[i][i]; |
ps[i][j]= exp(ps[i][j])*ps[i][i]; |
/* ps[i][nlstate+1]=1.-s1- ps[i][i];*/ /* Sum should be 1 */ |
/* ps[i][nlstate+1]=1.-s1- ps[i][i];*/ /* Sum should be 1 */ |
} /* end i */ |
} /* end i */ |
|
|
for(ii=nlstate+1; ii<= nlstate+ndeath; ii++){ |
for(ii=nlstate+1; ii<= nlstate+ndeath; ii++){ |
for(jj=1; jj<= nlstate+ndeath; jj++){ |
for(jj=1; jj<= nlstate+ndeath; jj++){ |
ps[ii][jj]=0; |
ps[ii][jj]=0; |
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("%lf ",ps[ii][jj]); |
/* printf("ddd %lf ",ps[ii][jj]); */ |
} |
/* } */ |
printf("\n "); |
/* printf("\n "); */ |
} |
/* } */ |
printf("\n ");printf("%lf ",cov[2]);*/ |
/* printf("\n ");printf("%lf ",cov[2]); */ |
/* |
/* |
for(i=1; i<= npar; i++) printf("%f ",x[i]); |
for(i=1; i<= npar; i++) printf("%f ",x[i]); |
goto end;*/ |
goto end;*/ |
return ps; |
return ps; |
} |
} |
|
|
Line 4003 int main(int argc, char *argv[])
|
Line 4011 int main(int argc, char *argv[])
|
int *indx; |
int *indx; |
char line[MAXLINE], linepar[MAXLINE]; |
char line[MAXLINE], linepar[MAXLINE]; |
char path[MAXLINE],pathc[MAXLINE],pathcd[MAXLINE],pathtot[MAXLINE],model[MAXLINE]; |
char path[MAXLINE],pathc[MAXLINE],pathcd[MAXLINE],pathtot[MAXLINE],model[MAXLINE]; |
char pathr[MAXLINE]; |
char pathr[MAXLINE], pathimach[MAXLINE]; |
int firstobs=1, lastobs=10; |
int firstobs=1, lastobs=10; |
int sdeb, sfin; /* Status at beginning and end */ |
int sdeb, sfin; /* Status at beginning and end */ |
int c, h , cpt,l; |
int c, h , cpt,l; |
Line 4089 int main(int argc, char *argv[])
|
Line 4097 int main(int argc, char *argv[])
|
printf("pathtot=%s, path=%s, optionfile=%s\n",pathtot,path,optionfile);*/ |
printf("pathtot=%s, path=%s, optionfile=%s\n",pathtot,path,optionfile);*/ |
/* cutv(path,optionfile,pathtot,'\\');*/ |
/* cutv(path,optionfile,pathtot,'\\');*/ |
|
|
|
split(argv[0],pathimach,optionfile,optionfilext,optionfilefiname); |
|
/* strcpy(pathimach,argv[0]); */ |
split(pathtot,path,optionfile,optionfilext,optionfilefiname); |
split(pathtot,path,optionfile,optionfilext,optionfilefiname); |
printf("pathtot=%s,\npath=%s,\noptionfile=%s \noptionfilext=%s \noptionfilefiname=%s\n",pathtot,path,optionfile,optionfilext,optionfilefiname); |
printf("pathimach=%s, pathtot=%s,\npath=%s,\noptionfile=%s \noptionfilext=%s \noptionfilefiname=%s\n",pathimach,pathtot,path,optionfile,optionfilext,optionfilefiname); |
chdir(path); |
chdir(path); |
strcpy(command,"mkdir "); |
strcpy(command,"mkdir "); |
strcat(command,optionfilefiname); |
strcat(command,optionfilefiname); |
Line 4115 int main(int argc, char *argv[])
|
Line 4125 int main(int argc, char *argv[])
|
} |
} |
fprintf(ficlog,"Log filename:%s\n",filelog); |
fprintf(ficlog,"Log filename:%s\n",filelog); |
fprintf(ficlog,"\n%s\n%s",version,fullversion); |
fprintf(ficlog,"\n%s\n%s",version,fullversion); |
fprintf(ficlog,"\nEnter the parameter file name: "); |
fprintf(ficlog,"\nEnter the parameter file name: \n"); |
fprintf(ficlog,"pathtot=%s\n\ |
fprintf(ficlog,"pathimach=%s\npathtot=%s\n\ |
path=%s \n\ |
path=%s \n\ |
optionfile=%s\n\ |
optionfile=%s\n\ |
optionfilext=%s\n\ |
optionfilext=%s\n\ |
optionfilefiname=%s\n",pathtot,path,optionfile,optionfilext,optionfilefiname); |
optionfilefiname=%s\n",pathimach,pathtot,path,optionfile,optionfilext,optionfilefiname); |
|
|
printf("Local time (at start):%s",strstart); |
printf("Local time (at start):%s",strstart); |
fprintf(ficlog,"Local time (at start): %s",strstart); |
fprintf(ficlog,"Local time (at start): %s",strstart); |
Line 5411 Interval (in months) between two waves:
|
Line 5421 Interval (in months) between two waves:
|
/*------ End -----------*/ |
/*------ End -----------*/ |
|
|
chdir(path); |
chdir(path); |
strcpy(plotcmd,GNUPLOTPROGRAM); |
strcpy(plotcmd,"\""); |
|
strcat(plotcmd,pathimach); |
|
strcat(plotcmd,GNUPLOTPROGRAM); |
|
strcat(plotcmd,"\""); |
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); |
Line 5424 Interval (in months) between two waves:
|
Line 5437 Interval (in months) between two waves:
|
printf("\nType e to edit output files, g to graph 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"); */ |
if (z[0] == 'e') system(optionfilehtm); |
if (z[0] == 'e') { |
|
printf("Starting browser with: %s",optionfilehtm);fflush(stdout); |
|
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); |
} |
} |