TPCCLIB
Toggle main menu visibility
Loading...
Searching...
No Matches
libtpcmisc
petunits.c
Go to the documentation of this file.
1
5
/*****************************************************************************/
6
#include "
libtpcmisc.h
"
7
/*****************************************************************************/
8
9
/*****************************************************************************/
13
static
char
*cunit_string[] = {
14
/* CUNIT_UNKNOWN */
"unknown"
,
15
/* CUNIT_CPS */
"cnts/sec"
,
16
/* CUNIT_COUNTS */
"counts"
,
17
/* CUNIT_KBQ_PER_ML */
"kBq/mL"
,
18
/* CUNIT_SEC_KBQ_PER_ML */
"sec*kBq/mL"
,
19
/* CUNIT_PER_SEC */
"1/sec"
,
20
/* CUNIT_PER_MIN */
"1/min"
,
21
/* CUNIT_ML_PER_ML */
"mL/mL"
,
22
/* CUNIT_ML_PER_DL */
"mL/dL"
,
23
/* CUNIT_ML_PER_ML_PER_MIN */
"mL/(mL*min)"
,
24
/* CUNIT_ML_PER_DL_PER_MIN */
"mL/(dL*min)"
,
25
/* CUNIT_UNITLESS */
"unitless"
,
26
/* CUNIT_NCI_PER_ML */
"nCi/mL"
,
27
/* CUNIT_MBQ_PER_ML */
"MBq/mL"
,
28
/* CUNIT_BQ_PER_ML */
"Bq/cc"
,
29
/* CUNIT_UCI_PER_ML */
"uCi/cc"
,
30
/* CUNIT_UMOL_PER_MIN_PER_100G */
"umol/(100g*min)"
,
31
/* CUNIT_MG_PER_MIN_PER_100G */
"mg/(100g*min)"
,
32
/* CUNIT_UMOL_PER_MIN_PER_DL */
"umol/(dL*min)"
,
33
/* CUNIT_MG_PER_MIN_PER_DL */
"mg/(dL*min)"
,
34
/* CUNIT_PERCENTAGE */
"%"
,
35
/* CUNIT_KCPS */
"kcps"
,
36
/* CUNIT_MIN_KBQ_PER_ML */
"min*kBq/mL"
,
37
/* CUNIT_BQ */
"Bq"
,
38
/* CUNIT_kBQ */
"kBq"
,
39
/* CUNIT_MBQ */
"MBq"
,
40
/* CUNIT_GBQ */
"GBq"
,
41
/* CUNIT_NCI */
"nCi"
,
42
/* CUNIT_uCI */
"uCi"
,
43
/* CUNIT_mCI */
"mCi"
,
44
/* CUNIT_PID */
"%ID"
,
45
/* CUNIT_PIDM */
"%ID/g"
,
46
/* CUNIT_PIDV */
"%ID/mL"
,
47
/* CUNIT_G_PER_ML */
"g/mL"
,
48
/* CUNIT_ML_PER_G */
"mL/g"
,
49
/* CUNIT_HU */
"HU"
,
50
0
51
};
53
static
char
*tunit_string[] = {
54
/* TUNIT_UNKNOWN */
"unknown"
,
55
/* TUNIT_SEC */
"sec"
,
56
/* TUNIT_MIN */
"min"
,
57
/* TUNIT_UM */
"um"
,
58
/* TUNIT_MM */
"mm"
,
59
/* TUNIT_CM */
"cm"
,
60
/* TUNIT_M */
"m"
,
61
/* TUNIT_HOUR */
"h"
,
62
/* TUNIT_MONTH */
"months"
,
63
/* TUNIT_YEAR */
"y"
,
64
/* TUNIT_MSEC */
"msec"
,
65
0
66
};
67
/*****************************************************************************/
68
69
/*****************************************************************************/
74
int
petCunitId
(
const
char
*unit)
75
{
76
if
(unit==NULL)
return
CUNIT_UNKNOWN;
77
if
(strlen(unit)==0)
return
CUNIT_UNKNOWN;
78
else
if
(strcasecmp(unit,
"unknown"
)==0)
return
CUNIT_UNKNOWN;
79
else
if
(strcasecmp(unit,
"cnts/sec"
)==0)
return
CUNIT_CPS;
80
else
if
(strcasecmp(unit,
"counts/sec"
)==0)
return
CUNIT_CPS;
81
else
if
(strcasecmp(unit,
"ECAT counts/sec"
)==0)
return
CUNIT_CPS;
82
else
if
(strcasecmp(unit,
"cps"
)==0)
return
CUNIT_CPS;
83
else
if
(strcasecmp(unit,
"counts"
)==0)
return
CUNIT_COUNTS;
84
else
if
(strcasecmp(unit,
"cnts"
)==0)
return
CUNIT_COUNTS;
85
else
if
(strcasecmp(unit,
"kBq/cc"
)==0)
return
CUNIT_KBQ_PER_ML;
86
else
if
(strcasecmp(unit,
"kBqcc"
)==0)
return
CUNIT_KBQ_PER_ML;
87
else
if
(strcasecmp(unit,
"kBq/mL"
)==0)
return
CUNIT_KBQ_PER_ML;
88
else
if
(strcasecmp(unit,
"kBqmL"
)==0)
return
CUNIT_KBQ_PER_ML;
89
else
if
(strcasecmp(unit,
"sec*kBq/cc"
)==0)
return
CUNIT_SEC_KBQ_PER_ML;
90
else
if
(strcasecmp(unit,
"sec*kBq/mL"
)==0)
return
CUNIT_SEC_KBQ_PER_ML;
91
else
if
(strcasecmp(unit,
"integral"
)==0)
return
CUNIT_SEC_KBQ_PER_ML;
92
else
if
(strcasecmp(unit,
"1/sec"
)==0)
return
CUNIT_PER_SEC;
93
else
if
(strcasecmp(unit,
"1/s"
)==0)
return
CUNIT_PER_SEC;
94
else
if
(strcasecmp(unit,
"s-1"
)==0)
return
CUNIT_PER_SEC;
95
else
if
(strcasecmp(unit,
"1/min"
)==0)
return
CUNIT_PER_MIN;
96
else
if
(strcasecmp(unit,
"min-1"
)==0)
return
CUNIT_PER_MIN;
97
else
if
(strcasecmp(unit,
"mL/mL"
)==0)
return
CUNIT_ML_PER_ML;
98
else
if
(strcasecmp(unit,
"mL/cc"
)==0)
return
CUNIT_ML_PER_ML;
99
else
if
(strcasecmp(unit,
"mL/dL"
)==0)
return
CUNIT_ML_PER_DL;
100
else
if
(strcasecmp(unit,
"mL/100mL"
)==0)
return
CUNIT_ML_PER_DL;
101
else
if
(strcasecmp(unit,
"mL/(mL*min)"
)==0)
return
CUNIT_ML_PER_ML_PER_MIN;
102
else
if
(strcasecmp(unit,
"mL/(min*mL)"
)==0)
return
CUNIT_ML_PER_ML_PER_MIN;
103
else
if
(strcasecmp(unit,
"mL/(cc*min)"
)==0)
return
CUNIT_ML_PER_ML_PER_MIN;
104
else
if
(strcasecmp(unit,
"mL/(min*cc)"
)==0)
return
CUNIT_ML_PER_ML_PER_MIN;
105
else
if
(strcasecmp(unit,
"mL/mL/min"
)==0)
return
CUNIT_ML_PER_ML_PER_MIN;
106
else
if
(strcasecmp(unit,
"mL/min/mL"
)==0)
return
CUNIT_ML_PER_ML_PER_MIN;
107
else
if
(strcasecmp(unit,
"mL/cc/min"
)==0)
return
CUNIT_ML_PER_ML_PER_MIN;
108
else
if
(strcasecmp(unit,
"mL/min/cc"
)==0)
return
CUNIT_ML_PER_ML_PER_MIN;
109
else
if
(strcasecmp(unit,
"mL/(dL*min)"
)==0)
return
CUNIT_ML_PER_DL_PER_MIN;
110
else
if
(strcasecmp(unit,
"mL/(min*dL)"
)==0)
return
CUNIT_ML_PER_DL_PER_MIN;
111
else
if
(strcasecmp(unit,
"mL/(100mL*min)"
)==0)
return
CUNIT_ML_PER_DL_PER_MIN;
112
else
if
(strcasecmp(unit,
"mL/(min*100mL)"
)==0)
return
CUNIT_ML_PER_DL_PER_MIN;
113
else
if
(strcasecmp(unit,
"mL/dL/min"
)==0)
return
CUNIT_ML_PER_DL_PER_MIN;
114
else
if
(strcasecmp(unit,
"mL/min/dL"
)==0)
return
CUNIT_ML_PER_DL_PER_MIN;
115
else
if
(strcasecmp(unit,
"mL/100mL/min"
)==0)
return
CUNIT_ML_PER_DL_PER_MIN;
116
else
if
(strcasecmp(unit,
"mL/min/100mL"
)==0)
return
CUNIT_ML_PER_DL_PER_MIN;
117
else
if
(strcasecmp(unit,
"unitless"
)==0)
return
CUNIT_UNITLESS;
118
else
if
(strcasecmp(unit,
"1/1"
)==0)
return
CUNIT_UNITLESS;
119
else
if
(strcasecmp(unit,
"Hounsfield Unit"
)==0)
return
CUNIT_HU;
120
else
if
(strcasecmp(unit,
"HU"
)==0)
return
CUNIT_HU;
121
else
if
(strcasecmp(unit,
"nCi/cc"
)==0)
return
CUNIT_NCI_PER_ML;
122
else
if
(strcasecmp(unit,
"nCicc"
)==0)
return
CUNIT_NCI_PER_ML;
123
else
if
(strcasecmp(unit,
"nCi/mL"
)==0)
return
CUNIT_NCI_PER_ML;
124
else
if
(strcasecmp(unit,
"nCimL"
)==0)
return
CUNIT_NCI_PER_ML;
125
else
if
(strcasecmp(unit,
"MBq/cc"
)==0)
return
CUNIT_MBQ_PER_ML;
126
else
if
(strcasecmp(unit,
"MBqcc"
)==0)
return
CUNIT_MBQ_PER_ML;
127
else
if
(strcasecmp(unit,
"MBq/mL"
)==0)
return
CUNIT_MBQ_PER_ML;
128
else
if
(strcasecmp(unit,
"MBqmL"
)==0)
return
CUNIT_MBQ_PER_ML;
129
else
if
(strcasecmp(unit,
"Bq/cc"
)==0)
return
CUNIT_BQ_PER_ML;
130
else
if
(strcasecmp(unit,
"Bqcc"
)==0)
return
CUNIT_BQ_PER_ML;
131
else
if
(strcasecmp(unit,
"Bq/mL"
)==0)
return
CUNIT_BQ_PER_ML;
132
else
if
(strcasecmp(unit,
"BqmL"
)==0)
return
CUNIT_BQ_PER_ML;
133
else
if
(strcasecmp(unit,
"uCi/cc"
)==0)
return
CUNIT_UCI_PER_ML;
134
else
if
(strcasecmp(unit,
"uCicc"
)==0)
return
CUNIT_UCI_PER_ML;
135
else
if
(strcasecmp(unit,
"uCi/mL"
)==0)
return
CUNIT_UCI_PER_ML;
136
else
if
(strcasecmp(unit,
"uCimL"
)==0)
return
CUNIT_UCI_PER_ML;
137
else
if
(strcasecmp(unit,
"umol/(100g*min)"
)==0)
return
CUNIT_UMOL_PER_MIN_PER_100G;
138
else
if
(strcasecmp(unit,
"umol/(min*100g)"
)==0)
return
CUNIT_UMOL_PER_MIN_PER_100G;
139
else
if
(strcasecmp(unit,
"umol/100g/min"
)==0)
return
CUNIT_UMOL_PER_MIN_PER_100G;
140
else
if
(strcasecmp(unit,
"umol/min/100g"
)==0)
return
CUNIT_UMOL_PER_MIN_PER_100G;
141
else
if
(strcasecmp(unit,
"umol/(dL*min)"
)==0)
return
CUNIT_UMOL_PER_MIN_PER_100G;
142
else
if
(strcasecmp(unit,
"umol/(min*dL)"
)==0)
return
CUNIT_UMOL_PER_MIN_PER_100G;
143
else
if
(strcasecmp(unit,
"umol/dL/min"
)==0)
return
CUNIT_UMOL_PER_MIN_PER_100G;
144
else
if
(strcasecmp(unit,
"umol/min/dL"
)==0)
return
CUNIT_UMOL_PER_MIN_PER_100G;
145
else
if
(strcasecmp(unit,
"mg/(100g*min)"
)==0)
return
CUNIT_MG_PER_MIN_PER_100G;
146
else
if
(strcasecmp(unit,
"mg/(min*100g)"
)==0)
return
CUNIT_MG_PER_MIN_PER_100G;
147
else
if
(strcasecmp(unit,
"mg/100g/min"
)==0)
return
CUNIT_MG_PER_MIN_PER_100G;
148
else
if
(strcasecmp(unit,
"mg/min/100g"
)==0)
return
CUNIT_MG_PER_MIN_PER_100G;
149
else
if
(strcasecmp(unit,
"mg/(dL*min)"
)==0)
return
CUNIT_MG_PER_MIN_PER_100G;
150
else
if
(strcasecmp(unit,
"mg/(min*dL)"
)==0)
return
CUNIT_MG_PER_MIN_PER_100G;
151
else
if
(strcasecmp(unit,
"mg/dL/min"
)==0)
return
CUNIT_MG_PER_MIN_PER_100G;
152
else
if
(strcasecmp(unit,
"mg/min/dL"
)==0)
return
CUNIT_MG_PER_MIN_PER_100G;
153
else
if
(strcasecmp(unit,
"%"
)==0)
return
CUNIT_PERCENTAGE;
154
else
if
(strcasecmp(unit,
"kcps"
)==0)
return
CUNIT_KCPS;
155
else
if
(strcasecmp(unit,
"min*kBq/cc"
)==0)
return
CUNIT_MIN_KBQ_PER_ML;
156
else
if
(strcasecmp(unit,
"min*kBq/mL"
)==0)
return
CUNIT_MIN_KBQ_PER_ML;
157
else
if
(strcasecmp(unit,
"Bq"
)==0)
return
CUNIT_BQ;
158
else
if
(strcasecmp(unit,
"kBq"
)==0)
return
CUNIT_KBQ;
159
else
if
(strcasecmp(unit,
"MBq"
)==0)
return
CUNIT_MBQ;
160
else
if
(strcasecmp(unit,
"GBq"
)==0)
return
CUNIT_GBQ;
161
else
if
(strcasecmp(unit,
"nCi"
)==0)
return
CUNIT_NCI;
162
else
if
(strcasecmp(unit,
"uCi"
)==0)
return
CUNIT_UCI;
163
else
if
(strcasecmp(unit,
"mCi"
)==0)
return
CUNIT_MCI;
164
else
if
(strcasecmp(unit,
"%ID"
)==0)
return
CUNIT_PID;
165
else
if
(strcasecmp(unit,
"% ID"
)==0)
return
CUNIT_PID;
166
else
if
(strcasecmp(unit,
"%ID/g"
)==0)
return
CUNIT_PIDM;
167
else
if
(strcasecmp(unit,
"% ID/g"
)==0)
return
CUNIT_PIDM;
168
else
if
(strcasecmp(unit,
"%ID/mL"
)==0)
return
CUNIT_PIDV;
169
else
if
(strcasecmp(unit,
"% ID/mL"
)==0)
return
CUNIT_PIDV;
170
else
if
(strcasecmp(unit,
"%ID/cc"
)==0)
return
CUNIT_PIDV;
171
else
if
(strcasecmp(unit,
"% ID/cc"
)==0)
return
CUNIT_PIDV;
172
else
if
(strcasecmp(unit,
"g/mL"
)==0)
return
CUNIT_G_PER_ML;
173
else
if
(strcasecmp(unit,
"g/cc"
)==0)
return
CUNIT_G_PER_ML;
174
else
if
(strncasecmp(unit,
"SUV"
, 3)==0)
return
CUNIT_G_PER_ML;
175
else
if
(strcasecmp(unit,
"mL/g"
)==0)
return
CUNIT_ML_PER_G;
176
else
if
(strcasecmp(unit,
"cc/g"
)==0)
return
CUNIT_ML_PER_G;
177
178
return
CUNIT_UNKNOWN;
179
}
180
/*****************************************************************************/
181
182
/*****************************************************************************/
187
int
petTunitId
(
const
char
*timeunit)
188
{
189
if
(timeunit==NULL)
return
TUNIT_UNKNOWN;
190
if
(strlen(timeunit)==0)
return
TUNIT_UNKNOWN;
191
else
if
(strcasecmp(timeunit,
"unknown"
)==0)
return
TUNIT_UNKNOWN;
192
else
if
(strncasecmp(timeunit,
"seconds"
, 3)==0)
return
TUNIT_SEC;
193
else
if
(strcmp(timeunit,
"s"
)==0)
return
TUNIT_SEC;
194
else
if
(strncasecmp(timeunit,
"minutes"
, 3)==0)
return
TUNIT_MIN;
195
else
if
(strcasecmp(timeunit,
"um"
)==0)
return
TUNIT_UM;
196
else
if
(strcasecmp(timeunit,
"mm"
)==0)
return
TUNIT_MM;
197
else
if
(strcasecmp(timeunit,
"cm"
)==0)
return
TUNIT_CM;
198
else
if
(strcasecmp(timeunit,
"m"
)==0)
return
TUNIT_M;
199
else
if
(strcasecmp(timeunit,
"h"
)==0)
return
TUNIT_HOUR;
200
else
if
(strcasecmp(timeunit,
"months"
)==0)
return
TUNIT_MONTH;
201
else
if
(strcasecmp(timeunit,
"y"
)==0)
return
TUNIT_YEAR;
202
else
if
(strcasecmp(timeunit,
"msec"
)==0)
return
TUNIT_MSEC;
203
return
TUNIT_UNKNOWN;
204
}
205
/*****************************************************************************/
206
207
/*****************************************************************************/
211
char
*
petCunit
(
213
int
cunit
214
) {
215
int
n=0;
216
while
(cunit_string[n]!=0) n++;
217
if
(cunit<0 || cunit>n-1)
return
(cunit_string[CUNIT_UNKNOWN]);
218
else
return
(cunit_string[cunit]);
219
}
220
/*****************************************************************************/
221
222
/*****************************************************************************/
226
char
*
petTunit
(
228
int
tunit
229
) {
230
int
n=0;
231
while
(tunit_string[n]!=0) n++;
232
if
(tunit<0 || tunit>n-1)
return
(tunit_string[TUNIT_UNKNOWN]);
233
else
return
(tunit_string[tunit]);
234
}
235
/*****************************************************************************/
236
237
/*****************************************************************************/
242
int
cunitFromFilename
(
244
char
*fname
245
) {
246
char
*cptr;
247
248
if
(fname==NULL || strlen(fname)<3)
return
CUNIT_UNKNOWN;
249
for
(
int
i=0; i<2; i++) {
250
if
(i==0)
/* First, look in the extension */
251
{cptr=strrchr(fname,
'.'
);
if
(cptr==NULL) {cptr=fname; i++;}}
252
else
/* Then, look into whole filename */
253
cptr=fname;
254
if
(
strcasestr
(cptr,
"KBQ"
)!=NULL)
return
CUNIT_KBQ_PER_ML;
255
if
(
strcasestr
(cptr,
"MBQ"
)!=NULL)
return
CUNIT_MBQ_PER_ML;
256
if
(
strcasestr
(cptr,
"BQ"
)!=NULL)
return
CUNIT_BQ_PER_ML;
257
if
(
strcasestr
(cptr,
"NCI"
)!=NULL)
return
CUNIT_NCI_PER_ML;
258
if
(
strcasestr
(cptr,
"KCPS"
)!=NULL)
return
CUNIT_KCPS;
259
if
(
strcasestr
(cptr,
"CPS"
)!=NULL)
return
CUNIT_CPS;
260
}
261
return
CUNIT_UNKNOWN;
262
}
263
/*****************************************************************************/
264
265
/*****************************************************************************/
libtpcmisc.h
Header file for libtpcmisc.
strcasestr
char * strcasestr(const char *haystack, const char *needle)
Definition
strext.c:278
petCunitId
int petCunitId(const char *unit)
Definition
petunits.c:74
petCunit
char * petCunit(int cunit)
Definition
petunits.c:211
petTunit
char * petTunit(int tunit)
Definition
petunits.c:226
petTunitId
int petTunitId(const char *timeunit)
Definition
petunits.c:187
cunitFromFilename
int cunitFromFilename(char *fname)
Definition
petunits.c:242
Generated on
for TPCCLIB by
1.17.0