Changeset 38351
- Timestamp:
- Jun 2, 2015, 12:35:49 PM (11 years ago)
- Location:
- branches/eam_branches/ohana.20150429/src/libdvo
- Files:
-
- 7 edited
-
include/dvo.h (modified) (3 diffs)
-
src/dvo_catalog.c (modified) (9 diffs)
-
src/dvo_catalog_mef.c (modified) (21 diffs)
-
src/dvo_catalog_raw.c (modified) (7 diffs)
-
src/dvo_catalog_split.c (modified) (78 diffs)
-
src/dvo_convert.c (modified) (6 diffs)
-
src/dvo_util.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ohana.20150429/src/libdvo/include/dvo.h
r38348 r38351 39 39 /* catalog values to be loaded */ 40 40 typedef enum { 41 LOAD_NONE= 0x0000,42 LOAD_AVES= 0x0001,43 LOAD_MEAS= 0x0002,44 LOAD_MISS= 0x0004,45 LOAD_SECF= 0x0008,46 SKIP_AVES= 0x0010,47 SKIP_MEAS= 0x0020,48 SKIP_MISS= 0x0040,49 SKIP_SECF= 0x0080,50 LOAD_LENSING= 0x0100,51 LOAD_LENSOBJ= 0x0200,52 SKIP_LENSING= 0x0400,53 SKIP_LENSOBJ= 0x0800,54 LOAD_STARPAR= 0x1000,55 SKIP_STARPAR= 0x2000,56 LOAD_GALSHAPE = 0x4000,57 SKIP_GALSHAPE = 0x8000,41 DVO_LOAD_NONE = 0x0000, 42 DVO_LOAD_AVERAGE = 0x0001, 43 DVO_LOAD_MEASURE = 0x0002, 44 DVO_LOAD_MISSING = 0x0004, 45 DVO_LOAD_SECFILT = 0x0008, 46 DVO_SKIP_AVERAGE = 0x0010, 47 DVO_SKIP_MEASURE = 0x0020, 48 DVO_SKIP_MISSING = 0x0040, 49 DVO_SKIP_SECFILT = 0x0080, 50 DVO_LOAD_LENSING = 0x0100, 51 DVO_LOAD_LENSOBJ = 0x0200, 52 DVO_SKIP_LENSING = 0x0400, 53 DVO_SKIP_LENSOBJ = 0x0800, 54 DVO_LOAD_STARPAR = 0x1000, 55 DVO_SKIP_STARPAR = 0x2000, 56 DVO_LOAD_GALSHAPE = 0x4000, 57 DVO_SKIP_GALSHAPE = 0x8000, 58 58 } DVOCatFlags; 59 59 … … 758 758 759 759 int Nsecfilt; /* number of secfilt entries for each average entry */ 760 off_t Naverage, Nmeasure, Nmissing, Nlensing, Nlensobj, Nstarpar, Ngalshape, Nsecf_mem; /* current number of each component in memory */761 off_t Nave s_disk, Nmeas_disk, Nmiss_disk, Nlensing_disk, Nlensobj_disk, Nstarpar_disk, Ngalshape_disk, Nsecf_disk; /* current number of each component on disk */762 off_t Nave s_off, Nmeas_off, Nmiss_off, Nlensing_off, Nlensobj_off, Nstarpar_off, Ngalshape_off, Nsecf_off; /* index of first loaded data value */760 off_t Naverage, Nmeasure, Nmissing, Nlensing, Nlensobj, Nstarpar, Ngalshape, Nsecfilt_mem; /* current number of each component in memory */ 761 off_t Naverage_disk, Nmeasure_disk, Nmissing_disk, Nlensing_disk, Nlensobj_disk, Nstarpar_disk, Ngalshape_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, Ngalshape_off, Nsecfilt_off; /* index of first loaded data value */ 763 763 764 764 // note that we use these for the full-sky relphot analysis … … 974 974 DVOCatFormat FtableGetFormat (FTable *ftable); 975 975 976 Measure *FtableToMeasure (FTable *ftable, Average *average, off_t *Nmeasure, DVOCatFormat *format, char nativeOrder);977 976 Average *FtableToAverage (FTable *ftable, off_t *Naverage, DVOCatFormat *format, SecFilt **primary, char nativeOrder); 978 SecFilt *FtableToSecFilt (FTable *ftable, off_t *Nsecfilt, DVOCatFormat *format, char nativeOrder); 979 Lensing *FtableToLensing (FTable *ftable, off_t *Nlensing, DVOCatFormat *format, char nativeOrder); 980 Lensobj *FtableToLensobj (FTable *ftable, off_t *Nlensobj, DVOCatFormat *format, char nativeOrder); 981 StarPar *FtableToStarPar (FTable *ftable, off_t *Nstarpar, DVOCatFormat *format, char nativeOrder); 982 GalShape *FtableToGalShape (FTable *ftable, off_t *Ngalshape, DVOCatFormat *format, char nativeOrder); 977 978 Measure *FtableToMeasure (FTable *ftable, Average *average, off_t *Nmeasure, DVOCatFormat *format, char nativeOrder); 979 Missing *FtableToMissing (FTable *ftable, Average *average, off_t *Nmissing, DVOCatFormat *format, char nativeBytes); 980 SecFilt *FtableToSecFilt (FTable *ftable, Average *average, off_t *Nsecfilt, DVOCatFormat *format, char nativeOrder); 981 Lensing *FtableToLensing (FTable *ftable, Average *average, off_t *Nlensing, DVOCatFormat *format, char nativeOrder); 982 Lensobj *FtableToLensobj (FTable *ftable, Average *average, off_t *Nlensobj, DVOCatFormat *format, char nativeOrder); 983 StarPar *FtableToStarPar (FTable *ftable, Average *average, off_t *Nstarpar, DVOCatFormat *format, char nativeOrder); 984 GalShape *FtableToGalShape (FTable *ftable, Average *average, off_t *Ngalshape, DVOCatFormat *format, char nativeOrder); 983 985 984 986 int FtableToImage (FTable *ftable, Header *theader, DVOCatFormat *format); -
branches/eam_branches/ohana.20150429/src/libdvo/src/dvo_catalog.c
r38346 r38351 527 527 catalog[0].catformat = DVO_FORMAT_UNDEF; 528 528 catalog[0].catcompress = DVO_COMPRESS_NONE; 529 catalog[0].catflags = LOAD_NONE;529 catalog[0].catflags = DVO_LOAD_NONE; 530 530 catalog[0].Nsecfilt = 0; 531 531 } … … 554 554 catalog[0].Nmeasure = 0; 555 555 catalog[0].Nmissing = 0; 556 catalog[0].Nsecf _mem = 0;556 catalog[0].Nsecfilt_mem = 0; 557 557 558 558 catalog[0].Nlensing = 0; … … 561 561 catalog[0].Nstarpar = 0; 562 562 563 catalog[0].Nave s_disk = 0;564 catalog[0].Nmeas _disk = 0;565 catalog[0].Nmiss _disk = 0;566 catalog[0].Nsecf _disk = 0;563 catalog[0].Naverage_disk = 0; 564 catalog[0].Nmeasure_disk = 0; 565 catalog[0].Nmissing_disk = 0; 566 catalog[0].Nsecfilt_disk = 0; 567 567 568 568 catalog[0].Nlensing_disk = 0; … … 571 571 catalog[0].Nstarpar_disk = 0; 572 572 573 catalog[0].Nave s_off = 0;574 catalog[0].Nmeas _off = 0;575 catalog[0].Nmiss _off = 0;576 catalog[0].Nsecf _off = 0;573 catalog[0].Naverage_off = 0; 574 catalog[0].Nmeasure_off = 0; 575 catalog[0].Nmissing_off = 0; 576 catalog[0].Nsecfilt_off = 0; 577 577 578 578 catalog[0].Nlensing_off = 0; … … 900 900 catalog[0].secfilt = outsec; 901 901 catalog[0].Nsecfilt = Nsecfilt; 902 catalog[0].Nsecf _mem = Nsecfilt * catalog[0].Naverage;902 catalog[0].Nsecfilt_mem = Nsecfilt * catalog[0].Naverage; 903 903 } 904 904 return (TRUE); … … 965 965 if (catalog[0].secfilt) { 966 966 free (catalog[0].secfilt); 967 catalog[0].Nsecf _mem = 0;967 catalog[0].Nsecfilt_mem = 0; 968 968 catalog[0].secfilt = NULL; 969 969 } … … 989 989 990 990 /* 991 mode : items to read ( LOAD_AVES | LOAD_MEAS | LOAD_MISS | LOAD_SECF)991 mode : items to read (DVO_LOAD_AVERAGE | DVO_LOAD_MEASURE | DVO_LOAD_MISSING | DVO_LOAD_SECFILT) 992 992 format : what table structure on disk (INTERNAL, LONEOS, etc, ) 993 993 style : raw, mef, split, mysql … … 1022 1022 1023 1023 // skip empty cpt files 1024 if (primary && !catalog->Nave s_disk) {1024 if (primary && !catalog->Naverage_disk) { 1025 1025 return TRUE; 1026 1026 } … … 1111 1111 int dvo_catalog_unlink_backup (Catalog *catalog, int primary) { 1112 1112 1113 if (primary && !catalog->Nave s_disk) {1113 if (primary && !catalog->Naverage_disk) { 1114 1114 // skip empty files (empty when read, but output may not be empty) 1115 1115 return TRUE; -
branches/eam_branches/ohana.20150429/src/libdvo/src/dvo_catalog_mef.c
r38348 r38351 26 26 } 27 27 28 // NSTARS, average, Nave s_disk28 // NSTARS, average, Naverage_disk 29 29 30 30 # define GET_TABLE_SIZES(HFIELD, CFIELD, DFIELD, REQUIRED) \ … … 41 41 42 42 /* get the components and sizes from the header */ 43 GET_TABLE_SIZES ("NSTARS", average, Nave s_disk, TRUE);44 GET_TABLE_SIZES ("NMEAS", measure, Nmeas _disk, TRUE);45 GET_TABLE_SIZES ("NMISS", missing, Nmiss _disk, FALSE);43 GET_TABLE_SIZES ("NSTARS", average, Naverage_disk, TRUE); 44 GET_TABLE_SIZES ("NMEAS", measure, Nmeasure_disk, TRUE); 45 GET_TABLE_SIZES ("NMISS", missing, Nmissing_disk, FALSE); 46 46 GET_TABLE_SIZES ("NLENSING", lensing, Nlensing_disk, FALSE); 47 47 GET_TABLE_SIZES ("NLENSOBJ", lensobj, Nlensobj_disk, FALSE); … … 54 54 if (!gfits_scan (&catalog[0].header, "NSECFILT", "%d", 1, &Nsecfilt)) Nsecfilt = 0; 55 55 catalog[0].Nsecfilt = Nsecfilt; 56 catalog[0].Nsecf _disk = Naverage * Nsecfilt;56 catalog[0].Nsecfilt_disk = Naverage * Nsecfilt; 57 57 catalog[0].secfilt = NULL; 58 58 … … 71 71 72 72 /* read Average table data (or skip) */ 73 if (catalog[0].catflags & LOAD_AVES) {73 if (catalog[0].catflags & DVO_LOAD_AVERAGE) { 74 74 if (!gfits_fread_ftable_data (catalog[0].f, &ftable, FALSE)) { 75 75 if (VERBOSE) fprintf (stderr, "can't read table average data"); … … 78 78 /* old versions of DVO stored one of the average magnitudes in Average. we save this if needed */ 79 79 catalog[0].average = FtableToAverage (&ftable, &Naverage, &catalog[0].catformat, &primary, FALSE); 80 if (Naverage != catalog[0].Nave s_disk) {81 fprintf (stderr, "Warning: mismatch between Naverage in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n", Naverage, catalog[0].Nave s_disk);82 } 83 catalog[0].Naverage = catalog[0].Nave s_disk;84 catalog[0].Nave s_off = 0;80 if (Naverage != catalog[0].Naverage_disk) { 81 fprintf (stderr, "Warning: mismatch between Naverage in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n", Naverage, catalog[0].Naverage_disk); 82 } 83 catalog[0].Naverage = catalog[0].Naverage_disk; 84 catalog[0].Naverage_off = 0; 85 85 } else { 86 86 catalog[0].catformat = FtableGetFormat (&ftable); … … 89 89 ALLOCATE (catalog[0].average, Average, 1); 90 90 catalog[0].Naverage = 0; 91 catalog[0].Nave s_off = catalog[0].Naves_disk;91 catalog[0].Naverage_off = catalog[0].Naverage_disk; 92 92 } 93 93 gfits_free_header (&header); … … 100 100 } 101 101 /* read Measure table data */ 102 if (catalog[0].catflags & LOAD_MEAS) {102 if (catalog[0].catflags & DVO_LOAD_MEASURE) { 103 103 if (!gfits_fread_ftable_data (catalog[0].f, &ftable, FALSE)) { 104 104 if (VERBOSE) fprintf (stderr, "can't read table measure data"); … … 106 106 } 107 107 catalog[0].measure = FtableToMeasure (&ftable, catalog[0].average, &catalog[0].Nmeasure, &catalog[0].catformat, FALSE); 108 if (Nmeasure != catalog[0].Nmeas _disk) {109 fprintf (stderr, "Warning: mismatch between Nmeasure in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n", Nmeasure, catalog[0].Nmeas _disk);110 } 111 catalog[0].Nmeasure = catalog[0].Nmeas _disk;112 catalog[0].Nmeas _off = 0;108 if (Nmeasure != catalog[0].Nmeasure_disk) { 109 fprintf (stderr, "Warning: mismatch between Nmeasure in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n", Nmeasure, catalog[0].Nmeasure_disk); 110 } 111 catalog[0].Nmeasure = catalog[0].Nmeasure_disk; 112 catalog[0].Nmeasure_off = 0; 113 113 } else { 114 114 Nbytes = gfits_data_size (&header); … … 116 116 ALLOCATE (catalog[0].measure, Measure, 1); 117 117 catalog[0].Nmeasure = 0; 118 catalog[0].Nmeas _off = catalog[0].Nmeas_disk;118 catalog[0].Nmeasure_off = catalog[0].Nmeasure_disk; 119 119 } 120 120 … … 125 125 } 126 126 /* read Missing table data */ 127 if (catalog[0].catflags & LOAD_MISS) {127 if (catalog[0].catflags & DVO_LOAD_MISSING) { 128 128 if (!gfits_fread_ftable_data (catalog[0].f, &ftable, FALSE)) { 129 129 if (VERBOSE) fprintf (stderr, "can't read table missing data"); … … 136 136 exit (2); 137 137 } 138 if (Nmissing != catalog[0].Nmiss _disk) {139 fprintf (stderr, "Warning: mismatch between Nmissing in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n", Nmissing, catalog[0].Nmiss _disk);140 } 141 catalog[0].Nmissing = catalog[0].Nmiss _disk;142 catalog[0].Nmiss _off = 0;138 if (Nmissing != catalog[0].Nmissing_disk) { 139 fprintf (stderr, "Warning: mismatch between Nmissing in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n", Nmissing, catalog[0].Nmissing_disk); 140 } 141 catalog[0].Nmissing = catalog[0].Nmissing_disk; 142 catalog[0].Nmissing_off = 0; 143 143 } else { 144 144 Nbytes = gfits_data_size (&header); … … 146 146 ALLOCATE (catalog[0].missing, Missing, 1); 147 147 catalog[0].Nmissing = 0; 148 catalog[0].Nmiss _off = catalog[0].Nmiss_disk;148 catalog[0].Nmissing_off = catalog[0].Nmissing_disk; 149 149 } 150 150 … … 155 155 } 156 156 /* read secfilt table data */ 157 if (catalog[0].catflags & LOAD_SECF) {157 if (catalog[0].catflags & DVO_LOAD_SECFILT) { 158 158 if (!gfits_fread_ftable_data (catalog[0].f, &ftable, FALSE)) { 159 159 if (VERBOSE) fprintf (stderr, "can't read table secfilt data"); … … 163 163 /* how many entries do we expect from the secfilt table? */ 164 164 Nexpect = catalog[0].Nsecfilt * catalog[0].Naverage; 165 catalog[0].secfilt = FtableToSecFilt (&ftable, &Nitems, &catalog[0].catformat, FALSE);165 catalog[0].secfilt = FtableToSecFilt (&ftable, catalog[0].average, &Nitems, &catalog[0].catformat, FALSE); 166 166 if (Nexpect != Nitems) { 167 167 fprintf (stderr, "Warning: mismatch between Nsecfilt items in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n", Nexpect, Nitems); … … 176 176 Ntmpfilt = catalog[0].Nsecfilt; 177 177 Nsecfilt = catalog[0].Nsecfilt + 1; 178 Ntotal = Nsecfilt * catalog[0].Nave s_disk;178 Ntotal = Nsecfilt * catalog[0].Naverage_disk; 179 179 ALLOCATE (catalog[0].secfilt, SecFilt, Ntotal); 180 for (i = 0; i < catalog[0].Nave s_disk; i++) {180 for (i = 0; i < catalog[0].Naverage_disk; i++) { 181 181 catalog[0].secfilt[i*Nsecfilt + 0] = primary[i]; 182 182 for (j = 0; j < Ntmpfilt; j++) { … … 185 185 } 186 186 catalog[0].Nsecfilt = Nsecfilt; 187 catalog[0].Nsecf _disk = Ntotal;187 catalog[0].Nsecfilt_disk = Ntotal; 188 188 free (tmpfilt); 189 189 free (primary); 190 190 } 191 catalog[0].Nsecf _mem = catalog[0].Nsecf_disk;192 catalog[0].Nsecf _off = 0;191 catalog[0].Nsecfilt_mem = catalog[0].Nsecfilt_disk; 192 catalog[0].Nsecfilt_off = 0; 193 193 } else { 194 194 /* no real need to skip the data array here... */ … … 198 198 free (primary); 199 199 catalog[0].Nsecfilt ++; 200 catalog[0].Nsecf _disk = catalog[0].Nsecfilt * catalog[0].Naves_disk;200 catalog[0].Nsecfilt_disk = catalog[0].Nsecfilt * catalog[0].Naverage_disk; 201 201 } 202 202 ALLOCATE (catalog[0].secfilt, SecFilt, 1); 203 catalog[0].Nsecf _mem = 0;204 catalog[0].Nsecf _off = catalog[0].Nsecf_disk;203 catalog[0].Nsecfilt_mem = 0; 204 catalog[0].Nsecfilt_off = catalog[0].Nsecfilt_disk; 205 205 } 206 206 … … 211 211 } 212 212 /* read Lensing table data */ 213 if (catalog[0].catflags & LOAD_LENSING) {213 if (catalog[0].catflags & DVO_LOAD_LENSING) { 214 214 if (!gfits_fread_ftable_data (catalog[0].f, &ftable, FALSE)) { 215 215 if (VERBOSE) fprintf (stderr, "can't read table lensing data"); 216 216 return (FALSE); 217 217 } 218 catalog[0].lensing = FtableToLensing (&ftable, &catalog[0].Nlensing, &catalog[0].catformat, FALSE);218 catalog[0].lensing = FtableToLensing (&ftable, catalog[0].average, &catalog[0].Nlensing, &catalog[0].catformat, FALSE); 219 219 if (Nlensing != catalog[0].Nlensing_disk) { 220 220 fprintf (stderr, "Warning: mismatch between Nlensing in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n", Nlensing, catalog[0].Nlensing_disk); … … 236 236 } 237 237 /* read Lensobj table data */ 238 if (catalog[0].catflags & LOAD_LENSOBJ) {238 if (catalog[0].catflags & DVO_LOAD_LENSOBJ) { 239 239 if (!gfits_fread_ftable_data (catalog[0].f, &ftable, FALSE)) { 240 240 if (VERBOSE) fprintf (stderr, "can't read table lensobj data"); 241 241 return (FALSE); 242 242 } 243 catalog[0].lensobj = FtableToLensobj (&ftable, &catalog[0].Nlensobj, &catalog[0].catformat, FALSE);243 catalog[0].lensobj = FtableToLensobj (&ftable, catalog[0].average, &catalog[0].Nlensobj, &catalog[0].catformat, FALSE); 244 244 if (Nlensobj != catalog[0].Nlensobj_disk) { 245 245 fprintf (stderr, "Warning: mismatch between Nlensobj in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n", Nlensobj, catalog[0].Nlensobj_disk); … … 261 261 } 262 262 /* read StarPar table data */ 263 if (catalog[0].catflags & LOAD_STARPAR) {263 if (catalog[0].catflags & DVO_LOAD_STARPAR) { 264 264 if (!gfits_fread_ftable_data (catalog[0].f, &ftable, FALSE)) { 265 265 if (VERBOSE) fprintf (stderr, "can't read table starpar data"); 266 266 return (FALSE); 267 267 } 268 catalog[0].starpar = FtableToStarPar (&ftable, &catalog[0].Nstarpar, &catalog[0].catformat, FALSE);268 catalog[0].starpar = FtableToStarPar (&ftable, catalog[0].average, &catalog[0].Nstarpar, &catalog[0].catformat, FALSE); 269 269 if (Nstarpar != catalog[0].Nstarpar_disk) { 270 270 fprintf (stderr, "Warning: mismatch between Nstarpar in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n", Nstarpar, catalog[0].Nstarpar_disk); … … 286 286 } 287 287 /* read GalShape table data */ 288 if (catalog[0].catflags & LOAD_GALSHAPE) {288 if (catalog[0].catflags & DVO_LOAD_GALSHAPE) { 289 289 if (!gfits_fread_ftable_data (catalog[0].f, &ftable, FALSE)) { 290 290 if (VERBOSE) fprintf (stderr, "can't read table galshape data"); 291 291 return (FALSE); 292 292 } 293 catalog[0].galshape = FtableToGalShape (&ftable, &catalog[0].Ngalshape, &catalog[0].catformat, FALSE);293 catalog[0].galshape = FtableToGalShape (&ftable, catalog[0].average, &catalog[0].Ngalshape, &catalog[0].catformat, FALSE); 294 294 if (Ngalshape != catalog[0].Ngalshape_disk) { 295 295 fprintf (stderr, "Warning: mismatch between Ngalshape in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n", Ngalshape, catalog[0].Ngalshape_disk); -
branches/eam_branches/ohana.20150429/src/libdvo/src/dvo_catalog_raw.c
r37807 r38351 136 136 /* read and convert the averages (use a macro to clean this up?) */ 137 137 /* old versions of DVO stored one of the average magnitudes in Average. we save this if needed */ 138 if (catalog[0].catflags & LOAD_AVES) {138 if (catalog[0].catflags & DVO_LOAD_AVERAGE) { 139 139 catalog[0].average = ReadRawAverage (catalog[0].f, catalog[0].Naverage, catalog[0].catformat, &primary); 140 140 } else { … … 145 145 146 146 /* read and convert the measures (use a macro to clean this up?) */ 147 if (catalog[0].catflags & LOAD_MEAS) {147 if (catalog[0].catflags & DVO_LOAD_MEASURE) { 148 148 catalog[0].measure = ReadRawMeasure (catalog[0].f, catalog[0].average, catalog[0].Nmeasure, catalog[0].catformat); 149 149 } else { … … 154 154 155 155 /* read and convert missing */ 156 if (catalog[0].catflags & LOAD_MISS) {156 if (catalog[0].catflags & DVO_LOAD_MISSING) { 157 157 ALLOCATE (catalog[0].missing, Missing, MAX (catalog[0].Nmissing, 1)); 158 158 Nitems = catalog[0].Nmissing; … … 170 170 171 171 /* read and convert secfilt */ 172 if (catalog[0].catflags & LOAD_SECF) {172 if (catalog[0].catflags & DVO_LOAD_SECFILT) { 173 173 Nitems = catalog[0].Naverage * catalog[0].Nsecfilt; 174 174 catalog[0].secfilt = ReadRawSecFilt (catalog[0].f, Nitems, catalog[0].catformat); … … 191 191 } 192 192 catalog[0].Nsecfilt = Nsecfilt; 193 catalog[0].Nsecf _mem = Ntotal;193 catalog[0].Nsecfilt_mem = Ntotal; 194 194 free (primary); 195 195 } … … 210 210 211 211 /* check data integrity */ 212 if (catalog[0].catflags & LOAD_AVES) {212 if (catalog[0].catflags & DVO_LOAD_AVERAGE) { 213 213 for (i = Nmeas = Nmiss = 0; i < catalog[0].Naverage; i++) { 214 214 Nmeas += catalog[0].average[i].Nmeasure; … … 226 226 227 227 /* save the current number so we can do partial updates */ 228 catalog[0].Nave s_disk = catalog[0].Naverage;229 catalog[0].Nmeas _disk = catalog[0].Nmeasure;230 catalog[0].Nmiss _disk = catalog[0].Nmissing;228 catalog[0].Naverage_disk = catalog[0].Naverage; 229 catalog[0].Nmeasure_disk = catalog[0].Nmeasure; 230 catalog[0].Nmissing_disk = catalog[0].Nmissing; 231 231 232 232 return (TRUE); -
branches/eam_branches/ohana.20150429/src/libdvo/src/dvo_catalog_split.c
r38348 r38351 27 27 28 28 // XXX this translation only works if we have loaded / created a matched average/secfilt set 29 assert (catalog[0].Nsecf _mem == catalog[0].Nsecfilt*catalog[0].Naverage);29 assert (catalog[0].Nsecfilt_mem == catalog[0].Nsecfilt*catalog[0].Naverage); 30 30 31 31 Nallfilt = catalog[0].Nsecfilt; … … 42 42 } 43 43 catalog[0].Nsecfilt --; 44 catalog[0].Nsecf _mem = catalog[0].Naverage*catalog[0].Nsecfilt;44 catalog[0].Nsecfilt_mem = catalog[0].Naverage*catalog[0].Nsecfilt; 45 45 46 46 *myPrimary = primary; … … 58 58 Ntmpfilt = catalog[0].Nsecfilt; 59 59 60 // we do NOT modify Nsecf _disk; this operation only modifies in in-memory values60 // we do NOT modify Nsecfilt_disk; this operation only modifies in in-memory values 61 61 62 62 catalog[0].Nsecfilt ++; … … 64 64 Ntotal = Nsecfilt * Naves; 65 65 66 catalog[0].Nsecf _mem = Ntotal;66 catalog[0].Nsecfilt_mem = Ntotal; 67 67 68 68 ALLOCATE (catalog[0].secfilt, SecFilt, Ntotal); … … 84 84 // ohana_memcheck_func (TRUE); 85 85 86 87 if (0) {88 // XXX a TEST : is the data corrupted or the file?89 char name[1024];90 snprintf (name, 1024, "%s.phu.v2", catalog->filename);91 FILE *f = fopen (name, "w");92 fwrite (catalog->header.buffer, sizeof(char), catalog->header.datasize, f);93 // fprintf (stderr, "save %d bytes in %s (%zx)\n", (int) catalog->header.datasize, name, (size_t) catalog->header.buffer);94 // fprintf (stderr, "first bytes are %c%c%c%c%c%c%c%c\n",95 // catalog->header.buffer[0], catalog->header.buffer[1], catalog->header.buffer[2], catalog->header.buffer[3],96 // catalog->header.buffer[4], catalog->header.buffer[5], catalog->header.buffer[6], catalog->header.buffer[7]);97 fclose (f);98 }99 if (0) {100 // XXX a TEST : is the data corrupted or the file?101 char name[1024];102 snprintf (name, 1024, "%s.phu", catalog->filename);103 FILE *f = fopen (name, "w");104 fwrite (catalog->header.buffer, sizeof(char), catalog->header.datasize, f);105 // fprintf (stderr, "save %d bytes in %s (%zx)\n", (int) catalog->header.datasize, name, (size_t) catalog->header.buffer);106 // fprintf (stderr, "first bytes are %c%c%c%c%c%c%c%c\n",107 // catalog->header.buffer[0], catalog->header.buffer[1], catalog->header.buffer[2], catalog->header.buffer[3],108 // catalog->header.buffer[4], catalog->header.buffer[5], catalog->header.buffer[6], catalog->header.buffer[7]);109 fclose (f);110 }111 # if (0)112 {113 // XXX a TEST : is the data corrupted or the file?114 char name[1024];115 snprintf (name, 1024, "%s.phu.v2", catalog->filename);116 FILE *f = fopen (name, "w");117 fwrite (catalog->header.buffer, sizeof(char), catalog->header.datasize, f);118 fprintf (stderr, "save %d bytes in %s (%zx)\n", (int) catalog->header.datasize, name, (size_t) catalog->header.buffer);119 fprintf (stderr, "first bytes are %c%c%c%c%c%c%c%c\n",120 catalog->header.buffer[0], catalog->header.buffer[1], catalog->header.buffer[2], catalog->header.buffer[3],121 catalog->header.buffer[4], catalog->header.buffer[5], catalog->header.buffer[6], catalog->header.buffer[7]);122 fclose (f);123 }124 {125 // XXX a TEST : is the data corrupted or the file?126 char name[1024];127 snprintf (name, 1024, "%s.phu.v3", catalog->filename);128 FILE *f = fopen (name, "w");129 fwrite (catalog->header.buffer, sizeof(char), catalog->header.datasize, f);130 fprintf (stderr, "save %d bytes in %s (%zx)\n", (int) catalog->header.datasize, name, (size_t) catalog->header.buffer);131 fprintf (stderr, "first bytes are %c%c%c%c%c%c%c%c\n",132 catalog->header.buffer[0], catalog->header.buffer[1], catalog->header.buffer[2], catalog->header.buffer[3],133 catalog->header.buffer[4], catalog->header.buffer[5], catalog->header.buffer[6], catalog->header.buffer[7]);134 fclose (f);135 }136 # endif137 86 /* rewind file pointers and truncate (file is still open) */ 138 87 if (fseeko (catalog->f, 0LL, SEEK_SET)) { … … 278 227 279 228 // ftable must already exist and have a valid, loaded header 280 int gfits_fread_uncompressed (Catalog *catalog, FTable *ftable, char *nativeOrder ) {229 int gfits_fread_uncompressed (Catalog *catalog, FTable *ftable, char *nativeOrder, char VERBOSE) { 281 230 282 231 // fread_ftable_data requires the header … … 310 259 // copies values but does not allocate new memory 311 260 gfits_copy_header_ptr (&rawheader, ftable->header); 312 gfits_copy_ table_ptr (&rawtable, ftable);261 gfits_copy_ftable_ptr (&rawtable, ftable); 313 262 *nativeOrder = TRUE; 314 263 } 315 264 return TRUE; 316 265 } 266 267 // LOAD_SUBCAT(measure,MEASURE,Measure) 268 269 # define LOAD_SUBCAT(FIELD, NAME, STRUCT) \ 270 { \ 271 Header header; \ 272 FTable ftable; \ 273 off_t Nitems; \ 274 gfits_init_table (&ftable); \ 275 gfits_init_header (&header); \ 276 ftable.header = &header; \ 277 int status = DVO_CAT_OPEN_EMPTY; \ 278 if (!(catalog[0].catflags & DVO_SKIP_##NAME)) { \ 279 status = dvo_catalog_open_subcat (catalog, &catalog[0].FIELD##_catalog, ftable.header, #NAME, VERBOSE); \ 280 if (status == DVO_CAT_OPEN_FAIL) { \ 281 return (FALSE); \ 282 } \ 283 if ((status == DVO_CAT_OPEN_EMPTY) && (catalog[0].N##FIELD##_disk > 0)) { \ 284 return (FALSE); \ 285 } \ 286 } \ 287 if ((status != DVO_CAT_OPEN_EMPTY) && (catalog[0].catflags & DVO_LOAD_##NAME)) { \ 288 char nativeOrder = FALSE; \ 289 /* read table data */ \ 290 if (!gfits_fread_uncompressed (catalog[0].FIELD##_catalog, &ftable, &nativeOrder, VERBOSE)) { \ 291 if (VERBOSE) fprintf (stderr, "can't read table %s data\n", #FIELD); \ 292 gfits_free_header (&header); \ 293 return (FALSE); \ 294 } \ 295 /* convert data format to internal : returns number of row read in Nvalues */ \ 296 catalog[0].FIELD = FtableTo##STRUCT (&ftable, catalog[0].average, &Nitems, &catalog[0].catformat, nativeOrder); \ 297 if (Nitems != catalog[0].N##FIELD##_disk) { \ 298 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); \ 299 } \ 300 catalog[0].N##FIELD = catalog[0].N##FIELD##_disk; \ 301 catalog[0].N##FIELD##_off = 0; \ 302 } else { \ 303 if (catalog[0].FIELD##_catalog) { \ 304 gfits_free_header (&catalog[0].FIELD##_catalog[0].header); \ 305 } else { \ 306 ALLOCATE (catalog[0].FIELD##_catalog, Catalog, 1); \ 307 dvo_catalog_init (catalog[0].FIELD##_catalog, TRUE); \ 308 } \ 309 gfits_create_header (&catalog[0].FIELD##_catalog[0].header); \ 310 ALLOCATE (catalog[0].FIELD, STRUCT, 1); \ 311 catalog[0].N##FIELD = 0; \ 312 catalog[0].N##FIELD##_off = catalog[0].N##FIELD##_disk; \ 313 } \ 314 gfits_free_header (&header); \ 315 } 317 316 318 317 int dvo_catalog_load_split (Catalog *catalog, int VERBOSE) { … … 326 325 off_t Nstarpar; 327 326 off_t Ngalshape; 328 off_t Nitems; 329 int status, Nsecfilt; 327 int Nsecfilt; 330 328 SecFilt *primary; 331 329 332 330 primary = NULL; 333 status = FALSE;334 331 335 332 /* get the components from the header - these duplicate information in the split files (NAXIS2) */ … … 357 354 358 355 /* save the current number so we can do partial updates */ 359 catalog[0].Nave s_disk = Naverage;360 catalog[0].Nmeas _disk = Nmeasure;361 catalog[0].Nmiss _disk = Nmissing;362 catalog[0].Nsecf _disk = Naverage * Nsecfilt;356 catalog[0].Naverage_disk = Naverage; 357 catalog[0].Nmeasure_disk = Nmeasure; 358 catalog[0].Nmissing_disk = Nmissing; 359 catalog[0].Nsecfilt_disk = Naverage * Nsecfilt; 363 360 catalog[0].Nlensing_disk = Nlensing; 364 361 catalog[0].Nlensobj_disk = Nlensobj; 365 362 catalog[0].Nstarpar_disk = Nstarpar; 366 363 catalog[0].Ngalshape_disk = Ngalshape; 367 368 /** Nsecfilt is unusual: it does not list the number of data items in the table369 instead, the number of items is Nsecfilt * Naverage. **/370 catalog[0].Nsecfilt = Nsecfilt;371 364 372 365 /* default values, but we will assign these a valid value before we exit (even if empty) */ … … 388 381 389 382 /* ftable header storage for below */ 383 char nativeOrder; 390 384 Header header; 391 385 FTable ftable; … … 399 393 return (FALSE); 400 394 } 401 if (catalog[0].catflags & LOAD_AVES) { 402 char nativeOrder = FALSE; 403 if (!gfits_fread_uncompressed (catalog, &ftable, &nativeOrder)) { 395 if (catalog[0].catflags & DVO_LOAD_AVERAGE) { 396 if (!gfits_fread_uncompressed (catalog, &ftable, &nativeOrder, VERBOSE)) { 404 397 if (VERBOSE) fprintf (stderr, "can't read Average table\n"); 405 398 gfits_free_header (&header); … … 407 400 } 408 401 409 /* convert the savedversion of the table to the internal version. Old versions of DVO stored402 /* convert the disk version of the table to the internal version. Old versions of DVO stored 410 403 * one of the average magnitudes in Average. We save this in case it is needed below. NOTE: 411 404 * primary is only used if we read in the secfilt table, otherwise it should be freed */ 412 405 catalog[0].average = FtableToAverage (&ftable, &Naverage, &catalog[0].catformat, &primary, nativeOrder); 413 if (Naverage != catalog[0].Nave s_disk) {414 fprintf (stderr, "Warning: mismatch between Naverage in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n", Naverage, catalog[0].Nave s_disk);415 } 416 catalog[0].Naverage = catalog[0].Nave s_disk;417 catalog[0].Nave s_off = 0;406 if (Naverage != catalog[0].Naverage_disk) { 407 fprintf (stderr, "Warning: mismatch between Naverage in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n", Naverage, catalog[0].Naverage_disk); 408 } 409 catalog[0].Naverage = catalog[0].Naverage_disk; 410 catalog[0].Naverage_off = 0; 418 411 } else { 419 412 catalog[0].catformat = FtableGetFormat (&ftable); 420 413 ALLOCATE (catalog[0].average, Average, 1); 421 414 catalog[0].Naverage = 0; 422 catalog[0].Nave s_off = catalog[0].Naves_disk;415 catalog[0].Naverage_off = catalog[0].Naverage_disk; 423 416 } 424 417 gfits_free_header (&header); 425 418 426 419 /*** Measure Table ***/ 427 gfits_init_table (&ftable); 428 gfits_init_header (&header); 429 ftable.header = &header; 430 if (!(catalog[0].catflags & SKIP_MEAS)) { 431 // unless we specify 'skip', we still need to load the 432 status = dvo_catalog_open_subcat (catalog, &catalog[0].measure_catalog, ftable.header, "MEASURE", VERBOSE); 433 if (status == DVO_CAT_OPEN_FAIL) { 434 return (FALSE); 435 } 436 if ((status == DVO_CAT_OPEN_EMPTY) && (catalog[0].Nmeas_disk > 0)) { 437 return (FALSE); 438 } 439 } 440 if ((status != DVO_CAT_OPEN_EMPTY) && (catalog[0].catflags & LOAD_MEAS)) { 441 char nativeOrder = FALSE; 442 /* read Measure table data */ 443 if (!gfits_fread_uncompressed (catalog[0].measure_catalog, &ftable, &nativeOrder)) { 444 if (VERBOSE) fprintf (stderr, "can't read table measure data\n"); 445 gfits_free_header (&header); 446 return (FALSE); 447 } 448 /* convert data format to internal : returns number of row read in Nmeasure */ 449 catalog[0].measure = FtableToMeasure (&ftable, catalog[0].average, &Nmeasure, &catalog[0].catformat, nativeOrder); 450 if (Nmeasure != catalog[0].Nmeas_disk) { 451 fprintf (stderr, "Warning: mismatch between Nmeasure in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n", Nmeasure, catalog[0].Nmeas_disk); 452 } 453 catalog[0].Nmeasure = catalog[0].Nmeas_disk; 454 catalog[0].Nmeas_off = 0; 455 } else { 456 // XXX is it necessary to generate a template header here? 457 // XXX this is a memory leak, right? 458 if (catalog[0].measure_catalog) { 459 gfits_free_header (&catalog[0].measure_catalog[0].header); 420 421 LOAD_SUBCAT(measure,MEASURE,Measure); 422 LOAD_SUBCAT(missing,MISSING,Missing); 423 LOAD_SUBCAT(secfilt,SECFILT,SecFilt); 424 LOAD_SUBCAT(lensing,LENSING,Lensing); 425 LOAD_SUBCAT(lensobj,LENSOBJ,Lensobj); 426 LOAD_SUBCAT(starpar,STARPAR,StarPar); 427 LOAD_SUBCAT(galshape,GALSHAPE,GalShape); 428 429 /** catalog->Nsecfilt is unusual: it does not list the number of data items in the 430 table instead, the number of items is Nsecfilt * Naverage, and is stored in 431 Nsecfilt_mem. fix these below **/ 432 433 catalog[0].Nsecfilt_mem = catalog[0].Nsecfilt; 434 catalog[0].Nsecfilt = Nsecfilt; 435 436 /** some old formats stored one of the secfilt values in the average table. 437 repair this below **/ 438 439 if (primary) { 440 if (catalog[0].Nsecfilt_mem) { 441 dvo_catalog_primary_to_secfilt (catalog, primary, catalog[0].Naverage_disk); 460 442 } else { 461 ALLOCATE (catalog[0].measure_catalog, Catalog, 1);462 dvo_catalog_init (catalog[0].measure_catalog, TRUE);463 }464 gfits_create_header (&catalog[0].measure_catalog[0].header);465 ALLOCATE (catalog[0].measure, Measure, 1);466 catalog[0].Nmeasure = 0;467 catalog[0].Nmeas_off = catalog[0].Nmeas_disk;468 }469 gfits_free_header (&header);470 471 /*** Missing Table ***/472 gfits_init_table (&ftable);473 gfits_init_header (&header);474 ftable.header = &header;475 status = dvo_catalog_open_subcat (catalog, &catalog[0].missing_catalog, ftable.header, "MISSING", VERBOSE);476 if (status == DVO_CAT_OPEN_FAIL) {477 return (FALSE);478 }479 if ((status == DVO_CAT_OPEN_EMPTY) && (catalog[0].Nmiss_disk > 0)) {480 return (FALSE);481 }482 if ((status != DVO_CAT_OPEN_EMPTY) && (catalog[0].catflags & LOAD_MISS)) {483 char nativeOrder = FALSE;484 /* read Missing table data */485 if (!gfits_fread_uncompressed (catalog[0].missing_catalog, &ftable, &nativeOrder)) {486 if (VERBOSE) fprintf (stderr, "can't read table missing data\n");487 return (FALSE);488 }489 /* no conversions currently defined : this just does the byte swap */490 catalog[0].missing = gfits_table_get_Missing (&ftable, &Nmissing, NULL, &nativeOrder);491 if (!catalog[0].missing) {492 fprintf (stderr, "ERROR: failed to read missing\n");493 exit (2);494 }495 if (Nmissing != catalog[0].Nmiss_disk) {496 fprintf (stderr, "Warning: mismatch between Nmissing in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n", Nmissing, catalog[0].Nmiss_disk);497 }498 catalog[0].Nmissing = catalog[0].Nmiss_disk;499 catalog[0].Nmiss_off = 0;500 } else {501 // XXX is it necessary to generate a template header here?502 gfits_create_header (&catalog[0].missing_catalog[0].header);503 ALLOCATE (catalog[0].missing, Missing, 1);504 catalog[0].Nmissing = 0;505 catalog[0].Nmiss_off = catalog[0].Nmiss_disk;506 }507 gfits_free_header (ftable.header);508 509 /*** Secfilt Table ***/510 gfits_init_table (&ftable);511 gfits_init_header (&header);512 ftable.header = &header;513 status = dvo_catalog_open_subcat (catalog, &catalog[0].secfilt_catalog, ftable.header, "SECFILT", VERBOSE);514 // fprintf (stderr, "secfilt header %s : %zx\n", catalog[0].secfilt_catalog[0].filename, (size_t) catalog[0].secfilt_catalog[0].header.buffer);515 if (status == DVO_CAT_OPEN_FAIL) {516 return (FALSE);517 }518 if ((status == DVO_CAT_OPEN_EMPTY) && (catalog[0].Nsecf_disk > 0)) {519 return (FALSE);520 }521 if ((status != DVO_CAT_OPEN_EMPTY) && (catalog[0].catflags & LOAD_SECF)) {522 char nativeOrder = FALSE;523 /* read secfilt table data */524 if (!gfits_fread_uncompressed (catalog[0].secfilt_catalog, &ftable, &nativeOrder)) {525 if (VERBOSE) fprintf (stderr, "can't read table secfilt data\n");526 return (FALSE);527 }528 catalog[0].secfilt = FtableToSecFilt (&ftable, &Nitems, &catalog[0].catformat, nativeOrder);529 if (Nitems != catalog[0].Nsecf_disk) {530 fprintf (stderr, "Warning: mismatch between Nsecfilt items in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n", Nitems, catalog[0].Nsecf_disk);531 }532 catalog[0].Nsecf_mem = catalog[0].Nsecf_disk;533 catalog[0].Nsecf_off = 0;534 535 /* if primary is defined, we were supplied with one additional average magnitude from Average536 we need to interleave these magnitudes with the secfilt entries just loaded */537 if (primary != NULL) {538 // this modifies catalog.Nsecf_mem,Nsecfilt539 dvo_catalog_primary_to_secfilt (catalog, primary, catalog[0].Naves_disk);540 }541 } else {542 if (primary != NULL) {543 443 free (primary); 544 444 catalog[0].Nsecfilt ++; 545 445 } 546 gfits_create_header (&catalog[0].secfilt_catalog[0].header); 547 ALLOCATE (catalog[0].secfilt, SecFilt, 1); 548 catalog[0].Nsecf_mem = 0; 549 catalog[0].Nsecf_off = catalog[0].Nsecf_disk; 550 } 551 gfits_free_header (ftable.header); 552 553 /*** Lensing Table ***/ 554 gfits_init_table (&ftable); 555 gfits_init_header (&header); 556 ftable.header = &header; 557 if (!(catalog[0].catflags & SKIP_LENSING)) { 558 // unless we specify 'skip', we still need to load the Lensing table 559 status = dvo_catalog_open_subcat (catalog, &catalog[0].lensing_catalog, ftable.header, "LENSING", VERBOSE); 560 if (status == DVO_CAT_OPEN_FAIL) { 561 return (FALSE); 562 } 563 // the Lensing file need not exist, unless we expect data to exist 564 if ((status == DVO_CAT_OPEN_EMPTY) && (catalog[0].Nlensing_disk > 0)) { 565 return (FALSE); 566 } 567 } 568 if ((status != DVO_CAT_OPEN_EMPTY) && (catalog[0].catflags & LOAD_LENSING)) { 569 char nativeOrder = FALSE; 570 // only read the Lensing table if the file actually exists 571 /* read Lensing table data */ 572 if (!gfits_fread_uncompressed (catalog[0].lensing_catalog, &ftable, &nativeOrder)) { 573 if (VERBOSE) fprintf (stderr, "can't read table lensing data\n"); 574 return (FALSE); 575 } 576 /* convert data format to internal : returns number of row read in Nlensing */ 577 catalog[0].lensing = FtableToLensing (&ftable, &Nlensing, &catalog[0].catformat, nativeOrder); 578 if (Nlensing != catalog[0].Nlensing_disk) { 579 fprintf (stderr, "Warning: mismatch between Nlensing in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n", Nlensing, catalog[0].Nlensing_disk); 580 } 581 catalog[0].Nlensing = catalog[0].Nlensing_disk; 582 catalog[0].Nlensing_off = 0; 583 } else { 584 if (catalog[0].lensing_catalog) { 585 gfits_free_header (&catalog[0].lensing_catalog[0].header); 586 } else { 587 ALLOCATE (catalog[0].lensing_catalog, Catalog, 1); 588 dvo_catalog_init (catalog[0].lensing_catalog, TRUE); 589 } 590 gfits_create_header (&catalog[0].lensing_catalog[0].header); 591 ALLOCATE (catalog[0].lensing, Lensing, 1); 592 catalog[0].Nlensing = 0; 593 catalog[0].Nlensing_off = catalog[0].Nlensing_disk; 594 } 595 gfits_free_header (&header); 596 597 /*** Lensobj Table ***/ 598 gfits_init_table (&ftable); 599 gfits_init_header (&header); 600 ftable.header = &header; 601 if (!(catalog[0].catflags & SKIP_LENSOBJ)) { 602 // unless we specify 'skip', we still need to load the 603 status = dvo_catalog_open_subcat (catalog, &catalog[0].lensobj_catalog, ftable.header, "LENSOBJ", VERBOSE); 604 if (status == DVO_CAT_OPEN_FAIL) { 605 return (FALSE); 606 } 607 // the Lensobj file need not exist, unless we expect data to exist 608 if ((status == DVO_CAT_OPEN_EMPTY) && (catalog[0].Nlensobj_disk > 0)) { 609 return (FALSE); 610 } 611 } 612 if ((status != DVO_CAT_OPEN_EMPTY) && (catalog[0].catflags & LOAD_LENSOBJ)) { 613 char nativeOrder = FALSE; 614 // only read the Lensobj table if the file actually exists 615 /* read Lensobj table data */ 616 if (!gfits_fread_uncompressed (catalog[0].lensobj_catalog, &ftable, &nativeOrder)) { 617 if (VERBOSE) fprintf (stderr, "can't read table lensobj data\n"); 618 return (FALSE); 619 } 620 /* convert data format to internal : returns number of row read in Nlensobj */ 621 catalog[0].lensobj = FtableToLensobj (&ftable, &Nlensobj, &catalog[0].catformat, FALSE); 622 if (Nlensobj != catalog[0].Nlensobj_disk) { 623 fprintf (stderr, "Warning: mismatch between Nlensobj in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n", Nlensobj, catalog[0].Nlensobj_disk); 624 } 625 catalog[0].Nlensobj = catalog[0].Nlensobj_disk; 626 catalog[0].Nlensobj_off = 0; 627 } else { 628 if (catalog[0].lensobj_catalog) { 629 gfits_free_header (&catalog[0].lensobj_catalog[0].header); 630 } else { 631 ALLOCATE (catalog[0].lensobj_catalog, Catalog, 1); 632 dvo_catalog_init (catalog[0].lensobj_catalog, TRUE); 633 } 634 gfits_create_header (&catalog[0].lensobj_catalog[0].header); 635 ALLOCATE (catalog[0].lensobj, Lensobj, 1); 636 catalog[0].Nlensobj = 0; 637 catalog[0].Nlensobj_off = catalog[0].Nlensobj_disk; 638 } 639 gfits_free_header (&header); 640 641 /*** StarPar Table ***/ 642 gfits_init_table (&ftable); 643 gfits_init_header (&header); 644 ftable.header = &header; 645 if (!(catalog[0].catflags & SKIP_STARPAR)) { 646 // unless we specify 'skip', we still need to load the 647 status = dvo_catalog_open_subcat (catalog, &catalog[0].starpar_catalog, ftable.header, "STARPAR", VERBOSE); 648 if (status == DVO_CAT_OPEN_FAIL) { 649 return (FALSE); 650 } 651 // the StarPar file need not exist, unless we expect data to exist 652 if ((status == DVO_CAT_OPEN_EMPTY) && (catalog[0].Nstarpar_disk > 0)) { 653 return (FALSE); 654 } 655 } 656 if ((status != DVO_CAT_OPEN_EMPTY) && (catalog[0].catflags & LOAD_STARPAR)) { 657 char nativeOrder = FALSE; 658 // only read the StarPar table if the file actually exists 659 /* read StarPar table data */ 660 if (!gfits_fread_uncompressed (catalog[0].starpar_catalog, &ftable, &nativeOrder)) { 661 if (VERBOSE) fprintf (stderr, "can't read table starpar data\n"); 662 return (FALSE); 663 } 664 /* convert data format to internal : returns number of row read in Nstarpar */ 665 catalog[0].starpar = FtableToStarPar (&ftable, &Nstarpar, &catalog[0].catformat, FALSE); 666 if (Nstarpar != catalog[0].Nstarpar_disk) { 667 fprintf (stderr, "Warning: mismatch between Nstarpar in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n", Nstarpar, catalog[0].Nstarpar_disk); 668 } 669 catalog[0].Nstarpar = catalog[0].Nstarpar_disk; 670 catalog[0].Nstarpar_off = 0; 671 } else { 672 if (catalog[0].starpar_catalog) { 673 gfits_free_header (&catalog[0].starpar_catalog[0].header); 674 } else { 675 ALLOCATE (catalog[0].starpar_catalog, Catalog, 1); 676 dvo_catalog_init (catalog[0].starpar_catalog, TRUE); 677 } 678 gfits_create_header (&catalog[0].starpar_catalog[0].header); 679 ALLOCATE (catalog[0].starpar, StarPar, 1); 680 catalog[0].Nstarpar = 0; 681 catalog[0].Nstarpar_off = catalog[0].Nstarpar_disk; 682 } 683 gfits_free_header (&header); 684 685 /*** GalShape Table ***/ 686 gfits_init_table (&ftable); 687 gfits_init_header (&header); 688 ftable.header = &header; 689 if (!(catalog[0].catflags & SKIP_GALSHAPE)) { 690 // unless we specify 'skip', we still need to load the GalShape table 691 status = dvo_catalog_open_subcat (catalog, &catalog[0].galshape_catalog, ftable.header, "GALSHAPE", VERBOSE); 692 if (status == DVO_CAT_OPEN_FAIL) { 693 return (FALSE); 694 } 695 // the GalShape file need not exist, unless we expect data to exist 696 if ((status == DVO_CAT_OPEN_EMPTY) && (catalog[0].Ngalshape_disk > 0)) { 697 return (FALSE); 698 } 699 } 700 if ((status != DVO_CAT_OPEN_EMPTY) && (catalog[0].catflags & LOAD_GALSHAPE)) { 701 char nativeOrder = FALSE; 702 // only read the GalShape table if the file actually exists 703 /* read GalShape table data */ 704 if (!gfits_fread_uncompressed (catalog[0].galshape_catalog, &ftable, &nativeOrder)) { 705 if (VERBOSE) fprintf (stderr, "can't read table galshape data\n"); 706 return (FALSE); 707 } 708 /* convert data format to internal : returns number of row read in Ngalshape */ 709 catalog[0].galshape = FtableToGalShape (&ftable, &Ngalshape, &catalog[0].catformat, FALSE); 710 if (Ngalshape != catalog[0].Ngalshape_disk) { 711 fprintf (stderr, "Warning: mismatch between Ngalshape in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n", Ngalshape, catalog[0].Ngalshape_disk); 712 } 713 catalog[0].Ngalshape = catalog[0].Ngalshape_disk; 714 catalog[0].Ngalshape_off = 0; 715 } else { 716 if (catalog[0].galshape_catalog) { 717 gfits_free_header (&catalog[0].galshape_catalog[0].header); 718 } else { 719 ALLOCATE (catalog[0].galshape_catalog, Catalog, 1); 720 dvo_catalog_init (catalog[0].galshape_catalog, TRUE); 721 } 722 gfits_create_header (&catalog[0].galshape_catalog[0].header); 723 ALLOCATE (catalog[0].galshape, GalShape, 1); 724 catalog[0].Ngalshape = 0; 725 catalog[0].Ngalshape_off = catalog[0].Ngalshape_disk; 726 } 727 gfits_free_header (&header); 446 } 728 447 729 448 return (TRUE); … … 747 466 748 467 /*** Average (& SecFilt) Table ***/ 749 if (catalog[0].catflags & LOAD_AVES) {468 if (catalog[0].catflags & DVO_LOAD_AVERAGE) { 750 469 751 470 /*** load the Average data ***/ … … 774 493 gfits_free_header (&header); 775 494 catalog[0].Naverage = Naverage; 776 catalog[0].Nave s_off = start;495 catalog[0].Naverage_off = start; 777 496 778 497 /*** load the secfilt data ***/ … … 795 514 796 515 Nexpect = catalog[0].Naverage * catalog[0].Nsecfilt; 797 catalog[0].secfilt = FtableToSecFilt (&ftable, &Nitems, &catalog[0].catformat, FALSE);516 catalog[0].secfilt = FtableToSecFilt (&ftable, catalog[0].average, &Nitems, &catalog[0].catformat, FALSE); 798 517 if (Nitems != Nexpect) { 799 518 fprintf (stderr, "Warning: mismatch between Nsecfilt items in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n", Nitems, Nexpect); 800 519 } 801 catalog[0].Nsecf _mem = catalog[0].Naverage * catalog[0].Nsecfilt;802 catalog[0].Nsecf _off = start * catalog[0].Nsecfilt;520 catalog[0].Nsecfilt_mem = catalog[0].Naverage * catalog[0].Nsecfilt; 521 catalog[0].Nsecfilt_off = start * catalog[0].Nsecfilt; 803 522 804 523 /* if primary is defined, we were supplied with one additional average magnitude from Average … … 811 530 812 531 // XXX check the open status of the catalog 813 if (catalog[0].catflags & LOAD_MEAS) {532 if (catalog[0].catflags & DVO_LOAD_MEASURE) { 814 533 815 534 Catalog *subcat = catalog[0].measure_catalog; … … 838 557 gfits_free_header (&header); 839 558 catalog[0].Nmeasure = Nmeasure; 840 catalog[0].Nmeas _off = start;559 catalog[0].Nmeasure_off = start; 841 560 } 842 561 843 562 // XXX check the open status of the catalog? 844 if (catalog[0].catflags & LOAD_MISS) {563 if (catalog[0].catflags & DVO_LOAD_MISSING) { 845 564 846 565 Catalog *subcat = catalog[0].missing_catalog; … … 872 591 gfits_free_header (&header); 873 592 catalog[0].Nmissing = Nmissing; 874 catalog[0].Nmiss _off = start;593 catalog[0].Nmissing_off = start; 875 594 } 876 595 877 596 // XXX check the open status of the catalog 878 if (catalog[0].catflags & LOAD_LENSING) {597 if (catalog[0].catflags & DVO_LOAD_LENSING) { 879 598 880 599 Catalog *subcat = catalog[0].lensing_catalog; … … 896 615 897 616 /* convert data format to internal : returns number of row read in Nlensing */ 898 catalog[0].lensing = FtableToLensing (&ftable, &Nlensing, &catalog[0].catformat, FALSE);617 catalog[0].lensing = FtableToLensing (&ftable, catalog[0].average, &Nlensing, &catalog[0].catformat, FALSE); 899 618 if (Nlensing != Nrows) { 900 619 // XXX this condition denotes the eof has been reached; not an error or a warning … … 907 626 908 627 // XXX check the open status of the catalog 909 if (catalog[0].catflags & LOAD_LENSOBJ) {628 if (catalog[0].catflags & DVO_LOAD_LENSOBJ) { 910 629 911 630 Catalog *subcat = catalog[0].lensobj_catalog; … … 927 646 928 647 /* convert data format to internal : returns number of row read in Nlensobj */ 929 catalog[0].lensobj = FtableToLensobj (&ftable, &Nlensobj, &catalog[0].catformat, FALSE);648 catalog[0].lensobj = FtableToLensobj (&ftable, catalog[0].average, &Nlensobj, &catalog[0].catformat, FALSE); 930 649 if (Nlensobj != Nrows) { 931 650 // XXX this condition denotes the eof has been reached; not an error or a warning … … 938 657 939 658 // XXX check the open status of the catalog 940 if (catalog[0].catflags & LOAD_STARPAR) {659 if (catalog[0].catflags & DVO_LOAD_STARPAR) { 941 660 942 661 Catalog *subcat = catalog[0].starpar_catalog; … … 958 677 959 678 /* convert data format to internal : returns number of row read in Nstarpar */ 960 catalog[0].starpar = FtableToStarPar (&ftable, &Nstarpar, &catalog[0].catformat, FALSE);679 catalog[0].starpar = FtableToStarPar (&ftable, catalog[0].average, &Nstarpar, &catalog[0].catformat, FALSE); 961 680 if (Nstarpar != Nrows) { 962 681 // XXX this condition denotes the eof has been reached; not an error or a warning … … 969 688 970 689 // XXX check the open status of the catalog 971 if (catalog[0].catflags & LOAD_GALSHAPE) {690 if (catalog[0].catflags & DVO_LOAD_GALSHAPE) { 972 691 973 692 Catalog *subcat = catalog[0].galshape_catalog; … … 989 708 990 709 /* convert data format to internal : returns number of row read in Ngalshape */ 991 catalog[0].galshape = FtableToGalShape (&ftable, &Ngalshape, &catalog[0].catformat, FALSE);710 catalog[0].galshape = FtableToGalShape (&ftable, catalog[0].average, &Ngalshape, &catalog[0].catformat, FALSE); 992 711 if (Ngalshape != Nrows) { 993 712 // XXX this condition denotes the eof has been reached; not an error or a warning … … 1010 729 SecFilt *primary, *secfilt; 1011 730 int Nsecfilt; 1012 off_t Nave s_disk_new, Nmeas_disk_new, Nmiss_disk_new, Nsecf_disk_new, Nlensing_disk_new, Nlensobj_disk_new, Nstarpar_disk_new, Ngalshape_disk_new;731 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; 1013 732 off_t first, start, Nrows; 1014 733 … … 1019 738 1020 739 // skip empty catalogs: it is illegal to have Measures without corresponding Averages 1021 Nave s_disk_new = MAX (catalog[0].Naves_disk, catalog[0].Naverage + catalog[0].Naves_off);1022 if (Nave s_disk_new == 0) {740 Naverage_disk_new = MAX (catalog[0].Naverage_disk, catalog[0].Naverage + catalog[0].Naverage_off); 741 if (Naverage_disk_new == 0) { 1023 742 if (VERBOSE) fprintf (stderr, "no stars in catalog, skipping\n"); 1024 743 return (TRUE); … … 1038 757 } 1039 758 1040 Nmeas _disk_new = MAX (catalog[0].Nmeas_disk, catalog[0].Nmeasure + catalog[0].Nmeas_off);1041 Nmiss _disk_new = MAX (catalog[0].Nmiss_disk, catalog[0].Nmissing + catalog[0].Nmiss_off);1042 Nsecf _disk_new = MAX (catalog[0].Nsecf_disk, catalog[0].Naverage*Nsecfilt + catalog[0].Nsecf_off);759 Nmeasure_disk_new = MAX (catalog[0].Nmeasure_disk, catalog[0].Nmeasure + catalog[0].Nmeasure_off); 760 Nmissing_disk_new = MAX (catalog[0].Nmissing_disk, catalog[0].Nmissing + catalog[0].Nmissing_off); 761 Nsecfilt_disk_new = MAX (catalog[0].Nsecfilt_disk, catalog[0].Naverage*Nsecfilt + catalog[0].Nsecfilt_off); 1043 762 Nlensing_disk_new = MAX (catalog[0].Nlensing_disk, catalog[0].Nlensing + catalog[0].Nlensing_off); 1044 763 Nlensobj_disk_new = MAX (catalog[0].Nlensobj_disk, catalog[0].Nlensobj + catalog[0].Nlensobj_off); … … 1047 766 1048 767 /* make sure header is consistent with data */ 1049 gfits_modify (&catalog[0].header, "NSTARS", OFF_T_FMT, 1, Nave s_disk_new);1050 gfits_modify (&catalog[0].header, "NMEAS", OFF_T_FMT, 1, Nmeas _disk_new);1051 gfits_modify (&catalog[0].header, "NMISS", OFF_T_FMT, 1, Nmiss _disk_new);768 gfits_modify (&catalog[0].header, "NSTARS", OFF_T_FMT, 1, Naverage_disk_new); 769 gfits_modify (&catalog[0].header, "NMEAS", OFF_T_FMT, 1, Nmeasure_disk_new); 770 gfits_modify (&catalog[0].header, "NMISS", OFF_T_FMT, 1, Nmissing_disk_new); 1052 771 gfits_modify (&catalog[0].header, "NSECFILT", "%d", 1, Nsecfilt); 1053 772 gfits_modify (&catalog[0].header, "NLENSING", OFF_T_FMT, 1, Nlensing_disk_new); … … 1062 781 1063 782 /*** Average Table ***/ 1064 if ((catalog[0].catflags & LOAD_AVES) && (catalog[0].average != NULL)) {783 if ((catalog[0].catflags & DVO_LOAD_AVERAGE) && (catalog[0].average != NULL)) { 1065 784 1066 785 first = 0; // first row in memory to write 1067 start = catalog[0].Nave s_off; // first disk row to write786 start = catalog[0].Naverage_off; // first disk row to write 1068 787 Nrows = catalog[0].Naverage - first; 1069 788 … … 1071 790 assert (first >= 0); 1072 791 assert (first <= catalog[0].Naverage); 1073 assert (catalog[0].Nave s_disk >= catalog[0].Naves_off);792 assert (catalog[0].Naverage_disk >= catalog[0].Naverage_off); 1074 793 1075 794 /* convert internal to external format : also results in a byte-swapped, scaled output … … 1078 797 1079 798 // if we are going to compress, we need to receive unswapped data -- 1080 int swapFromNative = !output_is_compressed (start, Nrows, Nave s_disk_new, catalog->catcompress);799 int swapFromNative = !output_is_compressed (start, Nrows, Naverage_disk_new, catalog->catcompress); 1081 800 1082 801 if (!AverageToFtable (&ftable, &catalog[0].average[first], Nrows, catalog[0].catformat, primary, swapFromNative)) { … … 1085 804 } 1086 805 1087 if (!dvo_catalog_save_subcat (catalog, &ftable, start, Nrows, catalog[0].Nave s_disk, Naves_disk_new)) {806 if (!dvo_catalog_save_subcat (catalog, &ftable, start, Nrows, catalog[0].Naverage_disk, Naverage_disk_new)) { 1088 807 fprintf (stderr, "failure writing Average table\n"); 1089 808 goto failure; … … 1105 824 1106 825 /*** Measure Table ***/ 1107 if ((catalog[0].catflags & LOAD_MEAS) && (catalog[0].measure != NULL)) {826 if ((catalog[0].catflags & DVO_LOAD_MEASURE) && (catalog[0].measure != NULL)) { 1108 827 1109 828 first = 0; // first row in memory to write 1110 start = catalog[0].Nmeas _off; // first disk row to write829 start = catalog[0].Nmeasure_off; // first disk row to write 1111 830 Nrows = catalog[0].Nmeasure - first; 1112 831 … … 1114 833 assert (first >= 0); 1115 834 assert (first <= catalog[0].Nmeasure); 1116 assert (catalog[0].Nmeas _disk >= catalog[0].Nmeas_off);835 assert (catalog[0].Nmeasure_disk >= catalog[0].Nmeasure_off); 1117 836 1118 837 // if we are going to compress, we need to receive unswapped data -- 1119 int swapFromNative = !output_is_compressed (start, Nrows, Nmeas _disk_new, catalog->catcompress);838 int swapFromNative = !output_is_compressed (start, Nrows, Nmeasure_disk_new, catalog->catcompress); 1120 839 1121 840 // convert to external table format (note that the block above does not damage or free catalog.average) … … 1126 845 1127 846 // write out Measure table 1128 if (!dvo_catalog_save_subcat (catalog[0].measure_catalog, &ftable, start, Nrows, catalog[0].Nmeas _disk, Nmeas_disk_new)) {847 if (!dvo_catalog_save_subcat (catalog[0].measure_catalog, &ftable, start, Nrows, catalog[0].Nmeasure_disk, Nmeasure_disk_new)) { 1129 848 fprintf (stderr, "trouble writing Measure table\n"); 1130 849 goto failure; … … 1135 854 1136 855 /*** Missing Table ***/ 1137 if ((catalog[0].catflags & LOAD_MISS) && (catalog[0].missing != NULL)) {1138 1139 if (catalog[0].Nmiss _off != 0) {856 if ((catalog[0].catflags & DVO_LOAD_MISSING) && (catalog[0].missing != NULL)) { 857 858 if (catalog[0].Nmissing_off != 0) { 1140 859 fprintf (stderr, "inconsistency: Missing table cannot be written in segments\n"); 1141 860 goto failure; … … 1161 880 1162 881 /*** Secfilt Table ***/ 1163 if ((catalog[0].catflags & LOAD_SECF) && (catalog[0].secfilt != NULL)) {882 if ((catalog[0].catflags & DVO_LOAD_SECFILT) && (catalog[0].secfilt != NULL)) { 1164 883 1165 884 first = 0; // first row in memory to write 1166 start = catalog[0].Nsecf _off; // first disk row to write1167 Nitems = catalog[0].Nsecf _mem;885 start = catalog[0].Nsecfilt_off; // first disk row to write 886 Nitems = catalog[0].Nsecfilt_mem; 1168 887 Nrows = Nitems - first; 1169 888 … … 1171 890 assert (first >= 0); 1172 891 assert (first <= Nitems); 1173 assert (catalog[0].Nsecf _disk >= catalog[0].Nsecf_off);892 assert (catalog[0].Nsecfilt_disk >= catalog[0].Nsecfilt_off); 1174 893 // XXX check these for consistency... 1175 894 1176 895 // if we are going to compress, we need to receive unswapped data -- 1177 int swapFromNative = !output_is_compressed (start, Nrows, Nsecf _disk_new, catalog->catcompress);896 int swapFromNative = !output_is_compressed (start, Nrows, Nsecfilt_disk_new, catalog->catcompress); 1178 897 1179 898 // convert to external table format … … 1181 900 1182 901 // write out SecFilt table 1183 if (!dvo_catalog_save_subcat (catalog[0].secfilt_catalog, &ftable, start, Nrows, catalog[0].Nsecf _disk, Nsecf_disk_new)) {902 if (!dvo_catalog_save_subcat (catalog[0].secfilt_catalog, &ftable, start, Nrows, catalog[0].Nsecfilt_disk, Nsecfilt_disk_new)) { 1184 903 fprintf (stderr, "failure writing SecFilt table\n"); 1185 904 goto failure; … … 1190 909 1191 910 /*** Lensing Table (optional, do not save if not loaded) ***/ 1192 if ((catalog[0].catflags & LOAD_LENSING) && catalog[0].lensing_catalog->f && catalog[0].lensing) {911 if ((catalog[0].catflags & DVO_LOAD_LENSING) && catalog[0].lensing_catalog->f && catalog[0].lensing) { 1193 912 1194 913 first = 0; // first row in memory to write … … 1222 941 1223 942 /*** Lensobj Table (optional, do not save if not loaded) ***/ 1224 if ((catalog[0].catflags & LOAD_LENSOBJ) && catalog[0].lensobj_catalog->f && catalog[0].lensobj) {943 if ((catalog[0].catflags & DVO_LOAD_LENSOBJ) && catalog[0].lensobj_catalog->f && catalog[0].lensobj) { 1225 944 1226 945 first = 0; // first row in memory to write … … 1254 973 1255 974 /*** StarPar Table (optional, do not save if not loaded) ***/ 1256 if ((catalog[0].catflags & LOAD_STARPAR) && catalog[0].starpar_catalog->f && catalog[0].starpar) {975 if ((catalog[0].catflags & DVO_LOAD_STARPAR) && catalog[0].starpar_catalog->f && catalog[0].starpar) { 1257 976 1258 977 first = 0; // first row in memory to write … … 1286 1005 1287 1006 /*** GalShape Table (optional, do not save if not loaded) ***/ 1288 if ((catalog[0].catflags & LOAD_GALSHAPE) && catalog[0].galshape_catalog->f && catalog[0].galshape) {1007 if ((catalog[0].catflags & DVO_LOAD_GALSHAPE) && catalog[0].galshape_catalog->f && catalog[0].galshape) { 1289 1008 1290 1009 first = 0; // first row in memory to write … … 1343 1062 SecFilt *primary, *secfilt; 1344 1063 int Nsecfilt; 1345 off_t Nave s_disk_new, Nmeas_disk_new, Nmiss_disk_new, Nsecf_disk_new, Nlensing_disk_new, Nlensobj_disk_new, Nstarpar_disk_new, Ngalshape_disk_new;1064 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; 1346 1065 off_t first, start, Nrows; 1347 1066 … … 1352 1071 1353 1072 // skip empty catalogs: it is illegal to have Measures without corresponding Averages 1354 if (catalog[0].Nave s_off > 0) {1073 if (catalog[0].Naverage_off > 0) { 1355 1074 fprintf (stderr, "ERROR: only partial catalog (Average) was loaded\n"); 1356 1075 goto failure; 1357 1076 } 1358 if (catalog[0].Nmeas _off > 0) {1077 if (catalog[0].Nmeasure_off > 0) { 1359 1078 fprintf (stderr, "ERROR: only partial catalog (Measure) was loaded\n"); 1360 1079 goto failure; 1361 1080 } 1362 if (catalog[0].Nmiss _off > 0) {1081 if (catalog[0].Nmissing_off > 0) { 1363 1082 fprintf (stderr, "ERROR: only partial catalog (Missing) was loaded\n"); 1364 1083 goto failure; 1365 1084 } 1366 if (catalog[0].Nsecf _off > 0) {1085 if (catalog[0].Nsecfilt_off > 0) { 1367 1086 fprintf (stderr, "ERROR: only partial catalog (Secfilt) was loaded\n"); 1368 1087 goto failure; … … 1385 1104 } 1386 1105 1387 Nave s_disk_new = catalog[0].Naverage;1388 if (Nave s_disk_new == 0) {1106 Naverage_disk_new = catalog[0].Naverage; 1107 if (Naverage_disk_new == 0) { 1389 1108 if (VERBOSE) fprintf (stderr, "resulting catalog is empty; delete it\n"); 1390 1109 // unlink (); … … 1405 1124 } 1406 1125 1407 Nmeas _disk_new = catalog[0].Nmeasure;1408 Nmiss _disk_new = catalog[0].Nmissing;1409 Nsecf _disk_new = catalog[0].Naverage*Nsecfilt;1126 Nmeasure_disk_new = catalog[0].Nmeasure; 1127 Nmissing_disk_new = catalog[0].Nmissing; 1128 Nsecfilt_disk_new = catalog[0].Naverage*Nsecfilt; 1410 1129 Nlensing_disk_new = catalog[0].Nlensing; 1411 1130 Nlensobj_disk_new = catalog[0].Nlensobj; … … 1414 1133 1415 1134 /* make sure header is consistent with data */ 1416 gfits_modify (&catalog[0].header, "NSTARS", OFF_T_FMT, 1, Nave s_disk_new);1417 gfits_modify (&catalog[0].header, "NMEAS", OFF_T_FMT, 1, Nmeas _disk_new);1418 gfits_modify (&catalog[0].header, "NMISS", OFF_T_FMT, 1, Nmiss _disk_new);1135 gfits_modify (&catalog[0].header, "NSTARS", OFF_T_FMT, 1, Naverage_disk_new); 1136 gfits_modify (&catalog[0].header, "NMEAS", OFF_T_FMT, 1, Nmeasure_disk_new); 1137 gfits_modify (&catalog[0].header, "NMISS", OFF_T_FMT, 1, Nmissing_disk_new); 1419 1138 gfits_modify (&catalog[0].header, "NSECFILT", "%d", 1, Nsecfilt); 1420 1139 gfits_modify (&catalog[0].header, "NLENSING", OFF_T_FMT, 1, Nlensing_disk_new); … … 1428 1147 1429 1148 /*** Average Table ***/ 1430 if ((catalog[0].catflags & LOAD_AVES) && (catalog[0].average != NULL)) {1149 if ((catalog[0].catflags & DVO_LOAD_AVERAGE) && (catalog[0].average != NULL)) { 1431 1150 1432 1151 first = 0; // first row in memory to write 1433 start = catalog[0].Nave s_off; // first disk row to write1152 start = catalog[0].Naverage_off; // first disk row to write 1434 1153 Nrows = catalog[0].Naverage - first; 1435 1154 … … 1437 1156 assert (first >= 0); 1438 1157 assert (first <= catalog[0].Naverage); 1439 assert (catalog[0].Nave s_disk >= catalog[0].Naves_off);1158 assert (catalog[0].Naverage_disk >= catalog[0].Naverage_off); 1440 1159 1441 1160 /* convert internal to external format */ … … 1445 1164 } 1446 1165 1447 if (!dvo_catalog_save_subcat (catalog, &ftable, start, Nrows, catalog[0].Nave s_disk, Naves_disk_new)) {1166 if (!dvo_catalog_save_subcat (catalog, &ftable, start, Nrows, catalog[0].Naverage_disk, Naverage_disk_new)) { 1448 1167 fprintf (stderr, "failure writing Average table\n"); 1449 1168 goto failure; … … 1465 1184 1466 1185 /*** Measure Table ***/ 1467 if ((catalog[0].catflags & LOAD_MEAS) && (catalog[0].measure != NULL)) {1186 if ((catalog[0].catflags & DVO_LOAD_MEASURE) && (catalog[0].measure != NULL)) { 1468 1187 1469 1188 first = 0; // first row in memory to write 1470 start = catalog[0].Nmeas _off; // first disk row to write1189 start = catalog[0].Nmeasure_off; // first disk row to write 1471 1190 Nrows = catalog[0].Nmeasure - first; 1472 1191 … … 1474 1193 assert (first >= 0); 1475 1194 assert (first <= catalog[0].Nmeasure); 1476 assert (catalog[0].Nmeas _disk >= catalog[0].Nmeas_off);1195 assert (catalog[0].Nmeasure_disk >= catalog[0].Nmeasure_off); 1477 1196 1478 1197 // convert to external table format … … 1483 1202 1484 1203 // write out Measure table 1485 if (!dvo_catalog_save_subcat (catalog[0].measure_catalog, &ftable, start, Nrows, catalog[0].Nmeas _disk, Nmeas_disk_new)) {1204 if (!dvo_catalog_save_subcat (catalog[0].measure_catalog, &ftable, start, Nrows, catalog[0].Nmeasure_disk, Nmeasure_disk_new)) { 1486 1205 fprintf (stderr, "trouble writing Measure table\n"); 1487 1206 goto failure; … … 1492 1211 1493 1212 /*** Missing Table ***/ 1494 if ((catalog[0].catflags & LOAD_MISS) && (catalog[0].missing != NULL)) {1495 1496 if (catalog[0].Nmiss _off != 0) {1213 if ((catalog[0].catflags & DVO_LOAD_MISSING) && (catalog[0].missing != NULL)) { 1214 1215 if (catalog[0].Nmissing_off != 0) { 1497 1216 fprintf (stderr, "inconsistency: Missing table cannot be written in segments\n"); 1498 1217 goto failure; … … 1515 1234 1516 1235 /*** Secfilt Table ***/ 1517 if ((catalog[0].catflags & LOAD_SECF) && (catalog[0].secfilt != NULL)) {1236 if ((catalog[0].catflags & DVO_LOAD_SECFILT) && (catalog[0].secfilt != NULL)) { 1518 1237 1519 1238 first = 0; // first row in memory to write 1520 start = catalog[0].Nsecf _off; // first disk row to write1239 start = catalog[0].Nsecfilt_off; // first disk row to write 1521 1240 Nitems = catalog[0].Naverage*Nsecfilt; 1522 1241 Nrows = Nitems - first; … … 1525 1244 assert (first >= 0); 1526 1245 assert (first <= Nitems); 1527 assert (catalog[0].Nsecf _disk >= catalog[0].Nsecf_off);1246 assert (catalog[0].Nsecfilt_disk >= catalog[0].Nsecfilt_off); 1528 1247 // XXX check these for consistency... 1529 1248 … … 1532 1251 1533 1252 // write out SecFilt table 1534 if (!dvo_catalog_save_subcat (catalog[0].secfilt_catalog, &ftable, start, Nrows, catalog[0].Nsecf _disk, Nsecf_disk_new)) {1253 if (!dvo_catalog_save_subcat (catalog[0].secfilt_catalog, &ftable, start, Nrows, catalog[0].Nsecfilt_disk, Nsecfilt_disk_new)) { 1535 1254 fprintf (stderr, "failure writing SecFilt table\n"); 1536 1255 goto failure; … … 1541 1260 1542 1261 /*** Lensing Table ***/ 1543 if ((catalog[0].catflags & LOAD_LENSING) && (catalog[0].lensing != NULL)) {1262 if ((catalog[0].catflags & DVO_LOAD_LENSING) && (catalog[0].lensing != NULL)) { 1544 1263 1545 1264 first = 0; // first row in memory to write … … 1568 1287 1569 1288 /*** Lensobj Table ***/ 1570 if ((catalog[0].catflags & LOAD_LENSOBJ) && (catalog[0].lensobj != NULL)) {1289 if ((catalog[0].catflags & DVO_LOAD_LENSOBJ) && (catalog[0].lensobj != NULL)) { 1571 1290 1572 1291 first = 0; // first row in memory to write … … 1595 1314 1596 1315 /*** StarPar Table ***/ 1597 if ((catalog[0].catflags & LOAD_STARPAR) && (catalog[0].starpar != NULL)) {1316 if ((catalog[0].catflags & DVO_LOAD_STARPAR) && (catalog[0].starpar != NULL)) { 1598 1317 1599 1318 first = 0; // first row in memory to write … … 1622 1341 1623 1342 /*** GalShape Table ***/ 1624 if ((catalog[0].catflags & LOAD_GALSHAPE) && (catalog[0].galshape != NULL)) {1343 if ((catalog[0].catflags & DVO_LOAD_GALSHAPE) && (catalog[0].galshape != NULL)) { 1625 1344 1626 1345 first = 0; // first row in memory to write … … 1673 1392 SecFilt *primary, *secfilt; 1674 1393 int Nsecfilt; 1675 off_t Nave s_disk_new, Nmeas_disk_new, Nmiss_disk_new, Nsecf_disk_new, Nlensing_disk_new, Nlensobj_disk_new, Nstarpar_disk_new, Ngalshape_disk_new;1394 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; 1676 1395 off_t first, start, Nrows; 1677 1396 … … 1681 1400 1682 1401 // skip empty catalogs: it is illegal to have Measures without corresponding Averages 1683 Nave s_disk_new = MAX (catalog[0].Naves_disk, catalog[0].Naverage + catalog[0].Naves_off);1684 if (Nave s_disk_new == 0) {1402 Naverage_disk_new = MAX (catalog[0].Naverage_disk, catalog[0].Naverage + catalog[0].Naverage_off); 1403 if (Naverage_disk_new == 0) { 1685 1404 if (VERBOSE) fprintf (stderr, "no stars in catalog, skipping\n"); 1686 1405 return (TRUE); … … 1700 1419 } 1701 1420 1702 Nmeas _disk_new = MAX (catalog[0].Nmeas_disk, catalog[0].Nmeasure + catalog[0].Nmeas_off);1703 Nmiss _disk_new = MAX (catalog[0].Nmiss_disk, catalog[0].Nmissing + catalog[0].Nmiss_off);1704 Nsecf _disk_new = MAX (catalog[0].Nsecf_disk, catalog[0].Naverage*Nsecfilt + catalog[0].Nsecf_off);1421 Nmeasure_disk_new = MAX (catalog[0].Nmeasure_disk, catalog[0].Nmeasure + catalog[0].Nmeasure_off); 1422 Nmissing_disk_new = MAX (catalog[0].Nmissing_disk, catalog[0].Nmissing + catalog[0].Nmissing_off); 1423 Nsecfilt_disk_new = MAX (catalog[0].Nsecfilt_disk, catalog[0].Naverage*Nsecfilt + catalog[0].Nsecfilt_off); 1705 1424 Nlensing_disk_new = MAX (catalog[0].Nlensing_disk, catalog[0].Nlensing + catalog[0].Nlensing_off); 1706 1425 Nlensobj_disk_new = MAX (catalog[0].Nlensobj_disk, catalog[0].Nlensobj + catalog[0].Nlensobj_off); … … 1709 1428 1710 1429 /* make sure header is consistent with data */ 1711 gfits_modify (&catalog[0].header, "NSTARS", OFF_T_FMT, 1, Nave s_disk_new);1712 gfits_modify (&catalog[0].header, "NMEAS", OFF_T_FMT, 1, Nmeas _disk_new);1713 gfits_modify (&catalog[0].header, "NMISS", OFF_T_FMT, 1, Nmiss _disk_new);1430 gfits_modify (&catalog[0].header, "NSTARS", OFF_T_FMT, 1, Naverage_disk_new); 1431 gfits_modify (&catalog[0].header, "NMEAS", OFF_T_FMT, 1, Nmeasure_disk_new); 1432 gfits_modify (&catalog[0].header, "NMISS", OFF_T_FMT, 1, Nmissing_disk_new); 1714 1433 gfits_modify (&catalog[0].header, "NSECFILT", "%d", 1, Nsecfilt); 1715 1434 gfits_modify (&catalog[0].header, "NLENSING", OFF_T_FMT, 1, Nlensing_disk_new); … … 1726 1445 if (catalog[0].average != NULL) { 1727 1446 1728 first = catalog[0].Nave s_disk - catalog[0].Naves_off; // first row to write (memory)1729 start = catalog[0].Nave s_disk; // first row to write (disk)1447 first = catalog[0].Naverage_disk - catalog[0].Naverage_off; // first row to write (memory) 1448 start = catalog[0].Naverage_disk; // first row to write (disk) 1730 1449 Nrows = catalog[0].Naverage - first; 1731 1450 … … 1733 1452 assert (first >= 0); 1734 1453 assert (first <= catalog[0].Naverage); 1735 assert (catalog[0].Nave s_disk >= catalog[0].Naves_off);1454 assert (catalog[0].Naverage_disk >= catalog[0].Naverage_off); 1736 1455 1737 1456 /* convert internal to external format */ … … 1741 1460 } 1742 1461 1743 if (!dvo_catalog_save_subcat (catalog, &ftable, start, Nrows, catalog[0].Nave s_disk, Naves_disk_new)) {1462 if (!dvo_catalog_save_subcat (catalog, &ftable, start, Nrows, catalog[0].Naverage_disk, Naverage_disk_new)) { 1744 1463 fprintf (stderr, "failure writing Average table\n"); 1745 1464 goto failure; … … 1763 1482 if (catalog[0].measure != NULL) { 1764 1483 1765 first = catalog[0].Nmeas _disk - catalog[0].Nmeas_off; // first row in memory to write1766 start = catalog[0].Nmeas _disk; // first disk row to write1484 first = catalog[0].Nmeasure_disk - catalog[0].Nmeasure_off; // first row in memory to write 1485 start = catalog[0].Nmeasure_disk; // first disk row to write 1767 1486 Nrows = catalog[0].Nmeasure - first; 1768 1487 … … 1770 1489 assert (first >= 0); 1771 1490 assert (first <= catalog[0].Nmeasure); 1772 assert (catalog[0].Nmeas _disk >= catalog[0].Nmeas_off);1491 assert (catalog[0].Nmeasure_disk >= catalog[0].Nmeasure_off); 1773 1492 1774 1493 // convert to external table format … … 1780 1499 1781 1500 // write out Measure table 1782 if (!dvo_catalog_save_subcat (catalog[0].measure_catalog, &ftable, start, Nrows, catalog[0].Nmeas _disk, Nmeas_disk_new)) {1501 if (!dvo_catalog_save_subcat (catalog[0].measure_catalog, &ftable, start, Nrows, catalog[0].Nmeasure_disk, Nmeasure_disk_new)) { 1783 1502 fprintf (stderr, "trouble writing Measure table\n"); 1784 1503 goto failure; … … 1795 1514 if (catalog[0].missing != NULL) { 1796 1515 1797 if (catalog[0].Nmiss _off != 0) {1516 if (catalog[0].Nmissing_off != 0) { 1798 1517 fprintf (stderr, "inconsistency: Missing table cannot be written in segments\n"); 1799 1518 goto failure; … … 1818 1537 if (catalog[0].secfilt != NULL) { 1819 1538 1820 first = catalog[0].Nsecf _disk - catalog[0].Nsecf_off; // first row in memory to write1821 start = catalog[0].Nsecf _disk; // first disk row to write1822 Nrows = catalog[0].Nsecf _mem - first;1823 1824 assert (Nrows >= 0); 1825 assert (first >= 0); 1826 assert (catalog[0].Nsecf _disk >= catalog[0].Nsecf_off);1539 first = catalog[0].Nsecfilt_disk - catalog[0].Nsecfilt_off; // first row in memory to write 1540 start = catalog[0].Nsecfilt_disk; // first disk row to write 1541 Nrows = catalog[0].Nsecfilt_mem - first; 1542 1543 assert (Nrows >= 0); 1544 assert (first >= 0); 1545 assert (catalog[0].Nsecfilt_disk >= catalog[0].Nsecfilt_off); 1827 1546 1828 1547 // convert to external table format … … 1830 1549 1831 1550 // write out SecFilt table 1832 if (!dvo_catalog_save_subcat (catalog[0].secfilt_catalog, &ftable, start, Nrows, catalog[0].Nsecf _disk, Nsecf_disk_new)) {1551 if (!dvo_catalog_save_subcat (catalog[0].secfilt_catalog, &ftable, start, Nrows, catalog[0].Nsecfilt_disk, Nsecfilt_disk_new)) { 1833 1552 fprintf (stderr, "failure writing SecFilt table\n"); 1834 1553 goto failure; … … 1976 1695 1977 1696 /* XXX EAM : update is not efficient. MeasureToFtable should only 1978 convert the new rows (Nmeas _disk to Nmeasure). the resulting1697 convert the new rows (Nmeasure_disk to Nmeasure). the resulting 1979 1698 table represents the end rows of the ftable. we need to define 1980 1699 the vtable based on the ftable, but with Ny = Nmeasure */ … … 1985 1704 // * optionally write the PHU header/matrix 1986 1705 // * advance to the start of the output data block: 1987 // ** Nx * catalog[0].Nmeas _off1706 // ** Nx * catalog[0].Nmeasure_off 1988 1707 // * write out the ftable data block 1989 // * if Nmeas _off + Nmeasure >= Nmeas_disk, update padding1990 // ** start = Nmeas _off1708 // * if Nmeasure_off + Nmeasure >= Nmeasure_disk, update padding 1709 // ** start = Nmeasure_off 1991 1710 // ** Nrows = Nmeasure 1992 1711 -
branches/eam_branches/ohana.20150429/src/libdvo/src/dvo_convert.c
r38348 r38351 180 180 181 181 // FtableToMeasure needs the Average since old formats stored measure.dR,dD only 182 // other FtableToFOO conversions accept the average argument for macro construction 182 183 Measure *FtableToMeasure (FTable *ftable, Average *average, off_t *Nmeasure, DVOCatFormat *format, char nativeBytes) { 183 184 … … 308 309 } 309 310 311 /*** Missing / FTable conversion functions ***/ 312 313 Missing *FtableToMissing (FTable *ftable, Average *average, off_t *Nmissing, DVOCatFormat *format, char nativeBytes) { 314 315 Missing *missing; 316 char extname[80]; 317 318 /* convert to the internal format */ 319 if (!gfits_scan (ftable[0].header, "EXTNAME", "%s", 1, extname)) { 320 fprintf (stderr, "EXTNAME missing for missing table\n"); 321 return (FALSE); 322 } 323 324 # define SKIPPING_FORMAT(NAME, FORMAT, TYPE) \ 325 if (!strcmp (extname, NAME)) { \ 326 fprintf (stderr, "ERROR: format %s not defined for missing, skipping\n", NAME); \ 327 *Nmissing = 0; \ 328 return NULL; \ 329 } 330 331 # define CONVERT_FORMAT(NAME, FORMAT, TYPE) \ 332 if (!strcmp (extname, NAME)) { \ 333 Missing_##TYPE *tmpMissing; \ 334 tmpMissing = gfits_table_get_Missing_##TYPE (ftable, Nmissing, NULL, NULL); \ 335 if (!tmpMissing) { \ 336 fprintf (stderr, "ERROR: failed to read missing\n"); \ 337 exit (2); \ 338 } \ 339 missing = Missing_##TYPE##_ToInternal (tmpMissing, *Nmissing); \ 340 free (tmpMissing); \ 341 *format = DVO_FORMAT_##FORMAT; \ 342 return (missing); } 343 344 // XXX the structure is here for future expansion, but no transformations are currently defined 345 if (TRUE) { 346 missing = gfits_table_get_Missing (ftable, Nmissing, NULL, NULL); 347 if (!missing) { 348 fprintf (stderr, "ERROR: failed to read missing\n"); 349 exit (2); 350 } 351 *format = DVO_FORMAT_INTERNAL; 352 return (missing); 353 } 354 355 if (!strcmp (extname, "DVO_MISSING")) { 356 missing = gfits_table_get_Missing (ftable, Nmissing, NULL, NULL); 357 if (!missing) { 358 fprintf (stderr, "ERROR: failed to read missing\n"); 359 exit (2); 360 } 361 *format = DVO_FORMAT_INTERNAL; 362 return (missing); 363 } 364 365 SKIPPING_FORMAT ("DVO_MISSING_PS1_SIM", PS1_SIM, PS1_SIM); 366 SKIPPING_FORMAT ("DVO_MISSING_PS1_REF", PS1_REF, PS1_REF); 367 SKIPPING_FORMAT ("DVO_MISSING_ELIXIR", ELIXIR, Elixir); 368 SKIPPING_FORMAT ("DVO_MISSING_LONEOS", LONEOS, Loneos); 369 SKIPPING_FORMAT ("DVO_MISSING_PANSTARRS_DEV_0", PANSTARRS_DEV_0, Panstarrs_DEV_0); 370 SKIPPING_FORMAT ("DVO_MISSING_PANSTARRS_DEV_1", PANSTARRS_DEV_1, Panstarrs_DEV_1); 371 SKIPPING_FORMAT ("DVO_MISSING_PS1_DEV_1", PS1_DEV_1, PS1_DEV_1); 372 SKIPPING_FORMAT ("DVO_MISSING_PS1_DEV_2", PS1_DEV_2, PS1_DEV_2); 373 SKIPPING_FORMAT ("DVO_MISSING_PS1_V1", PS1_V1, PS1_V1); 374 SKIPPING_FORMAT ("DVO_MISSING_PS1_V2", PS1_V2, PS1_V2); 375 SKIPPING_FORMAT ("DVO_MISSING_PS1_V3", PS1_V3, PS1_V3); 376 SKIPPING_FORMAT ("DVO_MISSING_PS1_V4", PS1_V4, PS1_V4); 377 SKIPPING_FORMAT ("DVO_MISSING_PS1_V5", PS1_V5, PS1_V5); 378 # undef CONVERT_FORMAT 379 # undef SKIPPING_FORMAT 380 381 fprintf (stderr, "table format unknown: %s\n", extname); 382 383 *Nmissing = 0; 384 return (NULL); 385 } 386 310 387 /*** SecFilt / FTable conversion functions ***/ 311 388 312 SecFilt *FtableToSecFilt (FTable *ftable, off_t *Nsecfilt, DVOCatFormat *format, char nativeBytes) {389 SecFilt *FtableToSecFilt (FTable *ftable, Average *average, off_t *Nsecfilt, DVOCatFormat *format, char nativeBytes) { 313 390 314 391 SecFilt *secfilt; … … 420 497 /*** Lensing / FTable conversion functions ***/ 421 498 422 Lensing *FtableToLensing (FTable *ftable, off_t *Nlensing, DVOCatFormat *format, char nativeBytes) {499 Lensing *FtableToLensing (FTable *ftable, Average *average, off_t *Nlensing, DVOCatFormat *format, char nativeBytes) { 423 500 424 501 Lensing *lensing; … … 559 636 /*** Lensobj / FTable conversion functions ***/ 560 637 561 Lensobj *FtableToLensobj (FTable *ftable, off_t *Nlensobj, DVOCatFormat *format, char nativeBytes) {638 Lensobj *FtableToLensobj (FTable *ftable, Average *average, off_t *Nlensobj, DVOCatFormat *format, char nativeBytes) { 562 639 563 640 Lensobj *lensobj; … … 674 751 /*** StarPar / FTable conversion functions ***/ 675 752 676 StarPar *FtableToStarPar (FTable *ftable, off_t *Nstarpar, DVOCatFormat *format, char nativeBytes) {753 StarPar *FtableToStarPar (FTable *ftable, Average *average, off_t *Nstarpar, DVOCatFormat *format, char nativeBytes) { 677 754 678 755 StarPar *starpar; … … 778 855 /*** GalShape / FTable conversion functions ***/ 779 856 780 GalShape *FtableToGalShape (FTable *ftable, off_t *Ngalshape, DVOCatFormat *format, char nativeBytes) {857 GalShape *FtableToGalShape (FTable *ftable, Average *average, off_t *Ngalshape, DVOCatFormat *format, char nativeBytes) { 781 858 782 859 GalShape *galshape; -
branches/eam_branches/ohana.20150429/src/libdvo/src/dvo_util.c
r38344 r38351 207 207 Catalog catalog; 208 208 catalog.filename = skylist->filename[reg]; 209 catalog.catflags = GetMeasures ? LOAD_AVES | LOAD_MEAS | LOAD_SECF : LOAD_AVES | LOAD_SECF;209 catalog.catflags = GetMeasures ? DVO_LOAD_AVERAGE | DVO_LOAD_MEASURE | DVO_LOAD_SECFILT : DVO_LOAD_AVERAGE | DVO_LOAD_SECFILT; 210 210 catalog.Nsecfilt = 0; 211 211
Note:
See TracChangeset
for help on using the changeset viewer.
