5#include "tpcclibConfig.h"
36 int verbose=0;
if(status!=NULL) verbose=status->
verbose;
45 if(verbose>0) {printf(
"%s(%d)\n", __func__, extra); fflush(stdout);}
48 int fi, ri, n, prec=6;
54 if(tac->
isframe==0) v=tac->
x[fi];
else v=0.5*(tac->
x1[fi]+tac->
x2[fi]);
55 if(isnan(v)) n=fprintf(fp,
".");
else n=fprintf(fp,
"%.5f", v);
61 for(ri=0; ri<tac->
tacNr; ri++) {
62 if(isnan(tac->
c[ri].
y[fi])) n=fprintf(fp,
" .");
63 else fprintf(fp,
" %.*e", prec, tac->
c[ri].
y[fi]);
69 n=fprintf(fp,
"\n");
if(n<1) {
109 int verbose=0;
if(status!=NULL) verbose=status->
verbose;
119 if(verbose>0) {printf(
"%s()\n", __func__); fflush(stdout);}
122 if(verbose>1) {printf(
" verifying CSV regularity\n"); fflush(stdout);}
125 printf(
"\n <-- CSV contents (irregular) ---\n");
127 printf(
"\n ------------------------------->\n");
128 printf(
"col_nr := %d\n", csv->
col_nr);
129 printf(
"row_nr := %d\n", csv->
row_nr);
131 for(
int i=0; i<csv->
row_nr; i++)
132 printf(
"columns_on_row[%d] := %d\n", 1+i,
csvRowLength(csv, i));
137 if(verbose>1) {printf(
" trying to make it regular\n"); fflush(stdout);}
140 printf(
"\n <-- CSV contents (still irregular) ---\n");
142 printf(
"\n ------------------------------->\n");
143 printf(
"col_nr := %d\n", csv->
col_nr);
144 printf(
"row_nr := %d\n", csv->
row_nr);
146 for(
int i=0; i<csv->
row_nr; i++)
147 printf(
"columns_on_row[%d] := %d\n", 1+i,
csvRowLength(csv, i));
158 for(
int i=0; i<csv->
col_nr; i++) {
160 if(c!=NULL && isalpha(c[0])) withTitle++;
162 if(verbose>1 && withTitle>0) {printf(
"CSV seems to have title line.\n"); fflush(stdout);}
163 if(withTitle>0) withTitle=1;
168 if(verbose>2) {printf(
" allocating memory for TAC data\n"); fflush(stdout);}
169 n=csv->
col_nr;
if(n>1) n--;
176 printf(
" tacNr := %d\n", tac->
tacNr);
177 printf(
" sampleNr := %d\n", tac->
sampleNr);
184 if(verbose>2) {printf(
" copying TAC names from the title columns\n"); fflush(stdout);}
186 for(
int ri=0; ri<tac->
tacNr; ri++) {
193 if(verbose>2) {printf(
" copying data from CSV to TAC\n"); fflush(stdout);}
198 c=
csvCell(csv, fi+withTitle, 0);
201 for(ri=0; ri<tac->
tacNr; ri++) {
202 c=
csvCell(csv, fi+withTitle, 1+ri);
int csvIsRegular(CSV *csv)
char * csvCell(CSV *csv, int row, int col)
int csvTrimRight(CSV *csv)
int csvRowLength(CSV *csv, int row)
int csvWrite(CSV *csv, int regular, FILE *fp, TPCSTATUS *status)
double atofVerified(const char *s)
int iftDuplicate(IFT *ift1, IFT *ift2)
int iftWrite(IFT *ift, FILE *fp, TPCSTATUS *status)
int tacReadSimple(TAC *tac, CSV *csv, IFT *hdr, TPCSTATUS *status)
int tacWriteSimple(TAC *tac, FILE *fp, int extra, TPCSTATUS *status)
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)
char name[MAX_TACNAME_LEN+1]
IFT h
Optional (but often useful) header information.
int verbose
Verbose level, used by statusPrint() etc.
int tacAllocate(TAC *tac, int sampleNr, int tacNr)
int tacGetHeaderUnit(TAC *tac, TPCSTATUS *status)
int tacGetHeaderTimeunit(TAC *tac, TPCSTATUS *status)
Header file for library libtpccsv.
@ WEIGHTING_OFF
Not weighted or weights not available (weights for all included samples are 1.0).
@ WEIGHTING_UNKNOWN
Not known; usually assumed that not weighted.
#define MAX_TACNAME_LEN
Max length of TAC ID name (not including trailing zero)
@ UNIT_UNKNOWN
Unknown unit.
@ TPCERROR_FAIL
General error.
@ TPCERROR_INVALID_FORMAT
Invalid file format.
@ TPCERROR_NO_DATA
File contains no data.
@ TPCERROR_CANNOT_WRITE
Cannot write file.
char * unitName(int unit_code)
Header file for library libtpcift.
Header file for library libtpcisotope.
Header file for library libtpctac.
@ TAC_FORMAT_SIMPLE
x and y's with space delimiters