Changeset 38419
- Timestamp:
- Jun 6, 2015, 9:10:50 PM (11 years ago)
- Location:
- branches/eam_branches/ohana.20150429/src/libdvo
- Files:
-
- 14 edited
-
include/dvo.h (modified) (8 diffs)
-
include/ps1_v5_defs.h (modified) (1 diff)
-
src/dvo_catalog.c (modified) (11 diffs)
-
src/dvo_catalog_create.c (modified) (3 diffs)
-
src/dvo_catalog_mef.c (modified) (4 diffs)
-
src/dvo_catalog_split.c (modified) (46 diffs)
-
src/dvo_convert.c (modified) (6 diffs)
-
src/dvo_convert_PS1_DEV_2.c (modified) (2 diffs)
-
src/dvo_convert_PS1_V1.c (modified) (2 diffs)
-
src/dvo_convert_PS1_V2.c (modified) (2 diffs)
-
src/dvo_convert_PS1_V3.c (modified) (2 diffs)
-
src/dvo_convert_PS1_V4.c (modified) (3 diffs)
-
src/dvo_convert_PS1_V5.c (modified) (9 diffs)
-
src/flatcorr_io.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ohana.20150429/src/libdvo/include/dvo.h
r38414 r38419 54 54 DVO_LOAD_STARPAR = 0x1000, 55 55 DVO_SKIP_STARPAR = 0x2000, 56 DVO_LOAD_GAL SHAPE= 0x4000,57 DVO_SKIP_GAL SHAPE= 0x8000,56 DVO_LOAD_GALPHOT = 0x4000, 57 DVO_SKIP_GALPHOT = 0x8000, 58 58 } DVOCatFlags; 59 59 … … 494 494 unsigned short Nmeasure; // number of psf measurements 495 495 unsigned short Nmissing; // number of missings 496 unsigned short Ngal shape; // number of extended measurements496 unsigned short Ngalphot; // number of extended measurements 497 497 uint32_t measureOffset; // offset to first psf measurement 498 498 uint32_t missingOffset; // offset to first missing obs … … 714 714 unsigned short Nlensing; // number of lensing measurements 715 715 unsigned short Nlensobj; // number of lensing measurements 716 unsigned short Ngal shape; // number of galshapemeasurements716 unsigned short Ngalphot; // number of galphot measurements 717 717 int measureOffset; // offset to first psf measurement 718 718 int missingOffset; // offset to first missing obs 719 719 int lensingOffset; // offset to first lensing obs 720 720 int lensobjOffset; // offset to mean lensing data 721 int gal shapeOffset; // offset to extended object entry721 int galphotOffset; // offset to extended object entry 722 722 int starparOffset; // offset to stellar parameter data 723 723 float refColorBlue; // color of astrometry ref stars … … 755 755 Lensobj *lensobj; 756 756 StarPar *starpar; 757 Gal Shape *galshape;757 GalPhot *galphot; 758 758 759 759 int Nsecfilt; /* number of secfilt entries for each average entry */ 760 off_t Naverage, Nmeasure, Nmissing, Nlensing, Nlensobj, Nstarpar, Ngal shape, Nsecfilt_mem; /* current number of each component in memory */761 off_t Naverage_disk, Nmeasure_disk, Nmissing_disk, Nlensing_disk, Nlensobj_disk, Nstarpar_disk, Ngal shape_disk, Nsecfilt_disk; /* current number of each component on disk */762 off_t Naverage_off, Nmeasure_off, Nmissing_off, Nlensing_off, Nlensobj_off, Nstarpar_off, Ngal shape_off, Nsecfilt_off; /* index of first loaded data value */760 off_t Naverage, Nmeasure, Nmissing, Nlensing, Nlensobj, Nstarpar, Ngalphot, Nsecfilt_mem; /* current number of each component in memory */ 761 off_t Naverage_disk, Nmeasure_disk, Nmissing_disk, Nlensing_disk, Nlensobj_disk, Nstarpar_disk, Ngalphot_disk, Nsecfilt_disk; /* current number of each component on disk */ 762 off_t Naverage_off, Nmeasure_off, Nmissing_off, Nlensing_off, Nlensobj_off, Nstarpar_off, Ngalphot_off, Nsecfilt_off; /* index of first loaded data value */ 763 763 764 764 // note that we use these for the full-sky relphot analysis … … 782 782 struct Catalog *lensobj_catalog; /* lensobj catalog data (split) */ 783 783 struct Catalog *starpar_catalog; /* starpar catalog data (split) */ 784 struct Catalog *gal shape_catalog; /* galshapecatalog data (split) */784 struct Catalog *galphot_catalog; /* galphot catalog data (split) */ 785 785 786 786 unsigned int objID; … … 982 982 Lensobj *FtableToLensobj (FTable *ftable, Average *average, off_t *Nlensobj, DVOCatFormat *format, char nativeOrder); 983 983 StarPar *FtableToStarPar (FTable *ftable, Average *average, off_t *Nstarpar, DVOCatFormat *format, char nativeOrder); 984 Gal Shape *FtableToGalShape (FTable *ftable, Average *average, off_t *Ngalshape, DVOCatFormat *format, char nativeOrder);984 GalPhot *FtableToGalPhot (FTable *ftable, Average *average, off_t *Ngalphot, DVOCatFormat *format, char nativeOrder); 985 985 986 986 int FtableToImage (FTable *ftable, Header *theader, DVOCatFormat *format); … … 992 992 int LensobjToFtable (FTable *ftable, Lensobj *lensobj, off_t Nlensobj, DVOCatFormat format, int swapFromNative); 993 993 int StarParToFtable (FTable *ftable, StarPar *starpar, off_t Nstarpar, DVOCatFormat format, int swapFromNative); 994 int Gal ShapeToFtable (FTable *ftable, GalShape *galshape, off_t Ngalshape, DVOCatFormat format, int swapFromNative);994 int GalPhotToFtable (FTable *ftable, GalPhot *galphot, off_t Ngalphot, DVOCatFormat format, int swapFromNative); 995 995 996 996 int ImageToFtable (FTable *ftable, Header *theader, DVOCatFormat format); … … 1128 1128 void dvo_lensobj_init (Lensobj *lensobj, int toZero); 1129 1129 void dvo_starpar_init (StarPar *starpar); 1130 void dvo_gal shape_init (GalShape *galshape);1130 void dvo_galphot_init (GalPhot *galphot); 1131 1131 1132 1132 void InitRegionHosts (RegionHostInfo *hosts, int Nhosts, int NHOSTS); -
branches/eam_branches/ohana.20150429/src/libdvo/include/ps1_v5_defs.h
r38331 r38419 23 23 StarPar_PS1_V5 *StarParInternalTo_PS1_V5 (StarPar *in, off_t Nvalues); 24 24 25 Gal Shape *GalShape_PS1_V5_ToInternal (GalShape_PS1_V5 *in, off_t Nvalues);26 Gal Shape_PS1_V5 *GalShapeInternalTo_PS1_V5 (GalShape*in, off_t Nvalues);25 GalPhot *GalPhot_PS1_V5_ToInternal (GalPhot_PS1_V5 *in, off_t Nvalues); 26 GalPhot_PS1_V5 *GalPhotInternalTo_PS1_V5 (GalPhot *in, off_t Nvalues); 27 27 28 28 PhotCode *PhotCode_PS1_V5_To_Internal (PhotCode_PS1_V5 *in, off_t Nvalues); -
branches/eam_branches/ohana.20150429/src/libdvo/src/dvo_catalog.c
r38414 r38419 176 176 average->Nlensobj = 0; 177 177 average->Nstarpar = 0; 178 average->Ngal shape= 0;178 average->Ngalphot = 0; 179 179 180 180 average->measureOffset = -1; … … 183 183 average->lensobjOffset = -1; 184 184 average->starparOffset = -1; 185 average->gal shapeOffset = -1;185 average->galphotOffset = -1; 186 186 187 187 average->refColorBlue = NAN; … … 511 511 512 512 // init all data, or just catalog data 513 void dvo_gal shape_init (GalShape *galshape) {514 gal shape->Xfit = NAN;515 gal shape->Yfit = NAN;516 gal shape->mag = NAN;517 gal shape->magErr = NAN;518 gal shape->majorAxis = NAN;519 gal shape->minorAxis = NAN;520 gal shape->majorAxisErr = NAN;521 gal shape->minorAxisErr = NAN;522 gal shape->theta = NAN;523 gal shape->theta_err = NAN;524 gal shape->index = NAN;525 gal shape->chisq = NAN;526 gal shape->Npix = 0;527 528 gal shape->detID = -1;529 gal shape->objID = -1;530 gal shape->catID = -1;531 gal shape->imageID = -1;532 533 gal shape->photcode = 0;534 gal shape->modelType = 0;513 void dvo_galphot_init (GalPhot *galphot) { 514 galphot->Xfit = NAN; 515 galphot->Yfit = NAN; 516 galphot->mag = NAN; 517 galphot->magErr = NAN; 518 galphot->majorAxis = NAN; 519 galphot->minorAxis = NAN; 520 galphot->majorAxisErr = NAN; 521 galphot->minorAxisErr = NAN; 522 galphot->theta = NAN; 523 galphot->theta_err = NAN; 524 galphot->index = NAN; 525 galphot->chisq = NAN; 526 galphot->Npix = 0; 527 528 galphot->detID = -1; 529 galphot->objID = -1; 530 galphot->catID = -1; 531 galphot->imageID = -1; 532 533 galphot->photcode = 0; 534 galphot->modelType = 0; 535 535 } 536 536 … … 582 582 INIT_TABLE(lensobj); 583 583 INIT_TABLE(starpar); 584 INIT_TABLE(gal shape);584 INIT_TABLE(galphot); 585 585 586 586 catalog[0].objID = 0; … … 618 618 if (catalog[0].f == NULL) return (DVO_CAT_OPEN_FAIL); 619 619 620 fseeko (catalog[0].f, 0, SEEK_SET); 620 if (fseeko (catalog[0].f, 0, SEEK_SET)) { 621 perror ("fseeko: "); 622 exit (1); 623 } 621 624 return (DVO_CAT_OPEN_OK); 622 625 } … … 630 633 631 634 if (fflush (catalog[0].f)) { 632 fprintf (stderr, "failed to flush file\n"); 635 perror ("fflush: "); 636 fprintf (stderr, "failed to flush file %s\n", catalog[0].filename); 633 637 return FALSE; 634 638 } … … 657 661 if (catalog[0].lensobj_catalog) { if (!dvo_catalog_unlock (catalog[0].lensobj_catalog)) { fprintf (stderr, "failed to unlock lensobj\n"); return (0); }} 658 662 if (catalog[0].starpar_catalog) { if (!dvo_catalog_unlock (catalog[0].starpar_catalog)) { fprintf (stderr, "failed to unlock starpar\n"); return (0); }} 663 if (catalog[0].galphot_catalog) { if (!dvo_catalog_unlock (catalog[0].galphot_catalog)) { fprintf (stderr, "failed to unlock galphot\n"); return (0); }} 659 664 } 660 665 return (1); … … 938 943 free (catalog[0].starpar_catalog); 939 944 } 945 if (catalog[0].galphot_catalog) { 946 free (catalog[0].galphot_catalog[0].filename); 947 dvo_catalog_free (catalog[0].galphot_catalog); 948 free (catalog[0].galphot_catalog); 949 } 940 950 } 941 951 dvo_catalog_free_data (catalog); … … 981 991 catalog[0].Nstarpar = 0; 982 992 catalog[0].starpar = NULL; 993 } 994 if (catalog[0].galphot) { 995 free (catalog[0].galphot); 996 catalog[0].Ngalphot = 0; 997 catalog[0].galphot = NULL; 983 998 } 984 999 if (catalog[0].nOwn_t) { free (catalog[0].nOwn_t); catalog[0].nOwn_t = NULL; } … … 1103 1118 } 1104 1119 } 1120 if (catalog[0].galphot_catalog != NULL) { 1121 if (catalog[0].Ngalphot_disk == 0) { 1122 // need to relock (and re-open) file for close elsewhere 1123 status = dvo_catalog_lock (catalog[0].galphot_catalog, lockmode); 1124 } else { 1125 if (!dvo_catalog_backup (catalog[0].galphot_catalog, FALSE)) { 1126 return FALSE; 1127 } 1128 } 1129 } 1105 1130 } 1106 1131 return TRUE; … … 1159 1184 } 1160 1185 } 1186 if ((catalog[0].galphot_catalog != NULL) && (catalog[0].Ngalphot_disk > 0)) { 1187 if (!dvo_catalog_unlink_backup (catalog[0].galphot_catalog, FALSE)) { 1188 return FALSE; 1189 } 1190 } 1161 1191 } 1162 1192 return TRUE; -
branches/eam_branches/ohana.20150429/src/libdvo/src/dvo_catalog_create.c
r38348 r38419 33 33 catalog[0].lensobj_catalog = dvo_catalog_create_subcat (catalog, "cpy", "LENSOBJ"); 34 34 catalog[0].starpar_catalog = dvo_catalog_create_subcat (catalog, "cpz", "STARPAR"); 35 catalog[0].gal shape_catalog = dvo_catalog_create_subcat (catalog, "cpq", "GALSHAPE");35 catalog[0].galphot_catalog = dvo_catalog_create_subcat (catalog, "cpq", "GALPHOT"); 36 36 37 37 // lock the additional split files … … 61 61 exit (2); 62 62 } 63 if (dvo_catalog_lock (catalog[0].gal shape_catalog, catalog[0].lockmode) != DVO_CAT_OPEN_EMPTY) {63 if (dvo_catalog_lock (catalog[0].galphot_catalog, catalog[0].lockmode) != DVO_CAT_OPEN_EMPTY) { 64 64 fprintf (stderr, "error with file lock\n"); 65 65 exit (2); … … 93 93 ALLOCATE (catalog[0].lensobj, Lensobj, 1); 94 94 ALLOCATE (catalog[0].starpar, StarPar, 1); 95 ALLOCATE (catalog[0].gal shape, GalShape, 1);95 ALLOCATE (catalog[0].galphot, GalPhot, 1); 96 96 97 97 /* setup secondary filters to match photcodes: -
branches/eam_branches/ohana.20150429/src/libdvo/src/dvo_catalog_mef.c
r38351 r38419 47 47 GET_TABLE_SIZES ("NLENSOBJ", lensobj, Nlensobj_disk, FALSE); 48 48 GET_TABLE_SIZES ("NSTARPAR", starpar, Nstarpar_disk, FALSE); 49 GET_TABLE_SIZES ("NGAL SHAPE", galshape, Ngalshape_disk, FALSE);49 GET_TABLE_SIZES ("NGALPHOT", galphot, Ngalphot_disk, FALSE); 50 50 51 51 /** Nsecfilt is unusual: it does not list the number of data items in the table … … 280 280 } 281 281 282 /* read Gal Shapetable header */283 if (!gfits_fread_header (catalog[0].f, &header)) { 284 if (VERBOSE) fprintf (stderr, "can't read table gal shapeheader");285 return (FALSE); 286 } 287 /* read Gal Shapetable data */288 if (catalog[0].catflags & DVO_LOAD_GAL SHAPE) {289 if (!gfits_fread_ftable_data (catalog[0].f, &ftable, FALSE)) { 290 if (VERBOSE) fprintf (stderr, "can't read table gal shapedata");291 return (FALSE); 292 } 293 catalog[0].gal shape = FtableToGalShape (&ftable, catalog[0].average, &catalog[0].Ngalshape, &catalog[0].catformat, FALSE);294 if (Ngal shape != catalog[0].Ngalshape_disk) {295 fprintf (stderr, "Warning: mismatch between Ngal shape in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n", Ngalshape, catalog[0].Ngalshape_disk);296 } 297 catalog[0].Ngal shape = catalog[0].Ngalshape_disk;298 catalog[0].Ngal shape_off = 0;299 } else { 300 Nbytes = gfits_data_size (&header); 301 fseeko (catalog[0].f, Nbytes, SEEK_CUR); 302 ALLOCATE (catalog[0].gal shape, GalShape, 1);303 catalog[0].Ngal shape= 0;304 catalog[0].Ngal shape_off = catalog[0].Ngalshape_disk;282 /* read GalPhot table header */ 283 if (!gfits_fread_header (catalog[0].f, &header)) { 284 if (VERBOSE) fprintf (stderr, "can't read table galphot header"); 285 return (FALSE); 286 } 287 /* read GalPhot table data */ 288 if (catalog[0].catflags & DVO_LOAD_GALPHOT) { 289 if (!gfits_fread_ftable_data (catalog[0].f, &ftable, FALSE)) { 290 if (VERBOSE) fprintf (stderr, "can't read table galphot data"); 291 return (FALSE); 292 } 293 catalog[0].galphot = FtableToGalPhot (&ftable, catalog[0].average, &catalog[0].Ngalphot, &catalog[0].catformat, FALSE); 294 if (Ngalphot != catalog[0].Ngalphot_disk) { 295 fprintf (stderr, "Warning: mismatch between Ngalphot in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n", Ngalphot, catalog[0].Ngalphot_disk); 296 } 297 catalog[0].Ngalphot = catalog[0].Ngalphot_disk; 298 catalog[0].Ngalphot_off = 0; 299 } else { 300 Nbytes = gfits_data_size (&header); 301 fseeko (catalog[0].f, Nbytes, SEEK_CUR); 302 ALLOCATE (catalog[0].galphot, GalPhot, 1); 303 catalog[0].Ngalphot = 0; 304 catalog[0].Ngalphot_off = catalog[0].Ngalphot_disk; 305 305 } 306 306 … … 356 356 gfits_modify (&catalog[0].header, "NLENSOBJ", OFF_T_FMT, 1, catalog[0].Nlensobj); 357 357 gfits_modify (&catalog[0].header, "NSTARPAR", OFF_T_FMT, 1, catalog[0].Nstarpar); 358 gfits_modify (&catalog[0].header, "NGAL SHAPE", OFF_T_FMT, 1, catalog[0].Ngalshape);358 gfits_modify (&catalog[0].header, "NGALPHOT", OFF_T_FMT, 1, catalog[0].Ngalphot); 359 359 360 360 gfits_modify_alt (&catalog[0].header, "EXTEND", "%t", 1, TRUE); … … 476 476 gfits_free_header (&header); 477 477 478 /* write out Gal Shapetable (convert to FITS table format) */479 Gal ShapeToFtable (&ftable, catalog[0].galshape, catalog[0].Ngalshape, catalog[0].catformat, TRUE);478 /* write out GalPhot table (convert to FITS table format) */ 479 GalPhotToFtable (&ftable, catalog[0].galphot, catalog[0].Ngalphot, catalog[0].catformat, TRUE); 480 480 if (!gfits_fwrite_Theader (catalog[0].f, &header)) { 481 481 fprintf (stderr, "can't write table header"); -
branches/eam_branches/ohana.20150429/src/libdvo/src/dvo_catalog_split.c
r38414 r38419 89 89 perror ("dvo_catalog_save_subset: "); 90 90 fprintf (stderr, "failed to seek to beginning\n"); 91 return FALSE; 91 92 } 92 93 … … 197 198 if (!strcmp (name, "LENSOBJ")) return (DVO_CAT_OPEN_EMPTY); 198 199 if (!strcmp (name, "STARPAR")) return (DVO_CAT_OPEN_EMPTY); 199 if (!strcmp (name, "GAL SHAPE")) return (DVO_CAT_OPEN_EMPTY);200 if (!strcmp (name, "GALPHOT")) return (DVO_CAT_OPEN_EMPTY); 200 201 return (DVO_CAT_OPEN_FAIL); 201 202 } … … 226 227 } 227 228 Nskip = gfits_data_size (&subcat[0].header); 228 fseeko (subcat[0].f, Nskip, SEEK_CUR);229 if (fseeko (subcat[0].f, Nskip, SEEK_CUR)) { perror ("fseeko: "); exit (1); } 229 230 230 231 /* read table header */ … … 316 317 fprintf (stderr, "Warning: mismatch between N%s in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n", #FIELD, Nitems, catalog[0].N##FIELD##_disk); \ 317 318 } \ 318 catalog[0].N##FIELD = catalog[0].N##FIELD##_disk; \319 catalog[0].N##FIELD##_off = 0; \319 catalog[0].N##FIELD = catalog[0].N##FIELD##_disk; \ 320 catalog[0].N##FIELD##_off = 0; \ 320 321 } else { \ 321 322 if (catalog[0].FIELD##_catalog) { \ … … 342 343 off_t Nlensobj; 343 344 off_t Nstarpar; 344 off_t Ngal shape;345 off_t Ngalphot; 345 346 int Nsecfilt; 346 347 SecFilt *primary; … … 349 350 350 351 /* get the components from the header - these duplicate information in the split files (NAXIS2) */ 351 // NSTARS, NMEAS, NMISS are required; NLENSING, NLENSOBJ, NSTARPAR, NGAL SHAPEare not (0 if not found)352 // NSTARS, NMEAS, NMISS are required; NLENSING, NLENSOBJ, NSTARPAR, NGALPHOT are not (0 if not found) 352 353 if (!gfits_scan (&catalog[0].header, "NSTARS", OFF_T_FMT, 1, &Naverage)) return (FALSE); 353 354 if (!gfits_scan (&catalog[0].header, "NMEAS", OFF_T_FMT, 1, &Nmeasure)) return (FALSE); … … 357 358 if (!gfits_scan (&catalog[0].header, "NLENSOBJ", OFF_T_FMT, 1, &Nlensobj)) Nlensobj = 0; 358 359 if (!gfits_scan (&catalog[0].header, "NSTARPAR", OFF_T_FMT, 1, &Nstarpar)) Nstarpar = 0; 359 if (!gfits_scan (&catalog[0].header, "NGAL SHAPE", OFF_T_FMT, 1, &Ngalshape)) Ngalshape= 0;360 if (!gfits_scan (&catalog[0].header, "NGALPHOT", OFF_T_FMT, 1, &Ngalphot)) Ngalphot = 0; 360 361 361 362 /* the OBJID is a counter that uniquely defines an average entry and never changes. if … … 379 380 catalog[0].Nlensobj_disk = Nlensobj; 380 381 catalog[0].Nstarpar_disk = Nstarpar; 381 catalog[0].Ngal shape_disk = Ngalshape;382 catalog[0].Ngalphot_disk = Ngalphot; 382 383 383 384 /* default values, but we will assign these a valid value before we exit (even if empty) */ … … 389 390 catalog[0].lensobj = NULL; 390 391 catalog[0].starpar = NULL; 391 catalog[0].gal shape= NULL;392 catalog[0].galphot = NULL; 392 393 393 394 /*** Average Table ***/ … … 396 397 /* move pointer past PHU header -- must be already read (load_catalog) */ 397 398 Nbytes = catalog[0].header.datasize + gfits_data_size (&catalog[0].header); 398 fseeko (catalog[0].f, Nbytes, SEEK_SET);399 if (fseeko (catalog[0].f, Nbytes, SEEK_SET)) { perror ("fseeko: "); exit (1); } 399 400 400 401 /* ftable header storage for below */ … … 443 444 LOAD_SUBCAT(lensobj,LENSOBJ,Lensobj); 444 445 LOAD_SUBCAT(starpar,STARPAR,StarPar); 445 LOAD_SUBCAT(gal shape,GALSHAPE,GalShape);446 LOAD_SUBCAT(galphot,GALPHOT,GalPhot); 446 447 447 448 /** catalog->Nsecfilt is unusual: it does not list the number of data items in the … … 472 473 473 474 off_t Nbytes; 474 off_t Naverage, Nexpect, Nitems, Nmeasure, Nmissing, Nlensing, Nlensobj, Nstarpar, Ngal shape;475 off_t Naverage, Nexpect, Nitems, Nmeasure, Nmissing, Nlensing, Nlensobj, Nstarpar, Ngalphot; 475 476 Header header; 476 477 FTable ftable; … … 489 490 /* move pointer past header and matrix -- must be already read (load_catalog) */ 490 491 Nbytes = catalog[0].header.datasize + gfits_data_size (&catalog[0].header); 491 fseeko (catalog[0].f, Nbytes, SEEK_SET); 492 if (fseeko (catalog[0].f, Nbytes, SEEK_SET)) { perror ("fseeko: "); exit (1); } 493 492 494 /* read Average table header */ 493 495 if (!gfits_fread_header (catalog[0].f, &header)) { … … 518 520 /* move pointer past header -- must be already read (load_catalog) */ 519 521 Nbytes = subcat[0].header.datasize + gfits_data_size (&subcat[0].header); 520 fseeko (subcat[0].f, Nbytes, SEEK_SET);522 if (fseeko (subcat[0].f, Nbytes, SEEK_SET)) { perror ("fseeko: "); exit (1); } 521 523 522 524 /* read Secfilt table header */ … … 554 556 /* move pointer past header -- must be already read (load_catalog) */ 555 557 Nbytes = subcat[0].header.datasize + gfits_data_size (&subcat[0].header); 556 fseeko (subcat[0].f, Nbytes, SEEK_SET);558 if (fseeko (subcat[0].f, Nbytes, SEEK_SET)) { perror ("fseeko: "); exit (1); } 557 559 558 560 /* read Measure table header */ … … 585 587 /* move pointer past header -- must be already read (load_catalog) */ 586 588 Nbytes = subcat[0].header.datasize + gfits_data_size (&subcat[0].header); 587 fseeko (subcat[0].f, Nbytes, SEEK_SET);589 if (fseeko (subcat[0].f, Nbytes, SEEK_SET)) { perror ("fseeko: "); exit (1); } 588 590 589 591 /* read Missing table header */ … … 619 621 /* move pointer past header -- must be already read (load_catalog) */ 620 622 Nbytes = subcat[0].header.datasize + gfits_data_size (&subcat[0].header); 621 fseeko (subcat[0].f, Nbytes, SEEK_SET);623 if (fseeko (subcat[0].f, Nbytes, SEEK_SET)) { perror ("fseeko: "); exit (1); } 622 624 623 625 /* read Lensing table header */ … … 650 652 /* move pointer past header -- must be already read (load_catalog) */ 651 653 Nbytes = subcat[0].header.datasize + gfits_data_size (&subcat[0].header); 652 fseeko (subcat[0].f, Nbytes, SEEK_SET);654 if (fseeko (subcat[0].f, Nbytes, SEEK_SET)) { perror ("fseeko: "); exit (1); } 653 655 654 656 /* read Lensobj table header */ … … 681 683 /* move pointer past header -- must be already read (load_catalog) */ 682 684 Nbytes = subcat[0].header.datasize + gfits_data_size (&subcat[0].header); 683 fseeko (subcat[0].f, Nbytes, SEEK_SET);685 if (fseeko (subcat[0].f, Nbytes, SEEK_SET)) { perror ("fseeko: "); exit (1); } 684 686 685 687 /* read StarPar table header */ … … 706 708 707 709 // XXX check the open status of the catalog 708 if (catalog[0].catflags & DVO_LOAD_GAL SHAPE) {709 710 Catalog *subcat = catalog[0].gal shape_catalog;710 if (catalog[0].catflags & DVO_LOAD_GALPHOT) { 711 712 Catalog *subcat = catalog[0].galphot_catalog; 711 713 712 714 /* move pointer past header -- must be already read (load_catalog) */ 713 715 Nbytes = subcat[0].header.datasize + gfits_data_size (&subcat[0].header); 714 fseeko (subcat[0].f, Nbytes, SEEK_SET);715 716 /* read Gal Shapetable header */716 if (fseeko (subcat[0].f, Nbytes, SEEK_SET)) { perror ("fseeko: "); exit (1); } 717 718 /* read GalPhot table header */ 717 719 if (!gfits_fread_header (subcat[0].f, &header)) { 718 if (VERBOSE) fprintf (stderr, "can't read table gal shapeheader");719 return (FALSE); 720 } 721 /* read Gal Shapetable data : format is irrelevant here */720 if (VERBOSE) fprintf (stderr, "can't read table galphot header"); 721 return (FALSE); 722 } 723 /* read GalPhot table data : format is irrelevant here */ 722 724 if (!gfits_fread_ftable_range (subcat[0].f, FALSE, &ftable, start, Nrows)) { 723 if (VERBOSE) fprintf (stderr, "can't read table gal shapedata");724 return (FALSE); 725 } 726 727 /* convert data format to internal : returns number of row read in Ngal shape*/728 catalog[0].gal shape = FtableToGalShape (&ftable, catalog[0].average, &Ngalshape, &catalog[0].catformat, FALSE);729 if (Ngal shape!= Nrows) {725 if (VERBOSE) fprintf (stderr, "can't read table galphot data"); 726 return (FALSE); 727 } 728 729 /* convert data format to internal : returns number of row read in Ngalphot */ 730 catalog[0].galphot = FtableToGalPhot (&ftable, catalog[0].average, &Ngalphot, &catalog[0].catformat, FALSE); 731 if (Ngalphot != Nrows) { 730 732 // XXX this condition denotes the eof has been reached; not an error or a warning 731 // fprintf (stderr, "Warning: mismatch between Ngal shape in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n", Ngalshape, Nrows);732 } 733 gfits_free_header (&header); 734 catalog[0].Ngal shape = Ngalshape;735 catalog[0].Ngal shape_off = start;733 // fprintf (stderr, "Warning: mismatch between Ngalphot in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n", Ngalphot, Nrows); 734 } 735 gfits_free_header (&header); 736 catalog[0].Ngalphot = Ngalphot; 737 catalog[0].Ngalphot_off = start; 736 738 } 737 739 … … 747 749 SecFilt *primary, *secfilt; 748 750 int Nsecfilt; 749 off_t Naverage_disk_new, Nmeasure_disk_new, Nmissing_disk_new, Nsecfilt_disk_new, Nlensing_disk_new, Nlensobj_disk_new, Nstarpar_disk_new, Ngal shape_disk_new;751 off_t Naverage_disk_new, Nmeasure_disk_new, Nmissing_disk_new, Nsecfilt_disk_new, Nlensing_disk_new, Nlensobj_disk_new, Nstarpar_disk_new, Ngalphot_disk_new; 750 752 off_t first, start, Nrows; 751 753 … … 781 783 Nlensobj_disk_new = MAX (catalog[0].Nlensobj_disk, catalog[0].Nlensobj + catalog[0].Nlensobj_off); 782 784 Nstarpar_disk_new = MAX (catalog[0].Nstarpar_disk, catalog[0].Nstarpar + catalog[0].Nstarpar_off); 783 Ngal shape_disk_new = MAX (catalog[0].Ngalshape_disk, catalog[0].Ngalshape + catalog[0].Ngalshape_off);785 Ngalphot_disk_new = MAX (catalog[0].Ngalphot_disk, catalog[0].Ngalphot + catalog[0].Ngalphot_off); 784 786 785 787 /* make sure header is consistent with data */ … … 791 793 gfits_modify (&catalog[0].header, "NLENSOBJ", OFF_T_FMT, 1, Nlensobj_disk_new); 792 794 gfits_modify (&catalog[0].header, "NSTARPAR", OFF_T_FMT, 1, Nstarpar_disk_new); 793 gfits_modify (&catalog[0].header, "NGAL SHAPE", OFF_T_FMT, 1, Ngalshape_disk_new);795 gfits_modify (&catalog[0].header, "NGALPHOT", OFF_T_FMT, 1, Ngalphot_disk_new); 794 796 795 797 gfits_modify_alt (&catalog[0].header, "EXTEND", "%t", 1, TRUE); … … 812 814 /* convert internal to external format : also results in a byte-swapped, scaled output 813 815 table. Note that ftable is newly allocated. 814 */816 */ 815 817 816 818 // if we are going to compress, we need to receive unswapped data -- … … 831 833 // even if we do not save the average table, we need to keep the header in sync 832 834 /* rewind file pointers and truncate (file is still open) */ 833 fseeko (catalog[0].f, 0, SEEK_SET); 835 if (fseeko (catalog[0].f, 0, SEEK_SET)) { perror ("fseeko: "); exit (1); } 836 837 /* write table PHU header - always write this out */ 838 /* XXX EAM : check if disk file size has changed */ 839 if (!gfits_fwrite_header (catalog[0].f, &catalog[0].header)) { 840 fprintf (stderr, "can't write primary header"); 841 goto failure; 842 } 843 } 844 845 /*** Measure Table ***/ 846 if ((catalog[0].catflags & DVO_LOAD_MEASURE) && (catalog[0].measure != NULL)) { 847 848 first = 0; // first row in memory to write 849 start = catalog[0].Nmeasure_off; // first disk row to write 850 Nrows = catalog[0].Nmeasure - first; 851 852 assert (Nrows >= 0); 853 assert (first >= 0); 854 assert (first <= catalog[0].Nmeasure); 855 assert (catalog[0].Nmeasure_disk >= catalog[0].Nmeasure_off); 856 857 // convert to external table format 858 if (!MeasureToFtable (&ftable, catalog[0].average, &catalog[0].measure[first], Nrows, catalog[0].catformat, TRUE)) { 859 fprintf (stderr, "trouble converting format\n"); 860 goto failure; 861 } 862 863 // write out Measure table 864 if (!dvo_catalog_save_subcat (catalog[0].measure_catalog, &ftable, start, Nrows, catalog[0].Nmeasure_disk, Nmeasure_disk_new)) { 865 fprintf (stderr, "trouble writing Measure table\n"); 866 goto failure; 867 } 868 gfits_free_header (&header); 869 gfits_free_table (&ftable); 870 } 871 872 /*** Missing Table ***/ 873 if ((catalog[0].catflags & DVO_LOAD_MISSING) && (catalog[0].missing != NULL)) { 874 875 if (catalog[0].Nmissing_off != 0) { 876 fprintf (stderr, "inconsistency: Missing table cannot be written in segments\n"); 877 goto failure; 878 } 879 880 // convert to external table format 881 if (!gfits_table_set_Missing (&ftable, catalog[0].missing, catalog[0].Nmissing, TRUE)) { 882 fprintf (stderr, "trouble converting format\n"); 883 goto failure; 884 } 885 886 // write out Missing table (must write out entire table) 887 if (!dvo_catalog_save_subcat (catalog[0].missing_catalog, &ftable, 0, catalog[0].Nmissing, catalog[0].Nmissing, catalog[0].Nmissing)) { 888 fprintf (stderr, "trouble writing Missing Table\n"); 889 goto failure; 890 } 891 gfits_free_header (&header); 892 gfits_free_table (&ftable); 893 } 894 895 /*** Secfilt Table ***/ 896 if ((catalog[0].catflags & DVO_LOAD_SECFILT) && (catalog[0].secfilt != NULL)) { 897 898 first = 0; // first row in memory to write 899 start = catalog[0].Nsecfilt_off; // first disk row to write 900 Nitems = catalog[0].Naverage*Nsecfilt; 901 Nrows = Nitems - first; 902 903 assert (Nrows >= 0); 904 assert (first >= 0); 905 assert (first <= Nitems); 906 assert (catalog[0].Nsecfilt_disk >= catalog[0].Nsecfilt_off); 907 // XXX check these for consistency... 908 909 // convert to external table format 910 SecFiltToFtable (&ftable, &secfilt[first], Nrows, catalog[0].catformat, TRUE); 911 912 // write out SecFilt table 913 if (!dvo_catalog_save_subcat (catalog[0].secfilt_catalog, &ftable, start, Nrows, catalog[0].Nsecfilt_disk, Nsecfilt_disk_new)) { 914 fprintf (stderr, "failure writing SecFilt table\n"); 915 goto failure; 916 } 917 gfits_free_header (&header); 918 gfits_free_table (&ftable); 919 } 920 921 /*** Lensing Table ***/ 922 if ((catalog[0].catflags & DVO_LOAD_LENSING) && (catalog[0].lensing != NULL)) { 923 924 first = 0; // first row in memory to write 925 start = catalog[0].Nlensing_off; // first disk row to write 926 Nrows = catalog[0].Nlensing - first; 927 928 assert (Nrows >= 0); 929 assert (first >= 0); 930 assert (first <= catalog[0].Nlensing); 931 assert (catalog[0].Nlensing_disk >= catalog[0].Nlensing_off); 932 933 // convert to external table format 934 if (!LensingToFtable (&ftable, &catalog[0].lensing[first], Nrows, catalog[0].catformat, TRUE)) { 935 fprintf (stderr, "trouble converting format\n"); 936 goto failure; 937 } 938 939 // write out Lensing table 940 if (!dvo_catalog_save_subcat (catalog[0].lensing_catalog, &ftable, start, Nrows, catalog[0].Nlensing_disk, Nlensing_disk_new)) { 941 fprintf (stderr, "trouble writing Lensing table\n"); 942 goto failure; 943 } 944 gfits_free_header (&header); 945 gfits_free_table (&ftable); 946 } 947 948 /*** Lensobj Table ***/ 949 if ((catalog[0].catflags & DVO_LOAD_LENSOBJ) && (catalog[0].lensobj != NULL)) { 950 951 first = 0; // first row in memory to write 952 start = catalog[0].Nlensobj_off; // first disk row to write 953 Nrows = catalog[0].Nlensobj - first; 954 955 assert (Nrows >= 0); 956 assert (first >= 0); 957 assert (first <= catalog[0].Nlensobj); 958 assert (catalog[0].Nlensobj_disk >= catalog[0].Nlensobj_off); 959 960 // convert to external table format 961 if (!LensobjToFtable (&ftable, &catalog[0].lensobj[first], Nrows, catalog[0].catformat, TRUE)) { 962 fprintf (stderr, "trouble converting format\n"); 963 goto failure; 964 } 965 966 // write out Lensobj table 967 if (!dvo_catalog_save_subcat (catalog[0].lensobj_catalog, &ftable, start, Nrows, catalog[0].Nlensobj_disk, Nlensobj_disk_new)) { 968 fprintf (stderr, "trouble writing Lensobj table\n"); 969 goto failure; 970 } 971 gfits_free_header (&header); 972 gfits_free_table (&ftable); 973 } 974 975 /*** StarPar Table ***/ 976 if ((catalog[0].catflags & DVO_LOAD_STARPAR) && (catalog[0].starpar != NULL)) { 977 978 first = 0; // first row in memory to write 979 start = catalog[0].Nstarpar_off; // first disk row to write 980 Nrows = catalog[0].Nstarpar - first; 981 982 assert (Nrows >= 0); 983 assert (first >= 0); 984 assert (first <= catalog[0].Nstarpar); 985 assert (catalog[0].Nstarpar_disk >= catalog[0].Nstarpar_off); 986 987 // convert to external table format 988 if (!StarParToFtable (&ftable, &catalog[0].starpar[first], Nrows, catalog[0].catformat, TRUE)) { 989 fprintf (stderr, "trouble converting format\n"); 990 goto failure; 991 } 992 993 // write out StarPar table 994 if (!dvo_catalog_save_subcat (catalog[0].starpar_catalog, &ftable, start, Nrows, catalog[0].Nstarpar_disk, Nstarpar_disk_new)) { 995 fprintf (stderr, "trouble writing StarPar table\n"); 996 goto failure; 997 } 998 gfits_free_header (&header); 999 gfits_free_table (&ftable); 1000 } 1001 1002 /*** GalPhot Table ***/ 1003 if ((catalog[0].catflags & DVO_LOAD_GALPHOT) && (catalog[0].galphot != NULL)) { 1004 1005 first = 0; // first row in memory to write 1006 start = catalog[0].Ngalphot_off; // first disk row to write 1007 Nrows = catalog[0].Ngalphot - first; 1008 1009 assert (Nrows >= 0); 1010 assert (first >= 0); 1011 assert (first <= catalog[0].Ngalphot); 1012 assert (catalog[0].Ngalphot_disk >= catalog[0].Ngalphot_off); 1013 1014 // convert to external table format 1015 if (!GalPhotToFtable (&ftable, &catalog[0].galphot[first], Nrows, catalog[0].catformat, TRUE)) { 1016 fprintf (stderr, "trouble converting format\n"); 1017 goto failure; 1018 } 1019 1020 // write out GalPhot table 1021 if (!dvo_catalog_save_subcat (catalog[0].galphot_catalog, &ftable, start, Nrows, catalog[0].Ngalphot_disk, Ngalphot_disk_new)) { 1022 fprintf (stderr, "trouble writing GalPhot table\n"); 1023 goto failure; 1024 } 1025 gfits_free_header (&header); 1026 gfits_free_table (&ftable); 1027 } 1028 1029 /* free temp storage */ 1030 if (primary != NULL) { 1031 free (primary); 1032 free (secfilt); 1033 } 1034 return (TRUE); 1035 1036 failure: 1037 /* free temp storage */ 1038 gfits_free_header (&header); 1039 gfits_free_table (&ftable); 1040 if (primary != NULL) { 1041 free (primary); 1042 free (secfilt); 1043 } 1044 return (FALSE); 1045 } 1046 1047 /* update_catalog_split only writes new lines to file. */ 1048 int dvo_catalog_update_split (Catalog *catalog, char VERBOSE) { 1049 1050 off_t Nitems; 1051 Header header; 1052 FTable ftable; 1053 SecFilt *primary, *secfilt; 1054 int Nsecfilt; 1055 off_t Naverage_disk_new, Nmeasure_disk_new, Nmissing_disk_new, Nsecfilt_disk_new, Nlensing_disk_new, Nlensobj_disk_new, Nstarpar_disk_new, Ngalphot_disk_new; 1056 off_t first, start, Nrows; 1057 1058 ftable.header = &header; 1059 ftable.buffer = NULL; 1060 header.buffer = NULL; 1061 1062 // skip empty catalogs: it is illegal to have Measures without corresponding Averages 1063 Naverage_disk_new = MAX (catalog[0].Naverage_disk, catalog[0].Naverage + catalog[0].Naverage_off); 1064 if (Naverage_disk_new == 0) { 1065 if (VERBOSE) fprintf (stderr, "no stars in catalog, skipping\n"); 1066 return (TRUE); 1067 } 1068 1069 // for the appropriate types, pull out the first secfilt and pass to AverageToFtable as primary 1070 switch (catalog[0].catformat) { 1071 case DVO_FORMAT_ELIXIR: // special case for ELIXIR 1072 case DVO_FORMAT_LONEOS: // special case for LONEOS 1073 dvo_catalog_secfilt_to_primary (catalog, &primary, &secfilt, &Nsecfilt); 1074 break; 1075 default: 1076 primary = NULL; 1077 secfilt = catalog[0].secfilt; 1078 Nsecfilt = catalog[0].Nsecfilt; 1079 break; 1080 } 1081 1082 Nmeasure_disk_new = MAX (catalog[0].Nmeasure_disk, catalog[0].Nmeasure + catalog[0].Nmeasure_off); 1083 Nmissing_disk_new = MAX (catalog[0].Nmissing_disk, catalog[0].Nmissing + catalog[0].Nmissing_off); 1084 Nsecfilt_disk_new = MAX (catalog[0].Nsecfilt_disk, catalog[0].Naverage*Nsecfilt + catalog[0].Nsecfilt_off); 1085 Nlensing_disk_new = MAX (catalog[0].Nlensing_disk, catalog[0].Nlensing + catalog[0].Nlensing_off); 1086 Nlensobj_disk_new = MAX (catalog[0].Nlensobj_disk, catalog[0].Nlensobj + catalog[0].Nlensobj_off); 1087 Nstarpar_disk_new = MAX (catalog[0].Nstarpar_disk, catalog[0].Nstarpar + catalog[0].Nstarpar_off); 1088 Ngalphot_disk_new = MAX (catalog[0].Ngalphot_disk, catalog[0].Ngalphot + catalog[0].Ngalphot_off); 1089 1090 /* make sure header is consistent with data */ 1091 gfits_modify (&catalog[0].header, "NSTARS", OFF_T_FMT, 1, Naverage_disk_new); 1092 gfits_modify (&catalog[0].header, "NMEAS", OFF_T_FMT, 1, Nmeasure_disk_new); 1093 gfits_modify (&catalog[0].header, "NMISS", OFF_T_FMT, 1, Nmissing_disk_new); 1094 gfits_modify (&catalog[0].header, "NSECFILT", "%d", 1, Nsecfilt); 1095 gfits_modify (&catalog[0].header, "NLENSING", OFF_T_FMT, 1, Nlensing_disk_new); 1096 gfits_modify (&catalog[0].header, "NLENSOBJ", OFF_T_FMT, 1, Nlensobj_disk_new); 1097 gfits_modify (&catalog[0].header, "NSTARPAR", OFF_T_FMT, 1, Nstarpar_disk_new); 1098 gfits_modify (&catalog[0].header, "NGALPHOT", OFF_T_FMT, 1, Ngalphot_disk_new); 1099 1100 gfits_modify_alt (&catalog[0].header, "EXTEND", "%t", 1, TRUE); 1101 gfits_modify (&catalog[0].header, "OBJID", "%d", 1, catalog[0].objID); 1102 1103 /* in split mode, we can save only part of the data */ 1104 1105 /*** Average Table ***/ 1106 if (catalog[0].average != NULL) { 1107 1108 first = catalog[0].Naverage_disk - catalog[0].Naverage_off; // first row to write (memory) 1109 start = catalog[0].Naverage_disk; // first row to write (disk) 1110 Nrows = catalog[0].Naverage - first; 1111 1112 assert (Nrows >= 0); 1113 assert (first >= 0); 1114 assert (first <= catalog[0].Naverage); 1115 assert (catalog[0].Naverage_disk >= catalog[0].Naverage_off); 1116 1117 /* convert internal to external format */ 1118 if (!AverageToFtable (&ftable, &catalog[0].average[first], Nrows, catalog[0].catformat, primary, TRUE)) { 1119 fprintf (stderr, "trouble converting format\n"); 1120 goto failure; 1121 } 1122 1123 if (!dvo_catalog_save_subcat (catalog, &ftable, start, Nrows, catalog[0].Naverage_disk, Naverage_disk_new)) { 1124 fprintf (stderr, "failure writing Average table\n"); 1125 goto failure; 1126 } 1127 gfits_free_header (&header); 1128 gfits_free_table (&ftable); 1129 } else { 1130 // even if we do not save the average table, we need to keep the header in sync 1131 /* rewind file pointers and truncate (file is still open) */ 1132 if (fseeko (catalog[0].f, 0, SEEK_SET)) { perror ("fseeko: "); exit (1); } 834 1133 835 1134 /* write table PHU header - always write this out */ … … 991 1290 992 1291 /*** StarPar Table (optional, do not save if not loaded) ***/ 993 if ((catalog[0].catflags & DVO_LOAD_STARPAR) && catalog[0].starpar_catalog->f && catalog[0].starpar) {1292 if ((catalog[0].catflags & DVO_LOAD_STARPAR) && catalog[0].starpar_catalog->f && catalog[0].starpar) { 994 1293 995 1294 first = 0; // first row in memory to write … … 1022 1321 } 1023 1322 1024 /*** Gal ShapeTable (optional, do not save if not loaded) ***/1025 if ((catalog[0].catflags & DVO_LOAD_GAL SHAPE) && catalog[0].galshape_catalog->f && catalog[0].galshape) {1323 /*** GalPhot Table (optional, do not save if not loaded) ***/ 1324 if ((catalog[0].catflags & DVO_LOAD_GALPHOT) && catalog[0].galphot_catalog->f && catalog[0].galphot) { 1026 1325 1027 1326 first = 0; // first row in memory to write 1028 start = catalog[0].Ngal shape_off; // first disk row to write1029 Nrows = catalog[0].Ngal shape- first;1030 1031 assert (Nrows >= 0); 1032 assert (first >= 0); 1033 assert (first <= catalog[0].Ngal shape);1034 assert (catalog[0].Ngal shape_disk >= catalog[0].Ngalshape_off);1035 1036 if (catalog[0].Ngal shape) {1327 start = catalog[0].Ngalphot_off; // first disk row to write 1328 Nrows = catalog[0].Ngalphot - first; 1329 1330 assert (Nrows >= 0); 1331 assert (first >= 0); 1332 assert (first <= catalog[0].Ngalphot); 1333 assert (catalog[0].Ngalphot_disk >= catalog[0].Ngalphot_off); 1334 1335 if (catalog[0].Ngalphot) { 1037 1336 // if we are going to compress, we need to receive unswapped data -- 1038 int swapFromNative = !output_is_compressed (start, Nrows, Ngal shape_disk_new, catalog->catcompress);1337 int swapFromNative = !output_is_compressed (start, Nrows, Ngalphot_disk_new, catalog->catcompress); 1039 1338 1040 1339 // convert to external table format (note that the block above does not damage or free catalog.average) 1041 if (!Gal ShapeToFtable (&ftable, &catalog[0].galshape[first], Nrows, catalog[0].catformat, swapFromNative)) {1340 if (!GalPhotToFtable (&ftable, &catalog[0].galphot[first], Nrows, catalog[0].catformat, swapFromNative)) { 1042 1341 fprintf (stderr, "trouble converting format\n"); 1043 1342 goto failure; 1044 1343 } 1045 1344 1046 // write out Gal Shapetable1047 if (!dvo_catalog_save_subcat (catalog[0].gal shape_catalog, &ftable, start, Nrows, catalog[0].Ngalshape_disk, Ngalshape_disk_new)) {1048 fprintf (stderr, "trouble writing Gal Shapetable\n");1345 // write out GalPhot table 1346 if (!dvo_catalog_save_subcat (catalog[0].galphot_catalog, &ftable, start, Nrows, catalog[0].Ngalphot_disk, Ngalphot_disk_new)) { 1347 fprintf (stderr, "trouble writing GalPhot table\n"); 1049 1348 goto failure; 1050 1349 } … … 1061 1360 return (TRUE); 1062 1361 1063 failure:1362 failure: 1064 1363 /* free temp storage */ 1065 1364 gfits_free_header (&header); … … 1075 1374 int dvo_catalog_save_split_complete (Catalog *catalog, char VERBOSE) { 1076 1375 1077 off_t Nitems;1078 1376 Header header; 1079 1377 FTable ftable; 1080 1378 SecFilt *primary, *secfilt; 1081 1379 int Nsecfilt; 1082 off_t Naverage_disk_new, Nmeasure_disk_new, Nmissing_disk_new, Nsecfilt_disk_new, Nlensing_disk_new, Nlensobj_disk_new, Nstarpar_disk_new, Ngal shape_disk_new;1380 off_t Naverage_disk_new, Nmeasure_disk_new, Nmissing_disk_new, Nsecfilt_disk_new, Nlensing_disk_new, Nlensobj_disk_new, Nstarpar_disk_new, Ngalphot_disk_new; 1083 1381 off_t first, start, Nrows; 1084 1382 … … 1117 1415 goto failure; 1118 1416 } 1119 if (catalog[0].Ngal shape_off > 0) {1120 fprintf (stderr, "ERROR: only partial catalog (Gal Shape) was loaded\n");1417 if (catalog[0].Ngalphot_off > 0) { 1418 fprintf (stderr, "ERROR: only partial catalog (GalPhot) was loaded\n"); 1121 1419 goto failure; 1122 1420 } … … 1148 1446 Nlensobj_disk_new = catalog[0].Nlensobj; 1149 1447 Nstarpar_disk_new = catalog[0].Nstarpar; 1150 Ngal shape_disk_new = catalog[0].Ngalshape;1448 Ngalphot_disk_new = catalog[0].Ngalphot; 1151 1449 1152 1450 /* make sure header is consistent with data */ … … 1158 1456 gfits_modify (&catalog[0].header, "NLENSOBJ", OFF_T_FMT, 1, Nlensobj_disk_new); 1159 1457 gfits_modify (&catalog[0].header, "NSTARPAR", OFF_T_FMT, 1, Nstarpar_disk_new); 1160 gfits_modify (&catalog[0].header, "NGAL SHAPE", OFF_T_FMT, 1, Ngalshape_disk_new);1458 gfits_modify (&catalog[0].header, "NGALPHOT", OFF_T_FMT, 1, Ngalphot_disk_new); 1161 1459 gfits_modify_alt (&catalog[0].header, "EXTEND", "%t", 1, TRUE); 1162 1460 gfits_modify (&catalog[0].header, "OBJID", "%d", 1, catalog[0].objID); … … 1191 1489 // even if we do not save the average table, we need to keep the header in sync 1192 1490 /* rewind file pointers and truncate (file is still open) */ 1193 fseeko (catalog[0].f, 0, SEEK_SET);1491 if (fseeko (catalog[0].f, 0, SEEK_SET)) { perror ("fseeko: "); exit (1); } 1194 1492 1195 1493 /* write table PHU header - always write this out */ … … 1202 1500 1203 1501 /*** Measure Table ***/ 1204 if ( (catalog[0].catflags & DVO_LOAD_MEASURE) && (catalog[0].measure != NULL)) {1205 1206 first = 0;// first row in memory to write1207 start = catalog[0].Nmeasure_ off; // first disk row to write1502 if (catalog[0].measure != NULL) { 1503 1504 first = catalog[0].Nmeasure_disk - catalog[0].Nmeasure_off; // first row in memory to write 1505 start = catalog[0].Nmeasure_disk; // first disk row to write 1208 1506 Nrows = catalog[0].Nmeasure - first; 1209 1507 … … 1214 1512 1215 1513 // convert to external table format 1514 // XXX does catalog.measure have averef correctly set up? 1216 1515 if (!MeasureToFtable (&ftable, catalog[0].average, &catalog[0].measure[first], Nrows, catalog[0].catformat, TRUE)) { 1217 1516 fprintf (stderr, "trouble converting format\n"); … … 1228 1527 } 1229 1528 1529 /* missing table CANNOT be written unsorted, thus it is always written 1530 out in full */ 1531 1230 1532 /*** Missing Table ***/ 1231 if ((catalog[0].catflags & DVO_LOAD_MISSING) && (catalog[0].missing != NULL)) { 1533 1534 if (catalog[0].missing != NULL) { 1232 1535 1233 1536 if (catalog[0].Nmissing_off != 0) { … … 1252 1555 1253 1556 /*** Secfilt Table ***/ 1254 if ((catalog[0].catflags & DVO_LOAD_SECFILT) && (catalog[0].secfilt != NULL)) { 1255 1256 first = 0; // first row in memory to write 1257 start = catalog[0].Nsecfilt_off; // first disk row to write 1258 Nitems = catalog[0].Naverage*Nsecfilt; 1259 Nrows = Nitems - first; 1260 1261 assert (Nrows >= 0); 1262 assert (first >= 0); 1263 assert (first <= Nitems); 1557 if (catalog[0].secfilt != NULL) { 1558 1559 first = catalog[0].Nsecfilt_disk - catalog[0].Nsecfilt_off; // first row in memory to write 1560 start = catalog[0].Nsecfilt_disk; // first disk row to write 1561 Nrows = catalog[0].Nsecfilt_mem - first; 1562 1563 assert (Nrows >= 0); 1564 assert (first >= 0); 1264 1565 assert (catalog[0].Nsecfilt_disk >= catalog[0].Nsecfilt_off); 1265 // XXX check these for consistency...1266 1566 1267 1567 // convert to external table format … … 1278 1578 1279 1579 /*** Lensing Table ***/ 1280 if ( (catalog[0].catflags & DVO_LOAD_LENSING) && (catalog[0].lensing != NULL)) {1281 1282 first = 0;// first row in memory to write1283 start = catalog[0].Nlensing_ off; // first disk row to write1580 if (catalog[0].lensing != NULL) { 1581 1582 first = catalog[0].Nlensing_disk - catalog[0].Nlensing_off; // first row in memory to write 1583 start = catalog[0].Nlensing_disk; // first disk row to write 1284 1584 Nrows = catalog[0].Nlensing - first; 1285 1585 … … 1290 1590 1291 1591 // convert to external table format 1592 // XXX does catalog.lensing have averef correctly set up? 1292 1593 if (!LensingToFtable (&ftable, &catalog[0].lensing[first], Nrows, catalog[0].catformat, TRUE)) { 1293 1594 fprintf (stderr, "trouble converting format\n"); … … 1305 1606 1306 1607 /*** Lensobj Table ***/ 1307 if ( (catalog[0].catflags & DVO_LOAD_LENSOBJ) && (catalog[0].lensobj != NULL)) {1308 1309 first = 0;// first row in memory to write1310 start = catalog[0].Nlensobj_ off; // first disk row to write1608 if (catalog[0].lensobj != NULL) { 1609 1610 first = catalog[0].Nlensobj_disk - catalog[0].Nlensobj_off; // first row in memory to write 1611 start = catalog[0].Nlensobj_disk; // first disk row to write 1311 1612 Nrows = catalog[0].Nlensobj - first; 1312 1613 … … 1317 1618 1318 1619 // convert to external table format 1620 // XXX does catalog.lensobj have averef correctly set up? 1319 1621 if (!LensobjToFtable (&ftable, &catalog[0].lensobj[first], Nrows, catalog[0].catformat, TRUE)) { 1320 1622 fprintf (stderr, "trouble converting format\n"); … … 1332 1634 1333 1635 /*** StarPar Table ***/ 1334 if ( (catalog[0].catflags & DVO_LOAD_STARPAR) && (catalog[0].starpar != NULL)) {1335 1336 first = 0;// first row in memory to write1337 start = catalog[0].Nstarpar_ off; // first disk row to write1636 if (catalog[0].starpar != NULL) { 1637 1638 first = catalog[0].Nstarpar_disk - catalog[0].Nstarpar_off; // first row in memory to write 1639 start = catalog[0].Nstarpar_disk; // first disk row to write 1338 1640 Nrows = catalog[0].Nstarpar - first; 1339 1641 … … 1344 1646 1345 1647 // convert to external table format 1648 // XXX does catalog.starpar have averef correctly set up? 1346 1649 if (!StarParToFtable (&ftable, &catalog[0].starpar[first], Nrows, catalog[0].catformat, TRUE)) { 1347 1650 fprintf (stderr, "trouble converting format\n"); … … 1358 1661 } 1359 1662 1360 /*** Gal ShapeTable ***/1361 if ( (catalog[0].catflags & DVO_LOAD_GALSHAPE) && (catalog[0].galshape != NULL)) {1362 1363 first = 0;// first row in memory to write1364 start = catalog[0].Ngal shape_off; // first disk row to write1365 Nrows = catalog[0].Ngal shape- first;1366 1367 assert (Nrows >= 0); 1368 assert (first >= 0); 1369 assert (first <= catalog[0].Ngal shape);1370 assert (catalog[0].Ngal shape_disk >= catalog[0].Ngalshape_off);1663 /*** GalPhot Table ***/ 1664 if (catalog[0].galphot != NULL) { 1665 1666 first = catalog[0].Ngalphot_disk - catalog[0].Ngalphot_off; // first row in memory to write 1667 start = catalog[0].Ngalphot_disk; // first disk row to write 1668 Nrows = catalog[0].Ngalphot - first; 1669 1670 assert (Nrows >= 0); 1671 assert (first >= 0); 1672 assert (first <= catalog[0].Ngalphot); 1673 assert (catalog[0].Ngalphot_disk >= catalog[0].Ngalphot_off); 1371 1674 1372 1675 // convert to external table format 1373 if (!GalShapeToFtable (&ftable, &catalog[0].galshape[first], Nrows, catalog[0].catformat, TRUE)) { 1676 // XXX does catalog.galphot have averef correctly set up? 1677 if (!GalPhotToFtable (&ftable, &catalog[0].galphot[first], Nrows, catalog[0].catformat, TRUE)) { 1374 1678 fprintf (stderr, "trouble converting format\n"); 1375 1679 goto failure; 1376 1680 } 1377 1681 1378 // write out Gal Shapetable1379 if (!dvo_catalog_save_subcat (catalog[0].gal shape_catalog, &ftable, start, Nrows, catalog[0].Ngalshape_disk, Ngalshape_disk_new)) {1380 fprintf (stderr, "trouble writing Gal Shapetable\n");1682 // write out GalPhot table 1683 if (!dvo_catalog_save_subcat (catalog[0].galphot_catalog, &ftable, start, Nrows, catalog[0].Ngalphot_disk, Ngalphot_disk_new)) { 1684 fprintf (stderr, "trouble writing GalPhot table\n"); 1381 1685 goto failure; 1382 1686 } … … 1390 1694 free (secfilt); 1391 1695 } 1696 1392 1697 return (TRUE); 1393 1698 1394 failure: 1395 /* free temp storage */ 1396 gfits_free_header (&header); 1397 gfits_free_table (&ftable); 1398 if (primary != NULL) { 1399 free (primary); 1400 free (secfilt); 1401 } 1402 return (FALSE); 1403 } 1404 1405 /* update_catalog_split only writes new lines to file. */ 1406 int dvo_catalog_update_split (Catalog *catalog, char VERBOSE) { 1407 1408 Header header; 1409 FTable ftable; 1410 SecFilt *primary, *secfilt; 1411 int Nsecfilt; 1412 off_t Naverage_disk_new, Nmeasure_disk_new, Nmissing_disk_new, Nsecfilt_disk_new, Nlensing_disk_new, Nlensobj_disk_new, Nstarpar_disk_new, Ngalshape_disk_new; 1413 off_t first, start, Nrows; 1414 1415 ftable.header = &header; 1416 ftable.buffer = NULL; 1417 header.buffer = NULL; 1418 1419 // skip empty catalogs: it is illegal to have Measures without corresponding Averages 1420 Naverage_disk_new = MAX (catalog[0].Naverage_disk, catalog[0].Naverage + catalog[0].Naverage_off); 1421 if (Naverage_disk_new == 0) { 1422 if (VERBOSE) fprintf (stderr, "no stars in catalog, skipping\n"); 1423 return (TRUE); 1424 } 1425 1426 // for the appropriate types, pull out the first secfilt and pass to AverageToFtable as primary 1427 switch (catalog[0].catformat) { 1428 case DVO_FORMAT_ELIXIR: // special case for ELIXIR 1429 case DVO_FORMAT_LONEOS: // special case for LONEOS 1430 dvo_catalog_secfilt_to_primary (catalog, &primary, &secfilt, &Nsecfilt); 1431 break; 1432 default: 1433 primary = NULL; 1434 secfilt = catalog[0].secfilt; 1435 Nsecfilt = catalog[0].Nsecfilt; 1436 break; 1437 } 1438 1439 Nmeasure_disk_new = MAX (catalog[0].Nmeasure_disk, catalog[0].Nmeasure + catalog[0].Nmeasure_off); 1440 Nmissing_disk_new = MAX (catalog[0].Nmissing_disk, catalog[0].Nmissing + catalog[0].Nmissing_off); 1441 Nsecfilt_disk_new = MAX (catalog[0].Nsecfilt_disk, catalog[0].Naverage*Nsecfilt + catalog[0].Nsecfilt_off); 1442 Nlensing_disk_new = MAX (catalog[0].Nlensing_disk, catalog[0].Nlensing + catalog[0].Nlensing_off); 1443 Nlensobj_disk_new = MAX (catalog[0].Nlensobj_disk, catalog[0].Nlensobj + catalog[0].Nlensobj_off); 1444 Nstarpar_disk_new = MAX (catalog[0].Nstarpar_disk, catalog[0].Nstarpar + catalog[0].Nstarpar_off); 1445 Ngalshape_disk_new = MAX (catalog[0].Ngalshape_disk, catalog[0].Ngalshape + catalog[0].Ngalshape_off); 1446 1447 /* make sure header is consistent with data */ 1448 gfits_modify (&catalog[0].header, "NSTARS", OFF_T_FMT, 1, Naverage_disk_new); 1449 gfits_modify (&catalog[0].header, "NMEAS", OFF_T_FMT, 1, Nmeasure_disk_new); 1450 gfits_modify (&catalog[0].header, "NMISS", OFF_T_FMT, 1, Nmissing_disk_new); 1451 gfits_modify (&catalog[0].header, "NSECFILT", "%d", 1, Nsecfilt); 1452 gfits_modify (&catalog[0].header, "NLENSING", OFF_T_FMT, 1, Nlensing_disk_new); 1453 gfits_modify (&catalog[0].header, "NLENSOBJ", OFF_T_FMT, 1, Nlensobj_disk_new); 1454 gfits_modify (&catalog[0].header, "NSTARPAR", OFF_T_FMT, 1, Nstarpar_disk_new); 1455 gfits_modify (&catalog[0].header, "NGALSHAPE", OFF_T_FMT, 1, Ngalshape_disk_new); 1456 1457 gfits_modify_alt (&catalog[0].header, "EXTEND", "%t", 1, TRUE); 1458 gfits_modify (&catalog[0].header, "OBJID", "%d", 1, catalog[0].objID); 1459 1460 /* in split mode, we can save only part of the data */ 1461 1462 /*** Average Table ***/ 1463 if (catalog[0].average != NULL) { 1464 1465 first = catalog[0].Naverage_disk - catalog[0].Naverage_off; // first row to write (memory) 1466 start = catalog[0].Naverage_disk; // first row to write (disk) 1467 Nrows = catalog[0].Naverage - first; 1468 1469 assert (Nrows >= 0); 1470 assert (first >= 0); 1471 assert (first <= catalog[0].Naverage); 1472 assert (catalog[0].Naverage_disk >= catalog[0].Naverage_off); 1473 1474 /* convert internal to external format */ 1475 if (!AverageToFtable (&ftable, &catalog[0].average[first], Nrows, catalog[0].catformat, primary, TRUE)) { 1476 fprintf (stderr, "trouble converting format\n"); 1477 goto failure; 1478 } 1479 1480 if (!dvo_catalog_save_subcat (catalog, &ftable, start, Nrows, catalog[0].Naverage_disk, Naverage_disk_new)) { 1481 fprintf (stderr, "failure writing Average table\n"); 1482 goto failure; 1483 } 1484 gfits_free_header (&header); 1485 gfits_free_table (&ftable); 1486 } else { 1487 // even if we do not save the average table, we need to keep the header in sync 1488 /* rewind file pointers and truncate (file is still open) */ 1489 fseeko (catalog[0].f, 0, SEEK_SET); 1490 1491 /* write table PHU header - always write this out */ 1492 /* XXX EAM : check if disk file size has changed */ 1493 if (!gfits_fwrite_header (catalog[0].f, &catalog[0].header)) { 1494 fprintf (stderr, "can't write primary header"); 1495 goto failure; 1496 } 1497 } 1498 1499 /*** Measure Table ***/ 1500 if (catalog[0].measure != NULL) { 1501 1502 first = catalog[0].Nmeasure_disk - catalog[0].Nmeasure_off; // first row in memory to write 1503 start = catalog[0].Nmeasure_disk; // first disk row to write 1504 Nrows = catalog[0].Nmeasure - first; 1505 1506 assert (Nrows >= 0); 1507 assert (first >= 0); 1508 assert (first <= catalog[0].Nmeasure); 1509 assert (catalog[0].Nmeasure_disk >= catalog[0].Nmeasure_off); 1510 1511 // convert to external table format 1512 // XXX does catalog.measure have averef correctly set up? 1513 if (!MeasureToFtable (&ftable, catalog[0].average, &catalog[0].measure[first], Nrows, catalog[0].catformat, TRUE)) { 1514 fprintf (stderr, "trouble converting format\n"); 1515 goto failure; 1516 } 1517 1518 // write out Measure table 1519 if (!dvo_catalog_save_subcat (catalog[0].measure_catalog, &ftable, start, Nrows, catalog[0].Nmeasure_disk, Nmeasure_disk_new)) { 1520 fprintf (stderr, "trouble writing Measure table\n"); 1521 goto failure; 1522 } 1523 gfits_free_header (&header); 1524 gfits_free_table (&ftable); 1525 } 1526 1527 /* missing table CANNOT be written unsorted, thus it is always written 1528 out in full */ 1529 1530 /*** Missing Table ***/ 1531 1532 if (catalog[0].missing != NULL) { 1533 1534 if (catalog[0].Nmissing_off != 0) { 1535 fprintf (stderr, "inconsistency: Missing table cannot be written in segments\n"); 1536 goto failure; 1537 } 1538 1539 // convert to external table format 1540 if (!gfits_table_set_Missing (&ftable, catalog[0].missing, catalog[0].Nmissing, TRUE)) { 1541 fprintf (stderr, "trouble converting format\n"); 1542 goto failure; 1543 } 1544 1545 // write out Missing table (must write out entire table) 1546 if (!dvo_catalog_save_subcat (catalog[0].missing_catalog, &ftable, 0, catalog[0].Nmissing, catalog[0].Nmissing, catalog[0].Nmissing)) { 1547 fprintf (stderr, "trouble writing Missing Table\n"); 1548 goto failure; 1549 } 1550 gfits_free_header (&header); 1551 gfits_free_table (&ftable); 1552 } 1553 1554 /*** Secfilt Table ***/ 1555 if (catalog[0].secfilt != NULL) { 1556 1557 first = catalog[0].Nsecfilt_disk - catalog[0].Nsecfilt_off; // first row in memory to write 1558 start = catalog[0].Nsecfilt_disk; // first disk row to write 1559 Nrows = catalog[0].Nsecfilt_mem - first; 1560 1561 assert (Nrows >= 0); 1562 assert (first >= 0); 1563 assert (catalog[0].Nsecfilt_disk >= catalog[0].Nsecfilt_off); 1564 1565 // convert to external table format 1566 SecFiltToFtable (&ftable, &secfilt[first], Nrows, catalog[0].catformat, TRUE); 1567 1568 // write out SecFilt table 1569 if (!dvo_catalog_save_subcat (catalog[0].secfilt_catalog, &ftable, start, Nrows, catalog[0].Nsecfilt_disk, Nsecfilt_disk_new)) { 1570 fprintf (stderr, "failure writing SecFilt table\n"); 1571 goto failure; 1572 } 1573 gfits_free_header (&header); 1574 gfits_free_table (&ftable); 1575 } 1576 1577 /*** Lensing Table ***/ 1578 if (catalog[0].lensing != NULL) { 1579 1580 first = catalog[0].Nlensing_disk - catalog[0].Nlensing_off; // first row in memory to write 1581 start = catalog[0].Nlensing_disk; // first disk row to write 1582 Nrows = catalog[0].Nlensing - first; 1583 1584 assert (Nrows >= 0); 1585 assert (first >= 0); 1586 assert (first <= catalog[0].Nlensing); 1587 assert (catalog[0].Nlensing_disk >= catalog[0].Nlensing_off); 1588 1589 // convert to external table format 1590 // XXX does catalog.lensing have averef correctly set up? 1591 if (!LensingToFtable (&ftable, &catalog[0].lensing[first], Nrows, catalog[0].catformat, TRUE)) { 1592 fprintf (stderr, "trouble converting format\n"); 1593 goto failure; 1594 } 1595 1596 // write out Lensing table 1597 if (!dvo_catalog_save_subcat (catalog[0].lensing_catalog, &ftable, start, Nrows, catalog[0].Nlensing_disk, Nlensing_disk_new)) { 1598 fprintf (stderr, "trouble writing Lensing table\n"); 1599 goto failure; 1600 } 1601 gfits_free_header (&header); 1602 gfits_free_table (&ftable); 1603 } 1604 1605 /*** Lensobj Table ***/ 1606 if (catalog[0].lensobj != NULL) { 1607 1608 first = catalog[0].Nlensobj_disk - catalog[0].Nlensobj_off; // first row in memory to write 1609 start = catalog[0].Nlensobj_disk; // first disk row to write 1610 Nrows = catalog[0].Nlensobj - first; 1611 1612 assert (Nrows >= 0); 1613 assert (first >= 0); 1614 assert (first <= catalog[0].Nlensobj); 1615 assert (catalog[0].Nlensobj_disk >= catalog[0].Nlensobj_off); 1616 1617 // convert to external table format 1618 // XXX does catalog.lensobj have averef correctly set up? 1619 if (!LensobjToFtable (&ftable, &catalog[0].lensobj[first], Nrows, catalog[0].catformat, TRUE)) { 1620 fprintf (stderr, "trouble converting format\n"); 1621 goto failure; 1622 } 1623 1624 // write out Lensobj table 1625 if (!dvo_catalog_save_subcat (catalog[0].lensobj_catalog, &ftable, start, Nrows, catalog[0].Nlensobj_disk, Nlensobj_disk_new)) { 1626 fprintf (stderr, "trouble writing Lensobj table\n"); 1627 goto failure; 1628 } 1629 gfits_free_header (&header); 1630 gfits_free_table (&ftable); 1631 } 1632 1633 /*** StarPar Table ***/ 1634 if (catalog[0].starpar != NULL) { 1635 1636 first = catalog[0].Nstarpar_disk - catalog[0].Nstarpar_off; // first row in memory to write 1637 start = catalog[0].Nstarpar_disk; // first disk row to write 1638 Nrows = catalog[0].Nstarpar - first; 1639 1640 assert (Nrows >= 0); 1641 assert (first >= 0); 1642 assert (first <= catalog[0].Nstarpar); 1643 assert (catalog[0].Nstarpar_disk >= catalog[0].Nstarpar_off); 1644 1645 // convert to external table format 1646 // XXX does catalog.starpar have averef correctly set up? 1647 if (!StarParToFtable (&ftable, &catalog[0].starpar[first], Nrows, catalog[0].catformat, TRUE)) { 1648 fprintf (stderr, "trouble converting format\n"); 1649 goto failure; 1650 } 1651 1652 // write out StarPar table 1653 if (!dvo_catalog_save_subcat (catalog[0].starpar_catalog, &ftable, start, Nrows, catalog[0].Nstarpar_disk, Nstarpar_disk_new)) { 1654 fprintf (stderr, "trouble writing StarPar table\n"); 1655 goto failure; 1656 } 1657 gfits_free_header (&header); 1658 gfits_free_table (&ftable); 1659 } 1660 1661 /*** GalShape Table ***/ 1662 if (catalog[0].galshape != NULL) { 1663 1664 first = catalog[0].Ngalshape_disk - catalog[0].Ngalshape_off; // first row in memory to write 1665 start = catalog[0].Ngalshape_disk; // first disk row to write 1666 Nrows = catalog[0].Ngalshape - first; 1667 1668 assert (Nrows >= 0); 1669 assert (first >= 0); 1670 assert (first <= catalog[0].Ngalshape); 1671 assert (catalog[0].Ngalshape_disk >= catalog[0].Ngalshape_off); 1672 1673 // convert to external table format 1674 // XXX does catalog.galshape have averef correctly set up? 1675 if (!GalShapeToFtable (&ftable, &catalog[0].galshape[first], Nrows, catalog[0].catformat, TRUE)) { 1676 fprintf (stderr, "trouble converting format\n"); 1677 goto failure; 1678 } 1679 1680 // write out GalShape table 1681 if (!dvo_catalog_save_subcat (catalog[0].galshape_catalog, &ftable, start, Nrows, catalog[0].Ngalshape_disk, Ngalshape_disk_new)) { 1682 fprintf (stderr, "trouble writing GalShape table\n"); 1683 goto failure; 1684 } 1685 gfits_free_header (&header); 1686 gfits_free_table (&ftable); 1687 } 1688 1689 /* free temp storage */ 1690 if (primary != NULL) { 1691 free (primary); 1692 free (secfilt); 1693 } 1694 1695 return (TRUE); 1696 1697 failure: 1699 failure: 1698 1700 /* free temp storage */ 1699 1701 if (primary != NULL) { … … 1719 1721 1720 1722 1721 // * convert to an ftable1722 // * optionally write the PHU header/matrix1723 // * advance to the start of the output data block:1724 // ** Nx * catalog[0].Nmeasure_off1725 // * write out the ftable data block1726 // * if Nmeasure_off + Nmeasure >= Nmeasure_disk, update padding1727 // ** start = Nmeasure_off1728 // ** Nrows = Nmeasure1729 1723 // * convert to an ftable 1724 // * optionally write the PHU header/matrix 1725 // * advance to the start of the output data block: 1726 // ** Nx * catalog[0].Nmeasure_off 1727 // * write out the ftable data block 1728 // * if Nmeasure_off + Nmeasure >= Nmeasure_disk, update padding 1729 // ** start = Nmeasure_off 1730 // ** Nrows = Nmeasure 1731 -
branches/eam_branches/ohana.20150429/src/libdvo/src/dvo_convert.c
r38354 r38419 853 853 } 854 854 855 /*** Gal Shape/ FTable conversion functions ***/856 857 Gal Shape *FtableToGalShape (FTable *ftable, Average *average, off_t *Ngalshape, DVOCatFormat *format, char nativeBytes) {858 859 Gal Shape *galshape;855 /*** GalPhot / FTable conversion functions ***/ 856 857 GalPhot *FtableToGalPhot (FTable *ftable, Average *average, off_t *Ngalphot, DVOCatFormat *format, char nativeBytes) { 858 859 GalPhot *galphot; 860 860 char extname[80]; 861 861 862 862 /* convert to the internal format */ 863 863 if (!gfits_scan (ftable[0].header, "EXTNAME", "%s", 1, extname)) { 864 fprintf (stderr, "EXTNAME missing for gal shapetable\n");864 fprintf (stderr, "EXTNAME missing for galphot table\n"); 865 865 return (FALSE); 866 866 } … … 868 868 # define SKIPPING_FORMAT(NAME, FORMAT, TYPE) \ 869 869 if (!strcmp (extname, NAME)) { \ 870 fprintf (stderr, "ERROR: format %s not defined for gal shape, skipping\n", NAME); \871 *Ngal shape= 0; \870 fprintf (stderr, "ERROR: format %s not defined for galphot, skipping\n", NAME); \ 871 *Ngalphot = 0; \ 872 872 return NULL; \ 873 873 } … … 875 875 # define CONVERT_FORMAT(NAME, FORMAT, TYPE) \ 876 876 if (!strcmp (extname, NAME)) { \ 877 Gal Shape_##TYPE *tmpGalShape; \878 tmpGal Shape = gfits_table_get_GalShape_##TYPE (ftable, Ngalshape, NULL, &nativeBytes); \879 if (!tmpGal Shape) { \880 fprintf (stderr, "ERROR: failed to read gal shapes\n"); \877 GalPhot_##TYPE *tmpGalPhot; \ 878 tmpGalPhot = gfits_table_get_GalPhot_##TYPE (ftable, Ngalphot, NULL, &nativeBytes); \ 879 if (!tmpGalPhot) { \ 880 fprintf (stderr, "ERROR: failed to read galphots\n"); \ 881 881 exit (2); \ 882 882 } \ 883 gal shape = GalShape_##TYPE##_ToInternal (tmpGalShape, *Ngalshape); \884 free (tmpGal Shape); \883 galphot = GalPhot_##TYPE##_ToInternal (tmpGalPhot, *Ngalphot); \ 884 free (tmpGalPhot); \ 885 885 *format = DVO_FORMAT_##FORMAT; \ 886 return (gal shape); }887 888 if (!strcmp (extname, "DVO_GAL SHAPE")) {889 gal shape = gfits_table_get_GalShape (ftable, Ngalshape, NULL, &nativeBytes);890 if (!gal shape) {891 fprintf (stderr, "ERROR: failed to read gal shapes\n");886 return (galphot); } 887 888 if (!strcmp (extname, "DVO_GALPHOT")) { 889 galphot = gfits_table_get_GalPhot (ftable, Ngalphot, NULL, &nativeBytes); 890 if (!galphot) { 891 fprintf (stderr, "ERROR: failed to read galphots\n"); 892 892 exit (2); 893 893 } 894 894 *format = DVO_FORMAT_INTERNAL; 895 return (gal shape);896 } 897 898 SKIPPING_FORMAT ("DVO_GAL SHAPE_PS1_REF", PS1_REF, PS1_REF);899 SKIPPING_FORMAT ("DVO_GAL SHAPE_ELIXIR", ELIXIR, Elixir);900 SKIPPING_FORMAT ("DVO_GAL SHAPE_LONEOS", LONEOS, Loneos);901 SKIPPING_FORMAT ("DVO_GAL SHAPE_PANSTARRS_DEV_0", PANSTARRS_DEV_0, Panstarrs_DEV_0);902 SKIPPING_FORMAT ("DVO_GAL SHAPE_PANSTARRS_DEV_1", PANSTARRS_DEV_1, Panstarrs_DEV_1);903 SKIPPING_FORMAT ("DVO_GAL SHAPE_PS1_DEV_1", PS1_DEV_1, PS1_DEV_1);904 SKIPPING_FORMAT ("DVO_GAL SHAPE_PS1_DEV_2", PS1_DEV_2, PS1_DEV_2);905 SKIPPING_FORMAT ("DVO_GAL SHAPE_PS1_V1", PS1_V1, PS1_V1);906 SKIPPING_FORMAT ("DVO_GAL SHAPE_PS1_V2", PS1_V2, PS1_V2);907 SKIPPING_FORMAT ("DVO_GAL SHAPE_PS1_V3", PS1_V3, PS1_V3);908 SKIPPING_FORMAT ("DVO_GAL SHAPE_PS1_V4", PS1_V4, PS1_V4);909 CONVERT_FORMAT ("DVO_GAL SHAPE_PS1_V5", PS1_V5, PS1_V5);910 SKIPPING_FORMAT ("DVO_GAL SHAPE_PS1_SIM", PS1_SIM, PS1_SIM);895 return (galphot); 896 } 897 898 SKIPPING_FORMAT ("DVO_GALPHOT_PS1_REF", PS1_REF, PS1_REF); 899 SKIPPING_FORMAT ("DVO_GALPHOT_ELIXIR", ELIXIR, Elixir); 900 SKIPPING_FORMAT ("DVO_GALPHOT_LONEOS", LONEOS, Loneos); 901 SKIPPING_FORMAT ("DVO_GALPHOT_PANSTARRS_DEV_0", PANSTARRS_DEV_0, Panstarrs_DEV_0); 902 SKIPPING_FORMAT ("DVO_GALPHOT_PANSTARRS_DEV_1", PANSTARRS_DEV_1, Panstarrs_DEV_1); 903 SKIPPING_FORMAT ("DVO_GALPHOT_PS1_DEV_1", PS1_DEV_1, PS1_DEV_1); 904 SKIPPING_FORMAT ("DVO_GALPHOT_PS1_DEV_2", PS1_DEV_2, PS1_DEV_2); 905 SKIPPING_FORMAT ("DVO_GALPHOT_PS1_V1", PS1_V1, PS1_V1); 906 SKIPPING_FORMAT ("DVO_GALPHOT_PS1_V2", PS1_V2, PS1_V2); 907 SKIPPING_FORMAT ("DVO_GALPHOT_PS1_V3", PS1_V3, PS1_V3); 908 SKIPPING_FORMAT ("DVO_GALPHOT_PS1_V4", PS1_V4, PS1_V4); 909 CONVERT_FORMAT ("DVO_GALPHOT_PS1_V5", PS1_V5, PS1_V5); 910 SKIPPING_FORMAT ("DVO_GALPHOT_PS1_SIM", PS1_SIM, PS1_SIM); 911 911 # undef CONVERT_FORMAT 912 912 # undef SKIPPING_FORMAT … … 914 914 fprintf (stderr, "table format unknown: %s\n", extname); 915 915 916 *Ngal shape= 0;916 *Ngalphot = 0; 917 917 return (NULL); 918 918 } 919 919 920 // Gal ShapeToFtable needs the Average since old formats stored galshape.dR,dD only921 int Gal ShapeToFtable (FTable *ftable, GalShape *galshape, off_t Ngalshape, DVOCatFormat format, int swapFromNative) {920 // GalPhotToFtable needs the Average since old formats stored galphot.dR,dD only 921 int GalPhotToFtable (FTable *ftable, GalPhot *galphot, off_t Ngalphot, DVOCatFormat format, int swapFromNative) { 922 922 923 923 # define FORMAT_CASE(FORMAT, TYPE) \ 924 924 case DVO_FORMAT_##FORMAT: { \ 925 Gal Shape_##TYPE *tmpGalShape; \926 tmpGal Shape = GalShapeInternalTo_##TYPE (galshape, Ngalshape); \927 gfits_table_set_Gal Shape_##TYPE (ftable, tmpGalShape, Ngalshape, swapFromNative); \928 free (tmpGal Shape); \925 GalPhot_##TYPE *tmpGalPhot; \ 926 tmpGalPhot = GalPhotInternalTo_##TYPE (galphot, Ngalphot); \ 927 gfits_table_set_GalPhot_##TYPE (ftable, tmpGalPhot, Ngalphot, swapFromNative); \ 928 free (tmpGalPhot); \ 929 929 break; } 930 930 … … 932 932 switch (format) { 933 933 case DVO_FORMAT_INTERNAL: { 934 gfits_table_set_Gal Shape (ftable, galshape, Ngalshape, swapFromNative);934 gfits_table_set_GalPhot (ftable, galphot, Ngalphot, swapFromNative); 935 935 break; } 936 936 … … 950 950 951 951 default: 952 fprintf (stderr, "table format unknown (gal shape)\n");952 fprintf (stderr, "table format unknown (galphot)\n"); 953 953 return (FALSE); 954 954 } -
branches/eam_branches/ohana.20150429/src/libdvo/src/dvo_convert_PS1_DEV_2.c
r38331 r38419 118 118 out[i].Nmeasure = in[i].Nmeasure; 119 119 out[i].Nmissing = in[i].Nmissing; 120 out[i].Ngal shape= in[i].Nextend;120 out[i].Ngalphot = in[i].Nextend; 121 121 out[i].measureOffset = in[i].measureOffset; 122 122 out[i].missingOffset = in[i].missingOffset; … … 152 152 out[i].Nmeasure = in[i].Nmeasure; 153 153 out[i].Nmissing = in[i].Nmissing; 154 out[i].Nextend = in[i].Ngal shape;154 out[i].Nextend = in[i].Ngalphot; 155 155 out[i].measureOffset = in[i].measureOffset; 156 156 out[i].missingOffset = in[i].missingOffset; -
branches/eam_branches/ohana.20150429/src/libdvo/src/dvo_convert_PS1_V1.c
r38331 r38419 138 138 out[i].Nmeasure = in[i].Nmeasure; 139 139 out[i].Nmissing = in[i].Nmissing; 140 out[i].Ngal shape = in[i].Ngalshape;140 out[i].Ngalphot = in[i].Ngalphot; 141 141 out[i].measureOffset = in[i].measureOffset; 142 142 out[i].missingOffset = in[i].missingOffset; … … 173 173 out[i].Nmeasure = in[i].Nmeasure; 174 174 out[i].Nmissing = in[i].Nmissing; 175 out[i].Ngal shape = in[i].Ngalshape;175 out[i].Ngalphot = in[i].Ngalphot; 176 176 out[i].measureOffset = in[i].measureOffset; 177 177 out[i].missingOffset = in[i].missingOffset; -
branches/eam_branches/ohana.20150429/src/libdvo/src/dvo_convert_PS1_V2.c
r38331 r38419 143 143 out[i].Nmeasure = in[i].Nmeasure; 144 144 out[i].Nmissing = in[i].Nmissing; 145 out[i].Ngal shape = in[i].Ngalshape;145 out[i].Ngalphot = in[i].Ngalphot; 146 146 out[i].measureOffset = in[i].measureOffset; 147 147 out[i].missingOffset = in[i].missingOffset; … … 182 182 out[i].Nmeasure = in[i].Nmeasure; 183 183 out[i].Nmissing = in[i].Nmissing; 184 out[i].Ngal shape = in[i].Ngalshape;184 out[i].Ngalphot = in[i].Ngalphot; 185 185 out[i].measureOffset = in[i].measureOffset; 186 186 out[i].missingOffset = in[i].missingOffset; -
branches/eam_branches/ohana.20150429/src/libdvo/src/dvo_convert_PS1_V3.c
r38331 r38419 143 143 out[i].Nmeasure = in[i].Nmeasure; 144 144 out[i].Nmissing = in[i].Nmissing; 145 out[i].Ngal shape = in[i].Ngalshape;145 out[i].Ngalphot = in[i].Ngalphot; 146 146 out[i].measureOffset = in[i].measureOffset; 147 147 out[i].missingOffset = in[i].missingOffset; … … 184 184 out[i].Nmeasure = in[i].Nmeasure; 185 185 out[i].Nmissing = in[i].Nmissing; 186 out[i].Ngal shape = in[i].Ngalshape;186 out[i].Ngalphot = in[i].Ngalphot; 187 187 out[i].measureOffset = in[i].measureOffset; 188 188 out[i].missingOffset = in[i].missingOffset; -
branches/eam_branches/ohana.20150429/src/libdvo/src/dvo_convert_PS1_V4.c
r38331 r38419 164 164 out[i].Nmeasure = in[i].Nmeasure; 165 165 out[i].Nmissing = in[i].Nmissing; 166 out[i].Ngal shape = in[i].Ngalshape;166 out[i].Ngalphot = in[i].Ngalphot; 167 167 out[i].measureOffset = in[i].measureOffset; 168 168 out[i].missingOffset = in[i].missingOffset; … … 208 208 out[i].Nmeasure = in[i].Nmeasure; 209 209 out[i].Nmissing = in[i].Nmissing; 210 out[i].Ngal shape = in[i].Ngalshape;210 out[i].Ngalphot = in[i].Ngalphot; 211 211 out[i].measureOffset = in[i].measureOffset; 212 212 out[i].missingOffset = in[i].missingOffset; … … 690 690 out[i].Nmeasure = in[i].Nmeasure; 691 691 out[i].Nmissing = in[i].Nmissing; 692 out[i].Ngal shape = in[i].Ngalshape;692 out[i].Ngalphot = in[i].Ngalphot; 693 693 out[i].measureOffset = in[i].measureOffset; 694 694 out[i].missingOffset = in[i].missingOffset; -
branches/eam_branches/ohana.20150429/src/libdvo/src/dvo_convert_PS1_V5.c
r38219 r38419 196 196 out[i].Nlensobj = in[i].Nlensobj; 197 197 out[i].Nstarpar = in[i].Nstarpar; 198 out[i].Ngal shape = in[i].Ngalshape;198 out[i].Ngalphot = in[i].Ngalphot; 199 199 200 200 out[i].measureOffset = in[i].measureOffset; … … 203 203 out[i].lensobjOffset = in[i].lensobjOffset; 204 204 out[i].starparOffset = in[i].starparOffset; 205 out[i].gal shapeOffset = in[i].galshapeOffset;205 out[i].galphotOffset = in[i].galphotOffset; 206 206 207 207 out[i].refColorBlue = in[i].refColorBlue; … … 264 264 out[i].Nlensobj = in[i].Nlensobj; 265 265 out[i].Nstarpar = in[i].Nstarpar; 266 out[i].Ngal shape = in[i].Ngalshape;266 out[i].Ngalphot = in[i].Ngalphot; 267 267 268 268 out[i].measureOffset = in[i].measureOffset; … … 271 271 out[i].lensobjOffset = in[i].lensobjOffset; 272 272 out[i].starparOffset = in[i].starparOffset; 273 out[i].gal shapeOffset = in[i].galshapeOffset;273 out[i].galphotOffset = in[i].galphotOffset; 274 274 275 275 out[i].refColorBlue = in[i].refColorBlue; … … 979 979 } 980 980 981 Gal Shape *GalShape_PS1_V5_ToInternal (GalShape_PS1_V5 *in, off_t Nvalues) {982 983 off_t i; 984 Gal Shape*out;985 986 ALLOCATE_ZERO (out, Gal Shape, Nvalues);987 988 for (i = 0; i < Nvalues; i++) { 989 dvo_gal shape_init (&out[i]);981 GalPhot *GalPhot_PS1_V5_ToInternal (GalPhot_PS1_V5 *in, off_t Nvalues) { 982 983 off_t i; 984 GalPhot *out; 985 986 ALLOCATE_ZERO (out, GalPhot, Nvalues); 987 988 for (i = 0; i < Nvalues; i++) { 989 dvo_galphot_init (&out[i]); 990 990 991 991 out[i].Xfit = in[i].Xfit; … … 1012 1012 } 1013 1013 1014 Gal Shape_PS1_V5 *GalShapeInternalTo_PS1_V5 (GalShape*in, off_t Nvalues) {1015 1016 off_t i; 1017 Gal Shape_PS1_V5 *out;1018 1019 ALLOCATE_ZERO (out, Gal Shape_PS1_V5, Nvalues);1014 GalPhot_PS1_V5 *GalPhotInternalTo_PS1_V5 (GalPhot *in, off_t Nvalues) { 1015 1016 off_t i; 1017 GalPhot_PS1_V5 *out; 1018 1019 ALLOCATE_ZERO (out, GalPhot_PS1_V5, Nvalues); 1020 1020 1021 1021 for (i = 0; i < Nvalues; i++) { … … 1298 1298 out[i].Nlensing = in[i].Nlensing; 1299 1299 out[i].Nlensobj = in[i].Nlensobj; 1300 out[i].Ngal shape = in[i].Ngalshape;1300 out[i].Ngalphot = in[i].Ngalphot; 1301 1301 1302 1302 out[i].measureOffset = in[i].measureOffset; … … 1305 1305 out[i].lensobjOffset = in[i].lensobjOffset; 1306 1306 out[i].starparOffset = in[i].starparOffset; 1307 out[i].gal shapeOffset = in[i].galshapeOffset;1307 out[i].galphotOffset = in[i].galphotOffset; 1308 1308 1309 1309 out[i].refColorBlue = in[i].refColorBlue; … … 1366 1366 SWAP_BYTE (110); // NLENSING 1367 1367 SWAP_BYTE (112); // NLENSOBJ 1368 SWAP_BYTE (114); // NGAL SHAPE1368 SWAP_BYTE (114); // NGALPHOT 1369 1369 SWAP_WORD (116); // OFF_MEASURE 1370 1370 SWAP_WORD (120); // OFF_MISSING 1371 1371 SWAP_WORD (124); // OFF_LENSING 1372 1372 SWAP_WORD (128); // OFF_LENSOBJ 1373 SWAP_WORD (132); // OFF_GAL SHAPE1373 SWAP_WORD (132); // OFF_GALPHOT 1374 1374 SWAP_WORD (136); // OFF_PARAMS 1375 1375 SWAP_WORD (140); // REF_COLOR_BLUE -
branches/eam_branches/ohana.20150429/src/libdvo/src/flatcorr_io.c
r38345 r38419 93 93 for (j = 0; j < flatcorrTable->image[i].Nx; j++) { 94 94 ALLOCATE (flatcorrTable->offset[i][j], float, flatcorrTable->image[i].Ny); 95 memset (flatcorrTable->offset[i][j], 0 .0, flatcorrTable->image[i].Ny*sizeof(float));95 memset (flatcorrTable->offset[i][j], 0, flatcorrTable->image[i].Ny*sizeof(float)); 96 96 } 97 97 }
Note:
See TracChangeset
for help on using the changeset viewer.
