8#include "tpcclibConfig.h"
23static char *info[] = {
24 "Calculation of PTAC AUC from specified time to infinity, based on parameters",
25 "of decaying sum of exponentials.",
27 "Usage: @P [Options] parfile starttime [aucfile]",
32 "See also: fit_dexp, fit2dat, extrapol, paucinf, tacln, parcoll",
34 "Keywords: AUC, input, pharmacokinetics, clearance, elimination rate",
53int main(
int argc,
char **argv)
55 int ai, help=0, version=0, verbose=1;
56 char parfile[FILENAME_MAX], aucfile[FILENAME_MAX];
57 double starttime=nan(
"");
63 if(argc==1) {
tpcPrintUsage(argv[0], info, stderr);
return(1);}
64 parfile[0]=aucfile[0]=(char)0;
66 for(ai=1; ai<argc; ai++)
if(*argv[ai]==
'-') {
68 char *cptr=argv[ai]+1;
if(*cptr==
'-') cptr++;
if(!*cptr)
continue;
69 fprintf(stderr,
"Error: invalid option '%s'.\n", argv[ai]);
78 if(help==2) {
tpcHtmlUsage(argv[0], info,
"");
return(0);}
83 if(ai<argc)
strlcpy(parfile, argv[ai++], FILENAME_MAX);
86 if(starttime>=0.0) {ai++;}
87 else {fprintf(stderr,
"Error: invalid start time '%s'.\n", argv[ai]);
return(1);}
89 if(ai<argc)
strlcpy(aucfile, argv[ai++], FILENAME_MAX);
91 fprintf(stderr,
"Error: invalid argument '%s'.\n", argv[ai]);
95 if(!(starttime>=0.0)) {
96 fprintf(stderr,
"Error: missing command-line argument; use option --help\n");
103 printf(
"parfile := %s\n", parfile);
104 printf(
"starttime := %g\n", starttime);
105 if(aucfile[0]) printf(
"aucfile := %s\n", aucfile);
113 if(verbose>1) printf(
"reading %s\n", parfile);
121 printf(
"parNr := %d\n", par.
parNr);
122 printf(
"tacNr := %d\n", par.
tacNr);
131 if(i<0) i=
iftFindKey(&par.
h,
"calibration_unit", 0);
140 printf(
"time_unit := %s\n",
unitName(tunit));
141 printf(
"calibration_unit := %s\n",
unitName(cunit));
151 fprintf(stderr,
"Error: cannot allocate memory.\n");
160 iftPut(&auc.
h,
"datafile", parfile, 0, NULL);
166 iftPut(&auc.
h,
"program", buf, 0, NULL);
169 strcpy(auc.
n[0].
name,
"AUC");
172 if(verbose>2) printf(
"auc_unit := %s\n",
unitName(aucunit));
173 auc.
n[0].
unit=aucunit;
180 for(
int ti=0; ti<par.
tacNr; ti++) {
181 if(verbose>2) printf(
"%s\n", par.
r[ti].
name);
184 if(verbose>0) fprintf(stderr,
"Error: model %s not supported.\n",
modelCode(par.
r[ti].
model));
187 if(verbose>1) printf(
"AUC for %s := %g\n", par.
r[ti].
name, a);
193 fprintf(stderr,
"Error: model not supported.\n");
205 if(verbose>1) printf(
" saving %s\n", aucfile);
207 fp=fopen(aucfile,
"w");
209 fprintf(stderr,
"Error: cannot open file for writing.\n");
218 if(verbose>0) printf(
"AUC(s) saved in %s\n", aucfile);
char * ctime_r_int(const time_t *t, char *buf)
Convert calendar time t into a null-terminated string of the form YYYY-MM-DD hh:mm:ss,...
double atofVerified(const char *s)
int mfEvalIntToInf(const char *fid, const int parNr, const double *p, const double x, double *v, const int verbose)
int iftPut(IFT *ift, const char *key, const char *value, char comment, TPCSTATUS *status)
int iftFindKey(IFT *ift, const char *key, int start_index)
char * modelCode(const unsigned int i)
int parAllocate(PAR *par, int parNr, int tacNr)
char * parFormattxt(parformat c)
int parWrite(PAR *par, FILE *fp, parformat format, int extra, TPCSTATUS *status)
int parRead(PAR *par, const char *fname, TPCSTATUS *status)
int parFormatFromExtension(const char *s)
int tpcProcessStdOptions(const char *s, int *print_usage, int *print_version, int *verbose_level)
void tpcProgramName(const char *program, int version, int copyright, char *prname, int n)
int tpcHtmlUsage(const char *program, char *text[], const char *path)
void tpcPrintBuild(const char *program, FILE *fp)
void tpcPrintUsage(const char *program, char *text[], FILE *fp)
void statusInit(TPCSTATUS *s)
char * errorMsg(tpcerror e)
void statusSet(TPCSTATUS *s, const char *func, const char *srcfile, int srcline, tpcerror error)
size_t strlcpy(char *dst, const char *src, size_t dstsize)
IFT h
Optional (but often useful) header information.
char name[MAX_PARNAME_LEN+1]
char name[MAX_TACNAME_LEN+1]
int verbose
Verbose level, used by statusPrint() etc.
tpcerror error
Error code.
Header file for library libtpcextensions.
@ UNIT_UNKNOWN
Unknown unit.
int unitIdentify(const char *s)
char * unitName(int unit_code)
int unitMultiply(int ua, int ub)
Header file for library libtpcift.
Header file for libtpcpar.
@ PAR_FORMAT_UNKNOWN
Unknown format.
@ PAR_FORMAT_TSV_UK
UK TSV (point as decimal separator).
Header file for library libtpctac.
Header file for libtpctacmod.