Changeset 37049
- Timestamp:
- Jul 17, 2014, 10:21:10 AM (12 years ago)
- Location:
- trunk/Ohana/src/opihi
- Files:
-
- 24 edited
- 3 copied
-
cmd.basic/Makefile (modified) (1 diff)
-
cmd.basic/init.c (modified) (2 diffs)
-
cmd.basic/list.c (modified) (2 diffs)
-
cmd.basic/strmatch.c (copied) (copied from branches/eam_branches/ipp-20140610/Ohana/src/opihi/cmd.basic/strmatch.c )
-
cmd.data/Makefile (modified) (1 diff)
-
cmd.data/init.c (modified) (2 diffs)
-
cmd.data/print_vectors.c (copied) (copied from branches/eam_branches/ipp-20140610/Ohana/src/opihi/cmd.data/print_vectors.c )
-
cmd.data/read_vectors.c (modified) (23 diffs)
-
dvo/Makefile (modified) (2 diffs)
-
dvo/avextract.c (modified) (1 diff)
-
dvo/avmatch.c (modified) (1 diff)
-
dvo/fitsed.c (modified) (1 diff)
-
dvo/gstar.c (modified) (11 diffs)
-
dvo/imdata.c (modified) (4 diffs)
-
dvo/imextract.c (modified) (1 diff)
-
dvo/init.c (modified) (2 diffs)
-
dvo/lcurve.c (modified) (1 diff)
-
dvo/lightcurve.c (modified) (1 diff)
-
dvo/photcode_ops.c (copied) (copied from branches/eam_branches/ipp-20140610/Ohana/src/opihi/dvo/photcode_ops.c )
-
dvo/photometry.c (modified) (11 diffs)
-
dvo/pmeasure.c (modified) (1 diff)
-
dvo/subpix.c (modified) (1 diff)
-
include/dvomath.h (modified) (1 diff)
-
include/dvoshell.h (modified) (1 diff)
-
include/shell.h (modified) (1 diff)
-
lib.shell/VectorIO.c (modified) (3 diffs)
-
lib.shell/string.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/opihi/cmd.basic/Makefile
r35237 r37049 55 55 $(SRC)/substr.$(ARCH).o \ 56 56 $(SRC)/strhash.$(ARCH).o \ 57 $(SRC)/strmatch.$(ARCH).o \ 57 58 $(SRC)/strpop.$(ARCH).o \ 58 59 $(SRC)/strsub.$(ARCH).o \ -
trunk/Ohana/src/opihi/cmd.basic/init.c
r35237 r37049 40 40 int fprintf_opihi PROTO((int, char **)); 41 41 int strlen_func PROTO((int, char **)); 42 int strmatch PROTO((int, char **)); 42 43 int substr_func PROTO((int, char **)); 43 44 int strpop PROTO((int, char **)); … … 97 98 {1, "strpop", strpop, "pop a string"}, 98 99 {1, "strsub", strsub, "replace instances of a key in a string"}, 100 {1, "strmatch", strmatch, "string length"}, 99 101 {1, "wait", wait_func, "wait until return is typed"}, 100 102 {1, "which", which, "show command *"} -
trunk/Ohana/src/opihi/cmd.basic/list.c
r36084 r37049 2 2 # define D_NLINES 100 3 3 static char prompt[] = ">> "; 4 5 static int set_list_varname (char *line, char *base, int N, int excelStyle);6 4 7 5 int list (int argc, char **argv) { … … 311 309 return (TRUE); 312 310 } 313 314 static int set_list_varname (char *line, char *base, int N, int excelStyle) {315 316 int i;317 318 // A-Z correspond to 0 - 25319 320 if (excelStyle) {321 float f = log(26.0);322 float g = (N == 0) ? 0.0 : log(1.0*N);323 int Ndigit = (int) (g / f) + 1;324 if (Ndigit > 10) {325 sprintf (line, "%s:ZZZZZZZZZZ", base);326 return FALSE;327 }328 char name[12];329 memset (name, 0, 12);330 for (i = 0; i < Ndigit; i++) {331 float Npow = Ndigit - i - 1;332 float g = pow(26.0, Npow);333 int V = (int) (N / g);334 name[i] = (Npow == 0.0) ? 'A' + V : 'A' + V - 1;335 N -= V * g;336 }337 sprintf (line, "%s:%s", base, name);338 } else {339 sprintf (line, "%s:%d", base, N);340 }341 return TRUE;342 } -
trunk/Ohana/src/opihi/cmd.data/Makefile
r36679 r37049 98 98 $(SRC)/point.$(ARCH).o \ 99 99 $(SRC)/ps.$(ARCH).o \ 100 $(SRC)/print_vectors.$(ARCH).o \ 100 101 $(SRC)/queuedelete.$(ARCH).o \ 101 102 $(SRC)/queuedrop.$(ARCH).o \ -
trunk/Ohana/src/opihi/cmd.data/init.c
r36679 r37049 87 87 int point PROTO((int, char **)); 88 88 int ps PROTO((int, char **)); 89 int print_vectors PROTO((int, char **)); 89 90 int queuelist PROTO((int, char **)); 90 91 int queueload PROTO((int, char **)); … … 250 251 {1, "ppm", jpeg, "convert display graphic to PPM"}, 251 252 {1, "ps", ps, "convert display to PostScript"}, 253 {1, "print_vectors", print_vectors, "print a set of vectors"}, 252 254 {1, "queuedelete", queuedelete, "delete a queue"}, 253 255 {1, "queuedrop", queuedrop, "drop values from queue matching a key"}, -
trunk/Ohana/src/opihi/cmd.data/read_vectors.c
r36375 r37049 3 3 FILE *f = (FILE *) NULL; 4 4 char filename[2048]; 5 6 void read_vectors_cleanup (); 5 7 6 8 int datafile (int argc, char **argv) { … … 23 25 // vector types 24 26 enum {COLTYPE_NONE, COLTYPE_FLT, COLTYPE_INT, COLTYPE_TIME, COLTYPE_CHAR}; 25 static int FITS_TRANSPOSE; 27 28 static int Nvec = 0; 29 static Vector **vec = NULL; 30 static char **listname = NULL; 31 static int *col = NULL; 32 static int *coltype = NULL; 33 static char *buffer = NULL; 26 34 27 35 int read_vectors (int argc, char **argv) { … … 29 37 int TimeFormat; 30 38 time_t TimeReference; 31 int i, j, Nskip, Narg, Nvec, *col,IsCSV, VERBOSE;32 int Nbytes, Nstart, NELEM, Nelem, nread , *coltype;39 int i, j, Nskip, Narg, IsCSV, VERBOSE; 40 int Nbytes, Nstart, NELEM, Nelem, nread; 33 41 char *colstr, *c0, *c1, *extname; 34 Vector **vec; 35 36 char *buffer = NULL; 37 38 FITS_TRANSPOSE = FALSE; 39 if ((Narg = get_argument (argc, argv, "-transpose"))) { 40 remove_argument (Narg, &argc, argv); 41 FITS_TRANSPOSE = TRUE; 42 } 42 char varname[1024]; // used as a buffer for the names of string fields 43 43 44 44 /* auto-sense table type */ … … 88 88 89 89 Nvec = (argc - 1) / 2; 90 ALLOCATE (listname, char *, Nvec); 90 91 ALLOCATE (vec, Vector *, Nvec); 91 92 ALLOCATE (col, int, Nvec); 92 93 ALLOCATE (coltype, int, Nvec); 94 for (i = 0; i < Nvec; i++) { 95 listname[i] = NULL; 96 vec[i] = NULL; 97 } 93 98 94 99 for (i = 0; i < Nvec; i++) { … … 115 120 } 116 121 117 if ((vec[i] = SelectVector (argv[2*i + 1], ANYVECTOR, TRUE)) == NULL) { 118 gprint (GP_ERR, "USAGE: read name N name N ...\n"); 119 free (vec); 120 free (col); 121 return (FALSE); 122 if (coltype[i] == COLTYPE_CHAR) { 123 listname[i] = strcreate (argv[2*i + 1]); 124 } else { 125 if ((vec[i] = SelectVector (argv[2*i + 1], ANYVECTOR, TRUE)) == NULL) { 126 gprint (GP_ERR, "USAGE: read name N name N ...\n"); 127 read_vectors_cleanup(); 128 return (FALSE); 129 } 122 130 } 123 131 … … 144 152 bad_colname: 145 153 gprint (GP_ERR, "USAGE: read name N name N ...\n"); 146 free (vec); 147 free (col); 154 read_vectors_cleanup(); 148 155 return (FALSE); 149 156 } … … 153 160 NELEM = 1000; 154 161 for (i = 0; i < Nvec; i++) { 155 if ((coltype[i] == COLTYPE_INT) || (coltype[i] == COLTYPE_CHAR)) { 156 ResetVector (vec[i], OPIHI_INT, NELEM); 157 } else { 158 // note that COLTYPE_TIME is a type of float 159 ResetVector (vec[i], OPIHI_FLT, NELEM); 162 switch (coltype[i]) { 163 case COLTYPE_INT: 164 ResetVector (vec[i], OPIHI_INT, NELEM); 165 break; 166 case COLTYPE_FLT: 167 case COLTYPE_TIME: 168 // note that COLTYPE_TIME is a type of float 169 ResetVector (vec[i], OPIHI_FLT, NELEM); 170 break; 171 case COLTYPE_CHAR: 172 default: 173 break; 160 174 } 161 175 } … … 166 180 if (scan_line_maxlen (f, buffer, 0x10000) == EOF) { 167 181 gprint (GP_ERR, "problem reading file %s\n", filename); 168 free (vec); 169 free (col); 182 read_vectors_cleanup(); 170 183 return FALSE; 171 184 } … … 213 226 for (i = 0; i < Nvec; i++) { 214 227 int ivalue; 215 char cvalue;216 228 double dvalue; 217 229 time_t tvalue; … … 224 236 break; 225 237 case COLTYPE_CHAR: 226 readStatus = IsCSV ? charparse_csv (&cvalue, col[i], c0) : charparse (&cvalue, col[i], c0); 227 vec[i][0].elements.Int[Nelem] = readStatus ? cvalue : 0; 228 break; 238 { 239 // I need to get an isolated word in 'value' with the string value of this field 240 char *ptr = IsCSV ? ptrparse_csv (col[i], c0) : ptrparse (col[i], c0); 241 char *value = NULL; 242 if (IsCSV) { 243 char *end = parse_nextword_csv (ptr); 244 if (end) { 245 value = end ? strncreate (ptr, end - ptr) : strcreate (ptr); 246 } 247 } else { 248 value = thisword(ptr); 249 } 250 set_list_varname (varname, listname[i], Nelem, FALSE); 251 set_str_variable (varname, value); 252 free (value); 253 break; 254 } 229 255 case COLTYPE_FLT: 230 256 readStatus = IsCSV ? dparse_csv (&dvalue, col[i], c0) : dparse (&dvalue, col[i], c0); … … 256 282 NELEM += 1000; 257 283 for (i = 0; i < Nvec; i++) { 258 if (coltype[i] == COLTYPE_INT) { 259 REALLOCATE (vec[i][0].elements.Int, opihi_int, NELEM); 260 } else { 261 REALLOCATE (vec[i][0].elements.Flt, opihi_flt, NELEM); 284 switch (coltype[i]) { 285 case COLTYPE_INT: 286 ResetVector (vec[i], OPIHI_INT, NELEM); 287 break; 288 case COLTYPE_FLT: 289 case COLTYPE_TIME: 290 ResetVector (vec[i], OPIHI_FLT, NELEM); 291 break; 292 case COLTYPE_CHAR: 293 default: 294 break; 262 295 } 263 296 } … … 266 299 } 267 300 } 301 // set the final vector / list length 268 302 for (i = 0; i < Nvec; i++) { 269 if (coltype[i] == COLTYPE_INT) { 270 REALLOCATE (vec[i][0].elements.Int, opihi_int, MAX (Nelem,1)); 271 } else { 272 REALLOCATE (vec[i][0].elements.Flt, opihi_flt, MAX (Nelem,1)); 273 } 274 vec[i][0].Nelements = Nelem; 275 } 276 277 free (vec); 278 free (col); 279 if (buffer) free (buffer); 303 switch (coltype[i]) { 304 case COLTYPE_INT: 305 ResetVector (vec[i], OPIHI_INT, Nelem); 306 break; 307 case COLTYPE_FLT: 308 case COLTYPE_TIME: 309 ResetVector (vec[i], OPIHI_FLT, Nelem); 310 break; 311 case COLTYPE_CHAR: 312 sprintf (varname, "%s:n", listname[i]); 313 set_int_variable (varname, Nelem); 314 break; 315 default: 316 break; 317 } 318 } 319 read_vectors_cleanup(); 280 320 return (TRUE); 281 282 321 } 283 322 284 # define ESCAPE( MSG) {\285 gprint (GP_ERR, "%s\n", MSG); \323 # define ESCAPE(...) { \ 324 gprint (GP_ERR, __VA_ARGS__); \ 286 325 if (CCDKeyword != NULL) free (CCDKeyword); \ 287 326 gfits_free_table (&table); \ … … 292 331 293 332 off_t Nbytes; 294 int i, j, k,N, Nextend, Ny, Binary, vecType, padIfShort;333 int i, j, N, Nextend, Ny, Binary, vecType, padIfShort; 295 334 char type[16], ID[80], *CCDKeyword; 296 335 FTable table; 297 336 Header header; 298 337 Vector **vec; 338 int FITS_TRANSPOSE; 299 339 300 340 table.buffer = NULL; 301 341 header.buffer = NULL; 342 343 FITS_TRANSPOSE = FALSE; 344 if ((N = get_argument (argc, argv, "-transpose"))) { 345 remove_argument (N, &argc, argv); 346 FITS_TRANSPOSE = TRUE; 347 } 302 348 303 349 CCDKeyword = NULL; … … 328 374 // } 329 375 330 if (argc < 2) ESCAPE ("USAGE: read -fits extension [-extnum] [-keyword key] name name ... ");331 332 if (f == NULL) ESCAPE ("file not found ");376 if (argc < 2) ESCAPE ("USAGE: read -fits extension [-extnum] [-keyword key] name name ...\n"); 377 378 if (f == NULL) ESCAPE ("file not found\n"); 333 379 fseeko (f, 0LL, SEEK_SET); 334 380 table.header = &header; … … 338 384 // first extension is PHU, cannot be a table. 339 385 // Nextend counts from 0 for first extension 340 if (!gfits_load_header (f, &header)) ESCAPE ("error reading primary header for file ");386 if (!gfits_load_header (f, &header)) ESCAPE ("error reading primary header for file\n"); 341 387 Nbytes = gfits_data_size (&header); 342 388 fseeko (f, Nbytes, SEEK_CUR); … … 344 390 345 391 for (i = 0; i < Nextend; i++) { 346 if (!gfits_load_header (f, &header)) ESCAPE ("extension not found");392 if (!gfits_load_header (f, &header)) ESCAPE ("extension %d not found\n", i); 347 393 Nbytes = gfits_data_size (&header); 348 394 /* skip the prior data buffers */ … … 350 396 gfits_free_header (&header); 351 397 } 352 if (!gfits_load_header (f, &header)) ESCAPE ("error reading header for extension ");353 if (!gfits_fread_ftable_data (f, &table, padIfShort)) ESCAPE ("error reading table for extension ");398 if (!gfits_load_header (f, &header)) ESCAPE ("error reading header for extension %d\n", Nextend); 399 if (!gfits_fread_ftable_data (f, &table, padIfShort)) ESCAPE ("error reading table for extension %d\n", Nextend); 354 400 355 401 } else { … … 382 428 continue; 383 429 } 384 if (!gfits_fread_ftable_data (f, &table, padIfShort)) ESCAPE ("error reading table for extension ");430 if (!gfits_fread_ftable_data (f, &table, padIfShort)) ESCAPE ("error reading table for extension\n"); 385 431 break; 386 432 } … … 391 437 gfits_scan (&header, "XTENSION", "%s", 1, type); 392 438 if (strcmp (type, "BINTABLE") && strcmp (type, "TABLE")) { 393 ESCAPE ("specified extension is not a table\n");439 ESCAPE ("specified extension %s is not a table\n", type); 394 440 } 395 441 Binary = !strcmp (type, "BINTABLE"); … … 418 464 419 465 if (!FITS_TRANSPOSE) { 466 // read string column into a list rather than a vector 467 if (!strcmp (type, "char")) { 468 char *fieldName = argv[i]; 469 char *Ptr = data; 470 char varname[1024]; // used as a buffer for the names of string fields 471 for (j = 0; j < Ny; j++) { 472 set_list_varname (varname, fieldName, j, FALSE); 473 char *value = strncreate (&Ptr[j*Nval], Nval); 474 // replace instances of $ with _ 475 char *p = strchr (value, '$'); 476 while (p) { 477 *p = '_'; 478 p = strchr (p, '$'); 479 } 480 set_str_variable (varname, value); 481 free (value); 482 } 483 sprintf (varname, "%s:n", fieldName); 484 set_int_variable (varname, Ny); 485 continue; 486 } 487 420 488 // define the multifield vector names (Nval vectors x Ny elements) 421 489 ALLOCATE (vec, Vector *, Nval); … … 429 497 } 430 498 431 if (!strcmp (type, "char")) { 432 char *Ptr = data; 433 for (j = 0; j < Ny; j++) { 434 for (k = 0; k < Nval; k++, Ptr++) { 435 vec[k][0].elements.Int[j] = *Ptr; 436 } 437 } 438 } 439 if (!strcmp (type, "short")) { 440 short *Ptr = data; 441 for (j = 0; j < Ny; j++) { 442 for (k = 0; k < Nval; k++, Ptr++) { 443 vec[k][0].elements.Int[j] = *Ptr; 444 } 445 } 446 } 447 if (!strcmp (type, "int")) { 448 int *Ptr = data; 449 for (j = 0; j < Ny; j++) { 450 for (k = 0; k < Nval; k++, Ptr++) { 451 vec[k][0].elements.Int[j] = *Ptr; 452 } 453 } 454 } 455 if (!strcmp (type, "int64_t")) { 456 int64_t *Ptr = data; 457 for (j = 0; j < Ny; j++) { 458 for (k = 0; k < Nval; k++, Ptr++) { 459 vec[k][0].elements.Int[j] = *Ptr; 460 } 461 } 462 } 463 if (!strcmp (type, "float")) { 464 float *Ptr = data; 465 for (j = 0; j < Ny; j++) { 466 for (k = 0; k < Nval; k++, Ptr++) { 467 vec[k][0].elements.Flt[j] = *Ptr; 468 } 469 } 470 } 471 if (!strcmp (type, "double")) { 472 double *Ptr = data; 473 for (j = 0; j < Ny; j++) { 474 for (k = 0; k < Nval; k++, Ptr++) { 475 vec[k][0].elements.Flt[j] = *Ptr; 476 } 477 } 478 } 499 if (!VectorAssignData (vec, type, data, Ny, Nval)) ESCAPE ("bad column type %s", type); 500 479 501 } else { 480 502 // define the multifield vector names (Ny vectors x Nval elements) … … 489 511 } 490 512 491 if (!strcmp (type, "char")) { 492 char *Ptr = data; 493 for (j = 0; j < Ny; j++) { 494 for (k = 0; k < Nval; k++, Ptr++) { 495 vec[j][0].elements.Int[k] = *Ptr; 496 } 497 } 498 } 499 if (!strcmp (type, "short")) { 500 short *Ptr = data; 501 for (j = 0; j < Ny; j++) { 502 for (k = 0; k < Nval; k++, Ptr++) { 503 vec[j][0].elements.Int[k] = *Ptr; 504 } 505 } 506 } 507 if (!strcmp (type, "int")) { 508 int *Ptr = data; 509 for (j = 0; j < Ny; j++) { 510 for (k = 0; k < Nval; k++, Ptr++) { 511 vec[j][0].elements.Int[k] = *Ptr; 512 } 513 } 514 } 515 if (!strcmp (type, "int64_t")) { 516 int64_t *Ptr = data; 517 for (j = 0; j < Ny; j++) { 518 for (k = 0; k < Nval; k++, Ptr++) { 519 vec[j][0].elements.Int[k] = *Ptr; 520 } 521 } 522 } 523 if (!strcmp (type, "float")) { 524 float *Ptr = data; 525 for (j = 0; j < Ny; j++) { 526 for (k = 0; k < Nval; k++, Ptr++) { 527 vec[j][0].elements.Flt[k] = *Ptr; 528 } 529 } 530 } 531 if (!strcmp (type, "double")) { 532 double *Ptr = data; 533 for (j = 0; j < Ny; j++) { 534 for (k = 0; k < Nval; k++, Ptr++) { 535 vec[j][0].elements.Flt[k] = *Ptr; 536 } 537 } 538 } 513 if (!VectorAssignDataTranspose (vec, type, data, Ny, Nval)) ESCAPE ("bad column type %s", type); 539 514 } 540 515 free (data); … … 546 521 return (TRUE); 547 522 } 523 524 void read_vectors_cleanup () { 525 526 int i; 527 528 if (col) free (col); 529 if (coltype) free (coltype); 530 if (buffer) free (buffer); 531 if (listname) { 532 for (i = 0; i < Nvec; i++) { 533 if (listname[i]) free (listname[i]); 534 } 535 free (listname); 536 } 537 if (vec) free (vec); 538 } -
trunk/Ohana/src/opihi/dvo/Makefile
r36833 r37049 25 25 $(SRC)/dvo_host_utils.$(ARCH).o \ 26 26 $(SRC)/region_list.$(ARCH).o \ 27 $(SRC)/find_matches.$(ARCH).o \ 28 $(SRC)/photometry.$(ARCH).o 27 $(SRC)/photcode_ops.$(ARCH).o \ 28 $(SRC)/find_matches.$(ARCH).o 29 30 # $(SRC)/photometry.$(ARCH).o 31 32 broken = \ 33 $(SRC)/calextract.$(ARCH).o \ 34 $(SRC)/calmextract.$(ARCH).o \ 35 $(SRC)/ccd.$(ARCH).o \ 36 $(SRC)/cmd.$(ARCH).o \ 37 $(SRC)/dmagaves.$(ARCH).o \ 38 $(SRC)/dmagmeas.$(ARCH).o \ 39 $(SRC)/dmags.$(ARCH).o \ 40 $(SRC)/ddmags.$(ARCH).o \ 41 $(SRC)/fitcolors.$(ARCH).o 29 42 30 43 cmds = \ … … 32 45 $(SRC)/avmatch.$(ARCH).o \ 33 46 $(SRC)/badimages.$(ARCH).o \ 34 $(SRC)/calextract.$(ARCH).o \35 $(SRC)/calmextract.$(ARCH).o \36 47 $(SRC)/catdir.$(ARCH).o \ 37 $(SRC)/ccd.$(ARCH).o \38 48 $(SRC)/cmatch.$(ARCH).o \ 39 $(SRC)/cmd.$(ARCH).o \40 49 $(SRC)/cmpload.$(ARCH).o \ 41 50 $(SRC)/cmpread.$(ARCH).o \ 42 51 $(SRC)/coordimage.$(ARCH).o \ 43 52 $(SRC)/coordmosaic.$(ARCH).o \ 44 $(SRC)/ddmags.$(ARCH).o \45 53 $(SRC)/detrend.$(ARCH).o \ 46 $(SRC)/dmagaves.$(ARCH).o \47 $(SRC)/dmagmeas.$(ARCH).o \48 $(SRC)/dmags.$(ARCH).o \49 54 $(SRC)/dmt.$(ARCH).o \ 50 55 $(SRC)/elixir.$(ARCH).o \ 51 $(SRC)/fitcolors.$(ARCH).o \52 56 $(SRC)/fitsed.$(ARCH).o \ 53 57 $(SRC)/gcat.$(ARCH).o \ -
trunk/Ohana/src/opihi/dvo/avextract.c
r35416 r37049 166 166 needMeasures = FALSE; 167 167 for (i = 0; !needMeasures && (i < Nfields); i++) { 168 if (fields[i].magMode == MAG_NONE) continue; 169 if (fields[i].photcode == NULL) continue; // assert this? 168 if (fields[i].photcode == NULL) continue; // non-measure fields do not have a photcode 170 169 if (fields[i].photcode[0].type == PHOT_REF) needMeasures = TRUE; 171 170 if (fields[i].photcode[0].type == PHOT_DEP) needMeasures = TRUE; -
trunk/Ohana/src/opihi/dvo/avmatch.c
r36084 r37049 152 152 int needMeasures = FALSE; 153 153 for (i = 0; !needMeasures && (i < Nfields); i++) { 154 if (fields[i].magMode == MAG_NONE) continue;155 154 if (fields[i].photcode == NULL) continue; // assert this? 156 155 if (fields[i].photcode[0].type == PHOT_REF) needMeasures = TRUE; -
trunk/Ohana/src/opihi/dvo/fitsed.c
r34088 r37049 83 83 /* interpret command-line options */ 84 84 if ((selection = SetRegionSelection (&argc, argv)) == NULL) goto escape; 85 if (!SetPhotSelections (&argc, argv, 4)) goto usage;85 // if (!SetPhotSelections (&argc, argv, 4)) goto usage; 86 86 87 87 PLOT = FALSE; -
trunk/Ohana/src/opihi/dvo/gstar.c
r35109 r37049 15 15 GSTAR_UCDIST, 16 16 GSTAR_AVE_AP_MAG, 17 GSTAR_AVE_MAG_ 20,18 GSTAR_AVE_MAG_ 80,17 GSTAR_AVE_MAG_MIN, 18 GSTAR_AVE_MAG_MAX, 19 19 GSTAR_AVE_KRON_MAG, 20 20 GSTAR_AVE_KRON_MAG_ERR, … … 307 307 gprint (GP_LOG, "\n"); 308 308 309 /* M _20*/310 for (j = 0; j < Nsecfilt; j++) printPhotcodeSequence (&catalog.average[k], &catalog.secfilt[Nsecfilt*k], j, GSTAR_AVE_MAG_ 20);311 gprint (GP_LOG, "\n"); 312 313 /* M _80*/314 for (j = 0; j < Nsecfilt; j++) printPhotcodeSequence (&catalog.average[k], &catalog.secfilt[Nsecfilt*k], j, GSTAR_AVE_MAG_ 80);;309 /* Mmin */ 310 for (j = 0; j < Nsecfilt; j++) printPhotcodeSequence (&catalog.average[k], &catalog.secfilt[Nsecfilt*k], j, GSTAR_AVE_MAG_MIN); 311 gprint (GP_LOG, "\n"); 312 313 /* Mmax */ 314 for (j = 0; j < Nsecfilt; j++) printPhotcodeSequence (&catalog.average[k], &catalog.secfilt[Nsecfilt*k], j, GSTAR_AVE_MAG_MAX);; 315 315 gprint (GP_LOG, "\n"); 316 316 … … 374 374 int Nv = index[j]; 375 375 376 Mcat = PhotCat (&catalog.measure[Nv] );376 Mcat = PhotCat (&catalog.measure[Nv], MAG_CLASS_PSF); 377 377 if (INST) { 378 Mrel = PhotInst (&catalog.measure[Nv] );378 Mrel = PhotInst (&catalog.measure[Nv], MAG_CLASS_PSF); 379 379 } else { 380 Mrel = PhotRel (&catalog.measure[Nv], &catalog.average[k], &catalog.secfilt[k*Nsecfilt] );380 Mrel = PhotRel (&catalog.measure[Nv], &catalog.average[k], &catalog.secfilt[k*Nsecfilt], MAG_CLASS_PSF); 381 381 } 382 383 float dRoff = dvoOffsetR(&catalog.measure[Nv], &catalog.average[k]); 384 float dDoff = dvoOffsetD(&catalog.measure[Nv], &catalog.average[k]); 382 385 383 386 if (GetMeasures && !QUIET) { … … 387 390 gprint (GP_LOG, "%6.3f ", catalog.measure[Nv].dM); 388 391 gprint (GP_LOG, "%20s ", date); 389 gprint (GP_LOG, "%7.4f ", catalog.measure[Nv].dR); 390 gprint (GP_LOG, "%7.4f ", catalog.measure[Nv].dD); 392 393 gprint (GP_LOG, "%7.4f ", dRoff); 394 gprint (GP_LOG, "%7.4f ", dDoff); 391 395 gprint (GP_LOG, "0x%08x ", catalog.measure[Nv].photFlags); 392 396 gprint (GP_LOG, "0x%08x ", catalog.measure[Nv].dbFlags); … … 447 451 vec3[0].elements.Flt[N] = catalog.measure[Nv].airmass; 448 452 vec4[0].elements.Flt[N] = catalog.measure[Nv].photcode; 449 vec5[0].elements.Flt[N] = catalog.measure[Nv].dR;450 vec6[0].elements.Flt[N] = catalog.measure[Nv].dD;453 vec5[0].elements.Flt[N] = dRoff; 454 vec6[0].elements.Flt[N] = dDoff; 451 455 N ++; 452 456 if (N == NPTS - 1) { … … 561 565 case GSTAR_AVE_MAG_CHISQ: /* average mag chisq */ 562 566 if (seq == -1) { 563 print_ short (NAN_S_SHORT, NAN_S_SHORT);564 } else { 565 print_ short (pow (10.0, 0.01*secfilt[seq].Xm), secfilt[seq].Xm);567 print_double (NAN); 568 } else { 569 print_double (secfilt[seq].Mchisq); 566 570 } 567 571 break; … … 596 600 break; 597 601 598 case GSTAR_AVE_MAG_ 20: /* average ap mags */599 if (seq == -1) { 600 print_double (NAN); 601 } else { 602 print_ short (0.001*secfilt[seq].M_20, secfilt[seq].M_20);603 } 604 break; 605 606 case GSTAR_AVE_MAG_ 80: /* average ap mags */607 if (seq == -1) { 608 print_double (NAN); 609 } else { 610 print_ short (0.001*secfilt[seq].M_80, secfilt[seq].M_80);602 case GSTAR_AVE_MAG_MIN: /* average ap mags */ 603 if (seq == -1) { 604 print_double (NAN); 605 } else { 606 print_double (secfilt[seq].Mmin); 607 } 608 break; 609 610 case GSTAR_AVE_MAG_MAX: /* average ap mags */ 611 if (seq == -1) { 612 print_double (NAN); 613 } else { 614 print_double (secfilt[seq].Mmax); 611 615 } 612 616 break; … … 632 636 print_double (NAN); 633 637 } else { 634 print_double_exp (secfilt[seq].F luxPSF);638 print_double_exp (secfilt[seq].FpsfStk); 635 639 } 636 640 break; … … 640 644 print_double (NAN); 641 645 } else { 642 print_double_exp (secfilt[seq].dF luxPSF);646 print_double_exp (secfilt[seq].dFpsfStk); 643 647 } 644 648 break; … … 648 652 print_double (NAN); 649 653 } else { 650 print_double_exp (secfilt[seq].F luxKron);654 print_double_exp (secfilt[seq].FkronStk); 651 655 } 652 656 break; … … 656 660 print_double (NAN); 657 661 } else { 658 print_double_exp (secfilt[seq].dF luxKron);659 } 660 break; 661 662 } 663 } 662 print_double_exp (secfilt[seq].dFkronStk); 663 } 664 break; 665 666 } 667 } -
trunk/Ohana/src/opihi/dvo/imdata.c
r34088 r37049 3 3 int imdata (int argc, char **argv) { 4 4 5 off_t i, j, k, n,I;5 off_t i, j, k, I; 6 6 int N, NPTS, found, mode, TimeSelect, TimeFormat; 7 7 off_t Nregions, NREGIONS; … … 152 152 for (i = 0; i < catalog.Nmeasure; i++) { 153 153 if ((catalog.measure[i].t < start) || (catalog.measure[i].t > stop)) continue; 154 n = catalog.measure[i].averef; 155 vec[0].elements.Flt[N] = catalog.average[n].R - catalog.measure[i].dR / 3600.0; 154 vec[0].elements.Flt[N] = catalog.measure[i].R; 156 155 N++; 157 156 CHECK_REALLOCATE (vec[0].elements.Flt, opihi_flt, NPTS, N, 1000); … … 161 160 for (i = 0; i < catalog.Nmeasure; i++) { 162 161 if ((catalog.measure[i].t < start) || (catalog.measure[i].t > stop)) continue; 163 n = catalog.measure[i].averef; 164 vec[0].elements.Flt[N] = catalog.average[n].D - catalog.measure[i].dD / 3600.0; 162 vec[0].elements.Flt[N] = catalog.measure[i].D; 165 163 N++; 166 164 CHECK_REALLOCATE (vec[0].elements.Flt, opihi_flt, NPTS, N, 1000); … … 194 192 for (i = 0; i < catalog.Nmeasure; i++) { 195 193 if ((catalog.measure[i].t < start) || (catalog.measure[i].t > stop)) continue; 196 n = catalog.measure[i].averef;194 //n = catalog.measure[i].averef; 197 195 // vec[0].elements.Flt[N] = catalog.average[n].M; 198 196 N++; -
trunk/Ohana/src/opihi/dvo/imextract.c
r34088 r37049 185 185 gprint (GP_ERR, " Mcal : photometry calibration (mags)\n"); 186 186 gprint (GP_ERR, " dMcal : photometry calibration error (mags)\n"); 187 gprint (GP_ERR, " Xm: chisq of photometry calibration\n");187 gprint (GP_ERR, " Mchisq : chisq of photometry calibration\n"); 188 188 gprint (GP_ERR, " photcode : numeric photcode value for image\n"); 189 189 gprint (GP_ERR, " exptime : exposure duration (seconds)\n"); -
trunk/Ohana/src/opihi/dvo/init.c
r36833 r37049 66 66 {1, "avmatch", avmatch, "extract average data values matched to RA,DEC points"}, 67 67 {1, "badimages", badimages, "look for images with anomalous astrometry"}, 68 {1, "calextract", calextract, "extract photometry calibration"},69 {1, "calmextract", calmextract, "extract photometry calibration"},68 // {1, "calextract", calextract, "extract photometry calibration"}, 69 // {1, "calmextract", calmextract, "extract photometry calibration"}, 70 70 {1, "catdir", catdir_define,"re-define CATDIR"}, 71 {1, "ccd", ccd, "plot color-color diagram"},71 // {1, "ccd", ccd, "plot color-color diagram"}, 72 72 {1, "cmatch", cmatch, "match two catalogs"}, 73 {1, "cmd", cmd, "plot cmd of stars in current region"},73 // {1, "cmd", cmd, "plot cmd of stars in current region"}, 74 74 {1, "cmpload", cmpload, "load cmp file into ?"}, 75 75 {1, "cmpread", cmpread, "read data from cmp format files"}, … … 77 77 {1, "coordmosaic", coordmosaic, "generate a map of the distortion"}, 78 78 {1, "psastro_model", psastro_model, "save psastro-format astrometry model"}, 79 {1, "ddmags", ddmags, "plot magnitude differences"},79 // {1, "ddmags", ddmags, "plot magnitude differences"}, 80 80 {1, "detrend", detrend, "extract from detrend database?"}, 81 {1, "dmagaves", dmagaves, "foo"},82 {1, "dmagmeas", dmagmeas, "foo"},83 {1, "dmags", dmags, "plot differential magnitudes between filters"},81 // {1, "dmagaves", dmagaves, "foo"}, 82 // {1, "dmagmeas", dmagmeas, "foo"}, 83 // {1, "dmags", dmags, "plot differential magnitudes between filters"}, 84 84 {1, "dmt", dmt, "plot mag scatter"}, 85 85 {1, "elixir", elixir, "talk to elixir"}, 86 {1, "fitcolors", fitcolors, "fit chip-to-chip color terms"},86 // {1, "fitcolors", fitcolors, "fit chip-to-chip color terms"}, 87 87 {1, "fitsed", fitsed, "fit stellar SEDs to objects"}, 88 88 {1, "gcat", gcat, "get catalog at location"}, -
trunk/Ohana/src/opihi/dvo/lcurve.c
r34584 r37049 129 129 if (ErrorBars) dYvec.elements.Flt[N] = catalog.measure[m].dM; 130 130 Xvec.elements.Flt[N] = TimeValue (catalog.measure[m].t, TimeReference, TimeFormat); 131 Yvec.elements.Flt[N] = PhotCat (&catalog.measure[m] );131 Yvec.elements.Flt[N] = PhotCat (&catalog.measure[m], MAG_CLASS_PSF); 132 132 /**** need to use PhotRel optionally here ****/ 133 133 N++; -
trunk/Ohana/src/opihi/dvo/lightcurve.c
r27435 r37049 121 121 dmvec[0].elements.Flt[N] = catalog.measure[m].dM; 122 122 if (RELPHOT) { 123 mvec[0].elements.Flt[N] = PhotCat (&catalog.measure[m] );123 mvec[0].elements.Flt[N] = PhotCat (&catalog.measure[m], MAG_CLASS_PSF); 124 124 } else { 125 mvec[0].elements.Flt[N] = PhotRel (&catalog.measure[m], &catalog.average[k], &catalog.secfilt[k*Nsecfilt] );125 mvec[0].elements.Flt[N] = PhotRel (&catalog.measure[m], &catalog.average[k], &catalog.secfilt[k*Nsecfilt], MAG_CLASS_PSF); 126 126 } 127 127 N++; -
trunk/Ohana/src/opihi/dvo/photometry.c
r36630 r37049 41 41 } 42 42 43 # if (0) 43 44 /* selection criteria */ 44 45 /* selections based on Measure quantities */ … … 78 79 static time_t TimeReference; 79 80 static int TimeFormat; 80 81 # endif 82 83 # if (0) 81 84 int GetTimeSelection (time_t *tz, time_t *te) { 82 85 *tz = tzero; … … 298 301 return; 299 302 } 300 301 /* (re)load photcodes from photcode table */ 302 int InitPhotcodes () { 303 304 double ZERO_POINT; 305 char MasterPhotcodeFile[256]; 306 char CatdirPhotcodeFile[256]; 307 char *catdir; 308 309 if (VarConfig ("ZERO_PT", "%lf", &ZERO_POINT) == (char *) NULL) { 310 gprint (GP_ERR, "ZERO_PT undefined in config\n"); 311 return (FALSE); 312 } 313 SetZeroPoint (ZERO_POINT); 314 315 catdir = GetCATDIR(); 316 if (catdir == NULL) { 317 CatdirPhotcodeFile[0] = 0; 318 } else { 319 sprintf (CatdirPhotcodeFile, "%s/Photcodes.dat", catdir); 320 } 321 322 if (VarConfig ("PHOTCODE_FILE", "%s", MasterPhotcodeFile) == (char *) NULL) { 323 gprint (GP_ERR, "PHOTCODE_FILE undefined in config\n"); 324 return (FALSE); 325 } 326 327 // XXX now that DVO does not allow write access, we can drop the MasterPhotcodeFile 328 if (!LoadPhotcodes (CatdirPhotcodeFile, MasterPhotcodeFile, FALSE)) { 329 gprint (GP_ERR, "error loading photcode table %s or master file %s\n", CatdirPhotcodeFile, MasterPhotcodeFile); 330 return (FALSE); 331 } 332 return (TRUE); 333 } 334 303 # endif 304 305 # if (0) 335 306 int ListPhotSelections () { 336 307 … … 1121 1092 return (list); 1122 1093 } 1123 1094 # endif 1095 1096 # if (0) 1124 1097 double GetMeasure (int param, Average *average, Measure *measure, double mag) { 1125 1098 … … 1135 1108 break; 1136 1109 case MEAS_RA: /* OK */ 1137 value = average[0].R - measure[0].dR / 3600.0;1110 value = measure[0].R; 1138 1111 break; 1139 1112 case MEAS_DEC: /* OK */ 1140 value = average[0].D - measure[0].dD / 3600.0;1113 value = measure[0].D; 1141 1114 break; 1142 1115 case MEAS_DOPHOT: /* OK */ … … 1156 1129 break; 1157 1130 case MEAS_RA_OFFSET: /* OK */ 1158 value = measure[0].dR;1131 value = dvoOffsetR(measure, average); 1159 1132 break; 1160 1133 case MEAS_DEC_OFFSET: /* OK */ 1161 value = measure[0].dD;1134 value = dvoOffsetD(measure, average); 1162 1135 break; 1163 1136 case MEAS_FWHM: /* OK */ … … 1172 1145 value = measure[0].Xccd; 1173 1146 # else 1174 ra = average[0].R - measure[0].dR / 3600.0;1175 dec = average[0].D - measure[0].dD / 3600.0;1147 ra = measure[0].R; 1148 dec = measure[0].D; 1176 1149 image = MatchImageDVO (measure[0].t, measure[0].photcode, measure[0].imageID); 1177 1150 if (image == NULL) break; … … 1185 1158 value = measure[0].Yccd; 1186 1159 # else 1187 ra = average[0].R - measure[0].dR / 3600.0;1188 dec = average[0].D - measure[0].dD / 3600.0;1160 ra = measure[0].R; 1161 dec = measure[0].D; 1189 1162 image = MatchImageDVO (measure[0].t, measure[0].photcode, measure[0].imageID); 1190 1163 if (image == NULL) break; … … 1195 1168 # if 0 1196 1169 case MEAS_XMOSAIC: /* OK */ 1197 ra = average[0].R - measure[0].dR / 3600.0;1198 dec = average[0].D - measure[0].dD / 3600.0;1170 ra = measure[0].R; 1171 dec = measure[0].D; 1199 1172 mosaic = MatchMosaic (measure[0].t, measure[0].photcode); // XXX not used anymore 1200 1173 if (mosaic == NULL) break; … … 1203 1176 break; 1204 1177 case MEAS_YMOSAIC: /* OK */ 1205 ra = average[0].R - measure[0].dR / 3600.0;1206 dec = average[0].D - measure[0].dD / 3600.0;1178 ra = measure[0].R; 1179 dec = measure[0].D; 1207 1180 mosaic = MatchMosaic (measure[0].t, measure[0].photcode); // XXX not used anymore 1208 1181 if (mosaic == NULL) break; … … 1214 1187 return (value); 1215 1188 } 1189 # endif 1216 1190 1217 1191 /** the mosaic entries do not use the registered mosaic found -
trunk/Ohana/src/opihi/dvo/pmeasure.c
r34088 r37049 203 203 if (TimeSelect && (catalog.measure[m+k].t > tzero + trange)) continue; 204 204 if ((PhotcodeClip != -1) && (catalog.measure[m+k].photcode != PhotcodeClip)) continue; 205 mag = PhotCat (&catalog.measure[m+k] );205 mag = PhotCat (&catalog.measure[m+k], MAG_CLASS_PSF); 206 206 Zvec[Npts] = MIN (1.0, MAX (0.01, (mag - Mz) / Mr)); 207 207 if (LimExclude && (Zvec[Npts] > 0.99)) continue; 208 208 if (Zvec[Npts] < 0.011) continue; 209 R = catalog. average[i].R - catalog.measure[m+k].dR/3600.0;210 D = catalog. average[i].D - catalog.measure[m+k].dD/3600.0;209 R = catalog.measure[m+k].R; 210 D = catalog.measure[m+k].D; 211 211 // XXX drop this check 212 212 if ((R < Rmin) || (R > Rmax) || (D < -90.0) || (D > 90.0)) { 213 213 char *date; 214 214 date = ohana_sec_to_date (catalog.measure[m+k].t); 215 gprint (GP_LOG, "out: %f, %f : %s : (%f, %f) + (%f, %f)\n", R, D, date, catalog.average[i].R, catalog.average[i].D, catalog.measure[m+k]. dR/3600.0, catalog.measure[m+k].dD/3600.0);215 gprint (GP_LOG, "out: %f, %f : %s : (%f, %f) + (%f, %f)\n", R, D, date, catalog.average[i].R, catalog.average[i].D, catalog.measure[m+k].R, catalog.measure[m+k].D); 216 216 free (date); 217 217 } -
trunk/Ohana/src/opihi/dvo/subpix.c
r31635 r37049 138 138 for (j = 0; j < Nmeasure; j++) { 139 139 if (measure[j].t == Timage) { 140 Mabs = PhotCat (&measure[j] );140 Mabs = PhotCat (&measure[j], MAG_CLASS_PSF); 141 141 RD_to_XY (&X, &Y, Ra, Dec, &image[I].coords); 142 142 t = TimeValue (measure[j].t, TimeReference, TimeFormat); -
trunk/Ohana/src/opihi/include/dvomath.h
r36375 r37049 170 170 Vector **ReadVectorTableFITS PROTO((char *filename, char *extname, int *Nvec)); 171 171 172 int VectorAssignData PROTO((Vector **vec, char *type, void *data, int Nrows, int Nval)); 173 int VectorAssignDataTranspose PROTO((Vector **vec, char *type, void *data, int Nrows, int Nval)); 174 172 175 /* buffer handling */ 173 176 Buffer *InitBuffer PROTO((void)); -
trunk/Ohana/src/opihi/include/dvoshell.h
r35416 r37049 90 90 int wordhash PROTO((char *word)); 91 91 92 int GetMagMode PROTO((char *string));93 PhotCode *ParsePhotcodeField PROTO((char *field, int *mode, int def));94 int ParseMeasureField PROTO((dbField *field, char *fieldName));95 int ParseAverageField PROTO((dbField *field, char *fieldName));96 int ParseImageField PROTO((dbField *field, char *fieldName));97 98 dbValue dbExtractMeasures PROTO((Average *average, SecFilt *secfilt, Measure *measure, dbField *field));99 dbValue dbExtractImages PROTO((Image *image, off_t Nimage, off_t N, dbField *field));100 101 92 int HostTableLaunchJobs PROTO((SkyList *sky, HostTable *table, char *basecmd, char *options, int VERBOSE)); 102 93 int HostTableParallelOps PROTO((SkyList *sky, int argc, char **argv, char *ResultFile, int ReadVectors, int Nelements, int VERBOSE)); -
trunk/Ohana/src/opihi/include/shell.h
r33662 r37049 166 166 // wrap readline in ohana mem functions: 167 167 char *opihi_readline PROTO((char *prompt)); 168 169 int set_list_varname (char *line, char *base, int N, int excelStyle); 168 170 169 171 /* gprint functions */ -
trunk/Ohana/src/opihi/lib.shell/VectorIO.c
r35109 r37049 134 134 FTable ftable; 135 135 136 int i, j , k;136 int i, j; 137 137 FILE *f = NULL; 138 138 … … 202 202 assert (status); 203 203 204 # define ASSIGN_DATA(TYPE,OPTYPE) \ 205 /* assign the data to the actual vector */ \ 206 if (!strcmp (type, #TYPE)) { \ 207 TYPE *Ptr = data; \ 208 for (k = 0; k < Nrows; k++) { \ 209 for (j = 0; j < Nval; j++, Ptr++) { \ 210 vec[Nvec + j][0].elements.OPTYPE[k] = *Ptr; \ 211 } } } 212 213 // assign the data to the actual vector 214 ASSIGN_DATA(char, Int); 215 ASSIGN_DATA(short, Int); 216 ASSIGN_DATA(int, Int); 217 ASSIGN_DATA(int64_t, Int); 218 ASSIGN_DATA(float, Flt); 219 ASSIGN_DATA(double, Flt); 204 if (!VectorAssignData(&vec[Nvec], type, data, Nrows, Nval)) { 205 // free unneeded things 206 gprint (GP_ERR, "trouble parsing data block type %s\n", type); 207 return (NULL); 208 } 220 209 221 210 free (data); … … 241 230 // return (FALSE); 242 231 } 232 233 # define ASSIGN_DATA(TYPE,DTYPE,OPTYPE) \ 234 /* assign the data to the actual vector */ \ 235 if (!strcmp (type, #TYPE)) { \ 236 DTYPE *Ptr = data; \ 237 for (k = 0; k < Nrows; k++) { \ 238 for (j = 0; j < Nval; j++, Ptr++) { \ 239 vec[j][0].elements.OPTYPE[k] = *Ptr; \ 240 } } return TRUE; } 241 242 int VectorAssignData (Vector **vec, char *type, void *data, int Nrows, int Nval) { 243 244 int j, k; 245 246 // assign the data to the actual vector 247 ASSIGN_DATA(byte, char, Int); 248 ASSIGN_DATA(char, char, Int); 249 ASSIGN_DATA(short, short, Int); 250 ASSIGN_DATA(int, int, Int); 251 ASSIGN_DATA(int64_t, int64_t, Int); 252 ASSIGN_DATA(float, float, Flt); 253 ASSIGN_DATA(double, double, Flt); 254 255 return FALSE; 256 } 257 258 # define ASSIGN_DATA_TRANSPOSE(TYPE,DTYPE,OPTYPE) \ 259 /* assign the data to the actual vector */ \ 260 if (!strcmp (type, #TYPE)) { \ 261 DTYPE *Ptr = data; \ 262 for (k = 0; k < Nrows; k++) { \ 263 for (j = 0; j < Nval; j++, Ptr++) { \ 264 vec[k][0].elements.OPTYPE[j] = *Ptr; \ 265 } } return TRUE; } 266 267 int VectorAssignDataTranspose (Vector **vec, char *type, void *data, int Nrows, int Nval) { 268 269 int j, k; 270 271 // assign the data to the actual vector 272 ASSIGN_DATA_TRANSPOSE(byte, char, Int); 273 ASSIGN_DATA_TRANSPOSE(char, char, Int); 274 ASSIGN_DATA_TRANSPOSE(short, short, Int); 275 ASSIGN_DATA_TRANSPOSE(int, int, Int); 276 ASSIGN_DATA_TRANSPOSE(int64_t, int64_t, Int); 277 ASSIGN_DATA_TRANSPOSE(float, float, Flt); 278 ASSIGN_DATA_TRANSPOSE(double, double, Flt); 279 280 return FALSE; 281 } -
trunk/Ohana/src/opihi/lib.shell/string.c
r33662 r37049 322 322 } 323 323 324 int set_list_varname (char *line, char *base, int N, int excelStyle) { 325 326 int i; 327 328 // A-Z correspond to 0 - 25 329 330 if (excelStyle) { 331 float f = log(26.0); 332 float g = (N == 0) ? 0.0 : log(1.0*N); 333 int Ndigit = (int) (g / f) + 1; 334 if (Ndigit > 10) { 335 sprintf (line, "%s:ZZZZZZZZZZ", base); 336 return FALSE; 337 } 338 char name[12]; 339 memset (name, 0, 12); 340 for (i = 0; i < Ndigit; i++) { 341 float Npow = Ndigit - i - 1; 342 float g = pow(26.0, Npow); 343 int V = (int) (N / g); 344 name[i] = (Npow == 0.0) ? 'A' + V : 'A' + V - 1; 345 N -= V * g; 346 } 347 sprintf (line, "%s:%s", base, name); 348 } else { 349 sprintf (line, "%s:%d", base, N); 350 } 351 return TRUE; 352 }
Note:
See TracChangeset
for help on using the changeset viewer.
