TPCCLIB
Toggle main menu visibility
Loading...
Searching...
No Matches
tacfits
fitedit.c
Go to the documentation of this file.
1
7
/*****************************************************************************/
8
#include "tpcclibConfig.h"
9
/*****************************************************************************/
10
#include <stdio.h>
11
#include <stdlib.h>
12
#include <math.h>
13
#include <string.h>
14
/*****************************************************************************/
15
#include "
libtpcmisc.h
"
16
#include "
libtpccurveio.h
"
17
/*****************************************************************************/
18
19
/*****************************************************************************/
20
static
char
*info[] = {
21
"Edit parameter value in FIT file 1, saving edited contents in file 2."
,
22
" "
,
23
"Usage: @P [Options] fitfile1 par_nr tac_nr newvalue tacfile2"
,
24
" "
,
25
"Options:"
,
26
" -stdoptions"
,
// List standard options like --help, -v, etc
27
" "
,
28
"See also: fit2res, fit2dat, metabcor, fit_ppf"
,
29
" "
,
30
"Keywords: FIT, tool, input, simulation, metabolite correction"
,
31
0};
32
/*****************************************************************************/
33
34
/*****************************************************************************/
35
/* Turn on the globbing of the command line, since it is disabled by default in
36
mingw-w64 (_dowildcard=0); in MinGW32 define _CRT_glob instead, if necessary;
37
In Unix&Linux wildcard command line processing is enabled by default. */
38
/*
39
#undef _CRT_glob
40
#define _CRT_glob -1
41
*/
42
int
_dowildcard = -1;
43
/*****************************************************************************/
44
45
/*****************************************************************************/
49
int
main(
int
argc,
char
**argv)
50
{
51
int
ai, help=0, version=0, verbose=1;
52
int
ret, pn=-1, tn=-1;
53
char
*cptr, file1[FILENAME_MAX], file2[FILENAME_MAX];
54
FIT
fit;
55
double
v=nan(
""
);
56
57
58
/*
59
* Get arguments
60
*/
61
if
(argc==1) {
tpcPrintUsage
(argv[0], info, stderr);
return
(1);}
62
file1[0]=file2[0]=(char)0;
63
fitInit
(&fit);
64
/* Options */
65
for
(ai=1; ai<argc; ai++)
if
(*argv[ai]==
'-'
) {
66
cptr=argv[ai]+1;
if
(*cptr==
'-'
) cptr++;
if
(cptr==NULL)
continue
;
67
if
(
tpcProcessStdOptions
(argv[ai], &help, &version, &verbose)==0)
continue
;
68
fprintf(stderr,
"Error: invalid option '%s'.\n"
, argv[ai]);
69
return
(1);
70
}
else
break
;
71
72
/* Print help or version? */
73
if
(help==2) {
tpcHtmlUsage
(argv[0], info,
""
);
return
(0);}
74
if
(help) {
tpcPrintUsage
(argv[0], info, stdout);
return
(0);}
75
if
(version) {
tpcPrintBuild
(argv[0], stdout);
return
(0);}
76
77
/* Process other arguments, starting from the first non-option */
78
for
(; ai<argc; ai++) {
79
if
(!file1[0]) {
80
strcpy(file1, argv[ai]);
continue
;
81
}
else
if
(pn<0) {
82
pn=atoi(argv[ai]);
if
(pn>0)
continue
;
83
}
else
if
(tn<0) {
84
tn=atoi(argv[ai]);
if
(tn>0)
continue
;
85
}
else
if
(isnan(v)) {
86
v=
atof_dpi
(argv[ai]);
continue
;
87
}
else
if
(!file2[0]) {
88
strcpy(file2, argv[ai]);
continue
;
89
}
90
fprintf(stderr,
"Error: too many arguments: '%s'.\n"
, argv[ai]);
91
return
(1);
92
}
93
94
/* Is something missing? */
95
if
(!file2[0]) {
96
fprintf(stderr,
"Error: missing command-line argument; use option --help\n"
);
97
return
(1);
98
}
99
100
/* In verbose mode print arguments and options */
101
if
(verbose>1) {
102
printf(
"file1 := %s\n"
, file1);
103
printf(
"file2 := %s\n"
, file2);
104
printf(
"parameter := %d\n"
, pn);
105
printf(
"TAC := %d\n"
, tn);
106
printf(
"new_value := %g\n"
, v);
107
}
108
if
(verbose>3)
MATHFUNC_TEST
=verbose-3;
else
MATHFUNC_TEST
=0;
109
110
/*
111
* Read fit
112
*/
113
if
(verbose>2) printf(
"Reading fitfile\n"
);
114
if
((ret=
fitRead
(file1, &fit, verbose-2))) {
115
fprintf(stderr,
"Error %d in reading '%s': %s\n"
, ret, file1,
fiterrmsg
);
116
return
(4);
117
}
118
if
(verbose>10)
fitPrint
(&fit);
119
if
(verbose>1) {
120
printf(
"fit_tac_nr := %d\n"
, fit.
voiNr
);
121
}
122
123
/* Check that requested parameter exists */
124
if
(tn>fit.
voiNr
) {
125
fprintf(stderr,
"Error: FIT file does not contain TAC %d\n"
, tn);
126
fitEmpty
(&fit);
return
(5);
127
}
128
if
(pn>fit.
voi
[tn-1].
parNr
) {
129
fprintf(stderr,
"Error: FIT TAC does not contain parameter %d\n"
, pn);
130
fitEmpty
(&fit);
return
(6);
131
}
132
133
/* Change the parameter value */
134
if
(verbose>0) printf(
" %g -> %g\n"
, fit.
voi
[tn-1].
p
[pn-1], v);
135
fit.
voi
[tn-1].
p
[pn-1]=v;
136
137
/*
138
* Save edit fit
139
*/
140
if
(verbose>1) printf(
"saving edited fit in %s\n"
, file2);
141
ret=
fitWrite
(&fit, file2);
if
(ret) {
142
fprintf(stderr,
"Error (%d) in writing '%s': %s\n"
, ret, file2,
fiterrmsg
);
143
fitEmpty
(&fit);
return
(11);
144
}
145
if
(verbose>0) printf(
"edited fit written in %s\n"
, file2);
146
147
/* Free memory */
148
fitEmpty
(&fit);
149
150
return
(0);
151
}
152
/*****************************************************************************/
153
154
/*****************************************************************************/
atof_dpi
double atof_dpi(char *str)
Definition
decpoint.c:59
libtpccurveio.h
Header file for libtpccurveio.
fitEmpty
void fitEmpty(FIT *fit)
Definition
mathfunc.c:18
fitRead
int fitRead(char *filename, FIT *fit, int verbose)
Definition
mathfunc.c:196
fitWrite
int fitWrite(FIT *fit, char *filename)
Definition
mathfunc.c:54
MATHFUNC_TEST
int MATHFUNC_TEST
Definition
mathfunc.c:5
fiterrmsg
char fiterrmsg[64]
Definition
mathfunc.c:6
fitInit
void fitInit(FIT *fit)
Definition
mathfunc.c:38
fitPrint
void fitPrint(FIT *fit)
Definition
mathfunc.c:180
libtpcmisc.h
Header file for libtpcmisc.
tpcProcessStdOptions
int tpcProcessStdOptions(const char *s, int *print_usage, int *print_version, int *verbose_level)
Definition
proginfo.c:40
tpcHtmlUsage
int tpcHtmlUsage(const char *program, char *text[], const char *path)
Definition
proginfo.c:213
tpcPrintBuild
void tpcPrintBuild(const char *program, FILE *fp)
Definition
proginfo.c:383
tpcPrintUsage
void tpcPrintUsage(const char *program, char *text[], FILE *fp)
Definition
proginfo.c:158
FIT
Definition
libtpccurveio.h:310
FIT::voiNr
int voiNr
Definition
libtpccurveio.h:312
FIT::voi
FitVOI * voi
Definition
libtpccurveio.h:322
FitVOI::parNr
int parNr
Definition
libtpccurveio.h:290
FitVOI::p
double p[MAX_FITPARAMS]
Definition
libtpccurveio.h:298
Generated on
for TPCCLIB by
1.17.0