Changeset 38441 for trunk/Ohana/src/libdvo
- Timestamp:
- Jun 12, 2015, 6:18:23 PM (11 years ago)
- Location:
- trunk/Ohana
- Files:
-
- 27 edited
-
. (modified) (1 prop)
-
src/libdvo/Makefile (modified) (2 diffs)
-
src/libdvo/include/dvo.h (modified) (14 diffs)
-
src/libdvo/include/ps1_v5_defs.h (modified) (1 diff)
-
src/libdvo/src/AstromOffsetMapIO.c (modified) (2 diffs)
-
src/libdvo/src/HostTable.c (modified) (2 diffs)
-
src/libdvo/src/LoadImages.c (modified) (1 diff)
-
src/libdvo/src/LoadPhotcodesFITS.c (modified) (2 diffs)
-
src/libdvo/src/SavePhotcodesFITS.c (modified) (2 diffs)
-
src/libdvo/src/dvo_catalog.c (modified) (19 diffs)
-
src/libdvo/src/dvo_catalog_create.c (modified) (7 diffs)
-
src/libdvo/src/dvo_catalog_mef.c (modified) (27 diffs)
-
src/libdvo/src/dvo_catalog_raw.c (modified) (7 diffs)
-
src/libdvo/src/dvo_catalog_split.c (modified) (80 diffs)
-
src/libdvo/src/dvo_convert.c (modified) (45 diffs)
-
src/libdvo/src/dvo_convert_PS1_DEV_2.c (modified) (2 diffs)
-
src/libdvo/src/dvo_convert_PS1_V1.c (modified) (2 diffs)
-
src/libdvo/src/dvo_convert_PS1_V2.c (modified) (2 diffs)
-
src/libdvo/src/dvo_convert_PS1_V3.c (modified) (2 diffs)
-
src/libdvo/src/dvo_convert_PS1_V4.c (modified) (3 diffs)
-
src/libdvo/src/dvo_convert_PS1_V5.c (modified) (8 diffs)
-
src/libdvo/src/dvo_image.c (modified) (6 diffs)
-
src/libdvo/src/dvo_image_raw.c (modified) (1 diff)
-
src/libdvo/src/dvo_util.c (modified) (2 diffs)
-
src/libdvo/src/fits_db.c (modified) (2 diffs)
-
src/libdvo/src/flatcorr_io.c (modified) (4 diffs)
-
src/libdvo/src/skyregion_io.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana
-
Property svn:mergeinfo
set to
/branches/eam_branches/ohana.20150429 merged eligible
-
Property svn:mergeinfo
set to
-
trunk/Ohana/src/libdvo/Makefile
r37992 r38441 10 10 MAN = $(HOME)/doc 11 11 INC = $(HOME)/include 12 TEST = $(HOME)/test 13 TESTBIN = $(HOME)/test 12 14 ASRC = $(AUTO)/src 13 15 AINC = $(AUTO)/include … … 153 155 rm -f $@ 154 156 cp $< $@ 157 echo "done making autocode.h" 155 158 156 159 $(AINC)/autocode.h: $(AINCS) $(ADEF)/autocode.h $(ADEF)/common.h -
trunk/Ohana/src/libdvo/include/dvo.h
r38154 r38441 10 10 11 11 /* DVO table modes */ 12 typedef enum {DVO_MODE_UNDEF, DVO_MODE_RAW, DVO_MODE_MEF, DVO_MODE_SPLIT, DVO_MODE_MYSQL} DVOTableMode; 12 typedef enum {DVO_MODE_UNDEF = 0, DVO_MODE_RAW, DVO_MODE_MEF, DVO_MODE_SPLIT, DVO_MODE_MYSQL} DVOCatMode; 13 14 /* DVO table modes */ 15 typedef enum {DVO_COMPRESS_NONE = 0, DVO_COMPRESS_NONE_1, DVO_COMPRESS_NONE_2, DVO_COMPRESS_AUTO, DVO_COMPRESS_GZIP_1, DVO_COMPRESS_GZIP_2, DVO_COMPRESS_RICE_1} DVOCatCompress; // 13 16 14 17 /* DVO table formats */ 15 18 typedef enum { 16 DVO_FORMAT_UNDEF ,19 DVO_FORMAT_UNDEF = 0, 17 20 DVO_FORMAT_INTERNAL, 18 21 DVO_FORMAT_ELIXIR, … … 30 33 DVO_FORMAT_PS1_V4, 31 34 DVO_FORMAT_PS1_V5, 32 } DVOTableFormat; 35 } DVOCatFormat; 36 37 typedef enum {DVO_CAT_OPEN_FAIL, DVO_CAT_OPEN_OK, DVO_CAT_OPEN_EMPTY} DVOCatalogOpenModes; 38 39 /* catalog values to be loaded */ 40 typedef enum { 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_GALPHOT = 0x4000, 57 DVO_SKIP_GALPHOT = 0x8000, 58 } DVOCatFlags; 33 59 34 60 /* image data modes in RegImage */ 35 61 typedef enum {T_UNDEF = -1, T_NONE, T_OBJECT, T_DARK, T_BIAS, T_FLAT, T_MASK, T_FRINGE, T_SCATTER, T_MODES, T_FRINGEPTS, T_ANY, N_TYPE} ElixirDetrendTypes; 36 62 typedef enum {M_UNDEF = -1, M_NONE, M_MEF, M_SPLIT, M_SINGLE, M_CUBE, M_SLICE, M_MODES, N_MODE} ElixirDetrendModes; 37 38 typedef enum {DVO_CAT_OPEN_FAIL, DVO_CAT_OPEN_OK, DVO_CAT_OPEN_EMPTY} DVOCatalogOpenModes;39 63 40 64 // these are used as NAN for types of int values … … 54 78 # define IMREG_DIST 0x01 /* image distributed, only imregister-3.0 */ 55 79 56 /* catalog values to be loaded */57 # define LOAD_NONE 0x000058 # define LOAD_AVES 0x000159 # define LOAD_MEAS 0x000260 # define LOAD_MISS 0x000461 # define LOAD_SECF 0x000862 # define SKIP_AVES 0x001063 # define SKIP_MEAS 0x002064 # define SKIP_MISS 0x004065 # define SKIP_SECF 0x008066 # define LOAD_LENSING 0x010067 # define LOAD_LENSOBJ 0x020068 # define SKIP_LENSING 0x040069 # define SKIP_LENSOBJ 0x080070 # define LOAD_STARPAR 0x100071 # define SKIP_STARPAR 0x200072 73 80 /* photometry code types */ 74 81 // # define PHOT_PRI 0x01 75 # define PHOT_SEC 0x02 76 # define PHOT_DEP 0x03 77 # define PHOT_REF 0x04 78 # define PHOT_ALT 0x05 /* never stored, only for look-ups */ 79 # define PHOT_MAG 0x06 /* generic magnitude; never stored */ 82 typedef enum { 83 PHOT_SEC = 0x02, 84 PHOT_DEP = 0x03, 85 PHOT_REF = 0x04, 86 PHOT_ALT = 0x05, /* never stored, only for look-ups */ 87 PHOT_MAG = 0x06, /* generic magnitude; never stored */ 88 } DVOPhotCodeTypes; 80 89 81 90 /* Image.code values -- these values are 32 bit (as of PS1_V1) */ … … 222 231 char lockstate; 223 232 char mode; /* what data storage mode is used for disk file? */ 224 char format;/* what data format is used for disk file? */233 DVOCatFormat format; /* what data format is used for disk file? */ 225 234 char virtual; /* is table in ftable or vtable? */ 226 char swapped; /* is table in internal byte-order? */ 235 char nativeOrder; /* is table in internal byte-order? */ 236 char scaledValue; /* is table in internal byte-order? */ 227 237 } FITS_DB; 228 238 … … 484 494 unsigned short Nmeasure; // number of psf measurements 485 495 unsigned short Nmissing; // number of missings 486 unsigned short N extend;// number of extended measurements496 unsigned short Ngalphot; // number of extended measurements 487 497 uint32_t measureOffset; // offset to first psf measurement 488 498 uint32_t missingOffset; // offset to first missing obs … … 704 714 unsigned short Nlensing; // number of lensing measurements 705 715 unsigned short Nlensobj; // number of lensing measurements 706 unsigned short N extend; // number of extendedmeasurements716 unsigned short Ngalphot; // number of galphot measurements 707 717 int measureOffset; // offset to first psf measurement 708 718 int missingOffset; // offset to first missing obs 709 719 int lensingOffset; // offset to first lensing obs 710 720 int lensobjOffset; // offset to mean lensing data 711 int extendOffset;// offset to extended object entry721 int galphotOffset; // offset to extended object entry 712 722 int starparOffset; // offset to stellar parameter data 713 723 float refColorBlue; // color of astrometry ref stars … … 742 752 743 753 // lensing data (optional?) 744 Lensing *lensing; 745 Lensobj *lensobj; 746 StarPar *starpar; 754 Lensing *lensing; 755 Lensobj *lensobj; 756 StarPar *starpar; 757 GalPhot *galphot; 747 758 748 759 int Nsecfilt; /* number of secfilt entries for each average entry */ 749 off_t Naverage, Nmeasure, Nmissing, Nlensing, Nlensobj, Nstarpar, Nsecf_mem; /* current number of each component in memory */750 off_t Nave s_disk, Nmeas_disk, Nmiss_disk, Nlensing_disk, Nlensobj_disk, Nstarpar_disk, Nsecf_disk; /* current number of each component on disk */751 off_t Nave s_off, Nmeas_off, Nmiss_off, Nlensing_off, Nlensobj_off, Nstarpar_off, Nsecf_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 */ 752 763 753 764 // note that we use these for the full-sky relphot analysis … … 765 776 766 777 /* pointers to split data files */ 767 struct Catalog *measure_catalog; /* measure catalog data (split) */ 768 struct Catalog *missing_catalog; /* missing catalog data (split) */ 769 struct Catalog *secfilt_catalog; /* secfilt catalog data (split) */ 770 struct Catalog *lensing_catalog; /* lensing catalog data (split) */ 771 struct Catalog *lensobj_catalog; /* lensobj catalog data (split) */ 772 struct Catalog *starpar_catalog; /* starpar catalog data (split) */ 778 struct Catalog *measure_catalog; /* measure catalog data (split) */ 779 struct Catalog *missing_catalog; /* missing catalog data (split) */ 780 struct Catalog *secfilt_catalog; /* secfilt catalog data (split) */ 781 struct Catalog *lensing_catalog; /* lensing catalog data (split) */ 782 struct Catalog *lensobj_catalog; /* lensobj catalog data (split) */ 783 struct Catalog *starpar_catalog; /* starpar catalog data (split) */ 784 struct Catalog *galphot_catalog; /* galphot catalog data (split) */ 773 785 774 786 unsigned int objID; … … 777 789 /* extra catalog information */ 778 790 char lockmode; 779 char catmode; /* storage mode (raw, mef, split, mysql) */ 780 char catformat; /* storage format (elixir, panstarrs, etc) */ 791 DVOCatMode catmode; /* storage mode (raw, mef, split, mysql) */ 792 DVOCatFormat catformat; /* storage format (elixir, panstarrs, etc) */ 793 DVOCatCompress catcompress; // output compress mode 794 DVOCatFlags catflags; /* choices to be loaded */ 795 781 796 int sorted; /* is measure table average-sorted? (NOTE this is an int only because gfits_scan %t requires it) */ 782 783 short catflags; /* choices to be loaded */ 797 784 798 785 799 /* pointers for data manipulation */ … … 928 942 int dvo_catalog_save_complete (Catalog *catalog, char VERBOSE); 929 943 int dvo_catalog_update (Catalog *catalog, char VERBOSE); 930 int dvo_catalog_catformat (char *catformat); 931 int dvo_catalog_catmode (char *catmode); 944 DVOCatFormat dvo_catalog_catformat (char *catformat); 945 DVOCatMode dvo_catalog_catmode (char *catmode); 946 DVOCatCompress dvo_catalog_catcompress (char *catcompress); 947 char *dvo_catalog_compress_string (DVOCatCompress catcompress); 932 948 void dvo_catalog_test (Catalog *catalog, int halt); 933 949 … … 956 972 int WriteRawSecFilt (FILE *f, SecFilt *secfilt, off_t Nsecfilt, char format); 957 973 958 DVOTableFormat FtableGetFormat (FTable *ftable); 959 960 Average *FtableToAverage (FTable *ftable, off_t *Naverage, char *format, SecFilt **primary); 961 Measure *FtableToMeasure (FTable *ftable, Average *average, off_t *Nmeasure, char *format); 962 SecFilt *FtableToSecFilt (FTable *ftable, off_t *Nsecfilt, char *format); 963 Lensing *FtableToLensing (FTable *ftable, off_t *Nlensing, char *format); 964 Lensobj *FtableToLensobj (FTable *ftable, off_t *Nlensobj, char *format); 965 StarPar *FtableToStarPar (FTable *ftable, off_t *Nstarpar, char *format); 966 int FtableToImage (FTable *ftable, Header *theader, char *format); 967 968 int AverageToFtable (FTable *ftable, Average *average, off_t Naverage, char format, SecFilt *primary); 969 int MeasureToFtable (FTable *ftable, Average *average, Measure *measure, off_t Nmeasure, char format); 970 int SecFiltToFtable (FTable *ftable, SecFilt *secfilt, off_t Nsecfilt, char format); 971 int LensingToFtable (FTable *ftable, Lensing *lensing, off_t Nlensing, char format); 972 int LensobjToFtable (FTable *ftable, Lensobj *lensobj, off_t Nlensobj, char format); 973 int StarParToFtable (FTable *ftable, StarPar *starpar, off_t Nstarpar, char format); 974 int ImageToFtable (FTable *ftable, Header *theader, char format); 975 int ImageToVtable (VTable *vtable, Header *theader, char format); 974 DVOCatFormat FtableGetFormat (FTable *ftable); 975 976 Average *FtableToAverage (FTable *ftable, off_t *Naverage, DVOCatFormat *format, SecFilt **primary, 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 GalPhot *FtableToGalPhot (FTable *ftable, Average *average, off_t *Ngalphot, DVOCatFormat *format, char nativeOrder); 985 986 int FtableToImage (FTable *ftable, Header *theader, DVOCatFormat *format); 987 988 int MeasureToFtable (FTable *ftable, Average *average, Measure *measure, off_t Nmeasure, DVOCatFormat format, int swapFromNative); 989 int AverageToFtable (FTable *ftable, Average *average, off_t Naverage, DVOCatFormat format, SecFilt *primary, int swapFromNative); 990 int SecFiltToFtable (FTable *ftable, SecFilt *secfilt, off_t Nsecfilt, DVOCatFormat format, int swapFromNative); 991 int LensingToFtable (FTable *ftable, Lensing *lensing, off_t Nlensing, DVOCatFormat format, int swapFromNative); 992 int LensobjToFtable (FTable *ftable, Lensobj *lensobj, off_t Nlensobj, DVOCatFormat format, int swapFromNative); 993 int StarParToFtable (FTable *ftable, StarPar *starpar, off_t Nstarpar, DVOCatFormat format, int swapFromNative); 994 int GalPhotToFtable (FTable *ftable, GalPhot *galphot, off_t Ngalphot, DVOCatFormat format, int swapFromNative); 995 996 int ImageToFtable (FTable *ftable, Header *theader, DVOCatFormat format); 997 int ImageToVtable (VTable *vtable, Header *theader, DVOCatFormat format); 976 998 977 999 # include "loneos_defs.h" … … 1005 1027 int gfits_table_set_Image (FTable *ftable); 1006 1028 int gfits_table_mkheader_Image (Header *header); 1007 Image *gfits_table_get_Image (FTable *ftable, off_t *Ndata, char *s wapped);1029 Image *gfits_table_get_Image (FTable *ftable, off_t *Ndata, char *scaledValue, char *nativeOrder); 1008 1030 1009 1031 /* flatcorr APIs */ … … 1069 1091 void InitHost (HostInfo *host); 1070 1092 1071 HostTableGroup *HostTableGroups (HostTable *table, int *ngroups); 1093 HostTableGroup *HostTableGroupsUniqueMachines (HostTable *table, int *ngroups); 1094 HostTableGroup *HostTableGroupsMaxNumber (HostTable *table, int *ngroups, int Nmax); 1095 1072 1096 int HostTableGroupWaitJobsGetIO (HostTableGroup *table, char *file, int lineno, int VERBOSE); 1073 1097 … … 1106 1130 void dvo_lensobj_init (Lensobj *lensobj, int toZero); 1107 1131 void dvo_starpar_init (StarPar *starpar); 1132 void dvo_galphot_init (GalPhot *galphot); 1108 1133 1109 1134 void InitRegionHosts (RegionHostInfo *hosts, int Nhosts, int NHOSTS); -
trunk/Ohana/src/libdvo/include/ps1_v5_defs.h
r38153 r38441 23 23 StarPar_PS1_V5 *StarParInternalTo_PS1_V5 (StarPar *in, off_t Nvalues); 24 24 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 25 28 PhotCode *PhotCode_PS1_V5_To_Internal (PhotCode_PS1_V5 *in, off_t Nvalues); 26 29 PhotCode_PS1_V5 *PhotCode_Internal_To_PS1_V5 (PhotCode *in, off_t Nvalues); -
trunk/Ohana/src/libdvo/src/AstromOffsetMapIO.c
r37807 r38441 39 39 return (NULL); 40 40 } 41 AstromOffsetMap_Disk_6x6 *map_disk = gfits_table_get_AstromOffsetMap_Disk_6x6 (&ftable, &Nmap, NULL );41 AstromOffsetMap_Disk_6x6 *map_disk = gfits_table_get_AstromOffsetMap_Disk_6x6 (&ftable, &Nmap, NULL, NULL); 42 42 if (!map_disk) { 43 43 fprintf (stderr, "ERROR: failed to read Astrom Offset Map\n"); … … 78 78 79 79 ftable.header = &theader; 80 gfits_table_set_AstromOffsetMap_Disk_6x6 (&ftable, map_disk, Nmap );80 gfits_table_set_AstromOffsetMap_Disk_6x6 (&ftable, map_disk, Nmap, TRUE); 81 81 82 82 f = fopen (filename, "w"); -
trunk/Ohana/src/libdvo/src/HostTable.c
r37807 r38441 155 155 156 156 // split a host table into Ngroups, each with a unique set of hosts 157 HostTableGroup *HostTableGroups (HostTable *table, int *ngroups) {157 HostTableGroup *HostTableGroupsUniqueMachines (HostTable *table, int *ngroups) { 158 158 159 159 // identify the unique host names and the number of times they each exist … … 210 210 foundHost[k] = TRUE; 211 211 } 212 } 213 } 214 *ngroups = Ngroups; 215 return groups; 216 } 217 218 // split a host table into Ngroups, each with a unique set of hosts 219 HostTableGroup *HostTableGroupsMaxNumber (HostTable *table, int *ngroups, int Nmax) { 220 221 int i, j; 222 223 int Ngroups = (table->Nhosts % Nmax) ? (int)(table->Nhosts / Nmax + 1) : table->Nhosts / Nmax; 224 225 HostTableGroup *groups = NULL; 226 ALLOCATE (groups, HostTableGroup, Ngroups); 227 228 // in each group, attempt to add one of each unique host 229 int k = 0; 230 for (i = 0; i < Ngroups; i++) { 231 groups[i].Nhosts = 0; 232 ALLOCATE (groups[i].hosts, HostInfo *, Nmax); 233 for (j = 0; j < Nmax; j++) { 234 groups[i].hosts[groups[i].Nhosts] = &table->hosts[k]; 235 groups[i].Nhosts ++; 236 k++; 212 237 } 213 238 } -
trunk/Ohana/src/libdvo/src/LoadImages.c
r37807 r38441 65 65 } 66 66 67 image = gfits_table_get_Image (&db.ftable, Nimage, &db.s wapped);67 image = gfits_table_get_Image (&db.ftable, Nimage, &db.scaledValue, &db.nativeOrder); 68 68 if (!image) { 69 69 fprintf (stderr, "ERROR: failed to read images\n"); -
trunk/Ohana/src/libdvo/src/LoadPhotcodesFITS.c
r37035 r38441 15 15 16 16 /* XXX choose more sensible lock timeouts! */ 17 gfits_db_init (&db); 17 18 db.timeout = 60.0; 18 19 db.lockstate = LCK_SOFT; 19 gfits_db_init (&db);20 20 21 21 /* does this mean the db is empty, non-existent, or has access errors? */ … … 43 43 # define CONVERT_FORMAT(NAME, FORMAT) \ 44 44 if (!strcmp (extname, NAME)) { \ 45 PhotCode_##FORMAT *photcode_input = gfits_table_get_PhotCode_##FORMAT (&db.ftable, &Ncode, &db.s wapped); \45 PhotCode_##FORMAT *photcode_input = gfits_table_get_PhotCode_##FORMAT (&db.ftable, &Ncode, &db.scaledValue, &db.nativeOrder); \ 46 46 if (!photcode_input) { \ 47 47 fprintf (stderr, "ERROR: failed to read photcodes in LoadPhotcodesFITS.c\n"); \ -
trunk/Ohana/src/libdvo/src/SavePhotcodesFITS.c
r37035 r38441 17 17 18 18 /* XXX choose more sensible lock timeouts! */ 19 gfits_db_init (&db); 19 20 db.lockstate = LCK_XCLD; 20 21 db.timeout = 10.0; 21 gfits_db_init (&db);22 22 23 23 /* does this mean the db is empty, non-existent, or has access errors? */ … … 34 34 /* convert FITS format data to internal format (byteswaps & EXTNAME) */ 35 35 if (!gfits_db_create (&db)) return (FALSE); 36 if (!gfits_table_set_PhotCode_PS1_V5 (&db.ftable, photcode_output, table[0].Ncode )) return (FALSE);36 if (!gfits_table_set_PhotCode_PS1_V5 (&db.ftable, photcode_output, table[0].Ncode, TRUE)) return (FALSE); 37 37 if (!gfits_db_save (&db)) return (FALSE); 38 38 if (!gfits_db_close (&db)) return (FALSE); -
trunk/Ohana/src/libdvo/src/dvo_catalog.c
r38062 r38441 42 42 } 43 43 44 int dvo_catalog_catformat (char *catformat) {44 DVOCatFormat dvo_catalog_catformat (char *catformat) { 45 45 46 46 /* set the specified CATFORMAT */ … … 62 62 } 63 63 64 intdvo_catalog_catmode (char *catmode) {64 DVOCatMode dvo_catalog_catmode (char *catmode) { 65 65 66 66 /* set the specified CATMODE */ … … 69 69 if (!strcasecmp (catmode, "SPLIT")) return (DVO_MODE_SPLIT); 70 70 return (DVO_MODE_UNDEF); 71 } 72 73 DVOCatCompress dvo_catalog_catcompress (char *catcompress) { 74 75 /* set the specified CATMODE */ 76 if (!strcasecmp (catcompress, "NONE")) return (DVO_COMPRESS_NONE); 77 if (!strcasecmp (catcompress, "AUTO")) return (DVO_COMPRESS_AUTO); 78 if (!strcasecmp (catcompress, "NONE_1")) return (DVO_COMPRESS_NONE_1); 79 if (!strcasecmp (catcompress, "NONE_2")) return (DVO_COMPRESS_NONE_2); 80 if (!strcasecmp (catcompress, "GZIP_1")) return (DVO_COMPRESS_GZIP_1); 81 if (!strcasecmp (catcompress, "GZIP_2")) return (DVO_COMPRESS_GZIP_2); 82 if (!strcasecmp (catcompress, "RICE_1")) return (DVO_COMPRESS_RICE_1); 83 return (DVO_COMPRESS_NONE); 84 } 85 86 // we can return a static string here unless we run multiple outputs threads at once 87 static char compress_string[16]; 88 char *dvo_catalog_compress_string (DVOCatCompress catcompress) { 89 90 switch (catcompress) { 91 case DVO_COMPRESS_NONE: 92 strcpy (compress_string, "NONE"); 93 break; 94 case DVO_COMPRESS_AUTO: 95 strcpy (compress_string, "AUTO"); 96 break; 97 case DVO_COMPRESS_GZIP_1: 98 strcpy (compress_string, "GZIP_1"); 99 break; 100 case DVO_COMPRESS_GZIP_2: 101 strcpy (compress_string, "GZIP_2"); 102 break; 103 case DVO_COMPRESS_NONE_1: 104 strcpy (compress_string, "NONE_1"); 105 break; 106 case DVO_COMPRESS_NONE_2: 107 strcpy (compress_string, "NONE_2"); 108 break; 109 case DVO_COMPRESS_RICE_1: 110 strcpy (compress_string, "RICE_1"); 111 break; 112 default: 113 myAbort ("error in compress option"); 114 } 115 return compress_string; 71 116 } 72 117 … … 131 176 average->Nlensobj = 0; 132 177 average->Nstarpar = 0; 133 average->N extend= 0;178 average->Ngalphot = 0; 134 179 135 180 average->measureOffset = -1; … … 138 183 average->lensobjOffset = -1; 139 184 average->starparOffset = -1; 140 average-> extendOffset= -1;185 average->galphotOffset = -1; 141 186 142 187 average->refColorBlue = NAN; … … 466 511 467 512 // init all data, or just catalog data 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 } 536 537 # define INIT_TABLE(TABLE) \ 538 catalog[0].TABLE = NULL; \ 539 catalog[0].N##TABLE = 0; \ 540 catalog[0].N##TABLE##_disk = 0; \ 541 catalog[0].N##TABLE##_off = 0; \ 542 catalog[0].TABLE##_catalog = NULL; 543 544 // init all data, or just catalog data 468 545 void dvo_catalog_init (Catalog *catalog, int complete) { 469 546 … … 473 550 catalog[0].filename = NULL; 474 551 475 catalog[0].lockmode = 0; 476 catalog[0].catmode = 0; 477 catalog[0].catformat = 0; 478 catalog[0].catflags = 0; 479 catalog[0].Nsecfilt = 0; 552 catalog[0].lockmode = 0; 553 catalog[0].catmode = DVO_MODE_UNDEF; 554 catalog[0].catformat = DVO_FORMAT_UNDEF; 555 catalog[0].catcompress = DVO_COMPRESS_NONE; 556 catalog[0].catflags = DVO_LOAD_NONE; 557 catalog[0].Nsecfilt = 0; 480 558 } 481 559 482 560 gfits_init_header (&catalog[0].header); 483 561 484 562 // the following describe the catalog files on disk 485 563 catalog[0].average = NULL; 486 catalog[0].measure = NULL; 487 catalog[0].missing = NULL; 564 catalog[0].Naverage = 0; 565 catalog[0].Naverage_disk = 0; 566 catalog[0].Naverage_off = 0; 567 // average lacks average_catalog 568 488 569 catalog[0].secfilt = NULL; 489 490 catalog[0]. lensing = NULL;491 catalog[0]. lensobj = NULL;492 493 catalog[0].starpar = NULL;570 catalog[0].Nsecfilt_mem = 0; 571 catalog[0].Nsecfilt_disk = 0; 572 catalog[0].Nsecfilt_off = 0; 573 catalog[0].secfilt_catalog = NULL; 574 // secfilt uses Nsecfilt_mem not Nsecfilt 494 575 495 576 catalog[0].averageT = NULL; 496 577 catalog[0].measureT = NULL; 578 579 INIT_TABLE(measure); 580 INIT_TABLE(missing); 581 INIT_TABLE(lensing); 582 INIT_TABLE(lensobj); 583 INIT_TABLE(starpar); 584 INIT_TABLE(galphot); 497 585 498 586 catalog[0].objID = 0; 499 587 catalog[0].catID = 0; 500 588 catalog[0].sorted = 0; 501 502 catalog[0].Naverage = 0;503 catalog[0].Nmeasure = 0;504 catalog[0].Nmissing = 0;505 catalog[0].Nsecf_mem = 0;506 507 catalog[0].Nlensing = 0;508 catalog[0].Nlensobj = 0;509 510 catalog[0].Nstarpar = 0;511 512 catalog[0].Naves_disk = 0;513 catalog[0].Nmeas_disk = 0;514 catalog[0].Nmiss_disk = 0;515 catalog[0].Nsecf_disk = 0;516 517 catalog[0].Nlensing_disk = 0;518 catalog[0].Nlensobj_disk = 0;519 520 catalog[0].Nstarpar_disk = 0;521 522 catalog[0].Naves_off = 0;523 catalog[0].Nmeas_off = 0;524 catalog[0].Nmiss_off = 0;525 catalog[0].Nsecf_off = 0;526 527 catalog[0].Nlensing_off = 0;528 catalog[0].Nlensobj_off = 0;529 530 catalog[0].Nstarpar_off = 0;531 532 /* pointers to SPLIT data files */533 catalog[0].measure_catalog = NULL;534 catalog[0].missing_catalog = NULL;535 catalog[0].secfilt_catalog = NULL;536 catalog[0].lensing_catalog = NULL;537 catalog[0].lensobj_catalog = NULL;538 catalog[0].starpar_catalog = NULL;539 589 540 590 /* pointers for data manipulation */ … … 568 618 if (catalog[0].f == NULL) return (DVO_CAT_OPEN_FAIL); 569 619 570 fseeko (catalog[0].f, 0, SEEK_SET); 620 if (fseeko (catalog[0].f, 0, SEEK_SET)) { 621 perror ("fseeko: "); 622 exit (1); 623 } 571 624 return (DVO_CAT_OPEN_OK); 572 625 } … … 580 633 581 634 if (fflush (catalog[0].f)) { 582 fprintf (stderr, "failed to flush file\n"); 635 perror ("fflush: "); 636 fprintf (stderr, "failed to flush file %s\n", catalog[0].filename); 583 637 return FALSE; 584 638 } … … 607 661 if (catalog[0].lensobj_catalog) { if (!dvo_catalog_unlock (catalog[0].lensobj_catalog)) { fprintf (stderr, "failed to unlock lensobj\n"); return (0); }} 608 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); }} 609 664 } 610 665 return (1); … … 849 904 catalog[0].secfilt = outsec; 850 905 catalog[0].Nsecfilt = Nsecfilt; 851 catalog[0].Nsecf _mem = Nsecfilt * catalog[0].Naverage;906 catalog[0].Nsecfilt_mem = Nsecfilt * catalog[0].Naverage; 852 907 } 853 908 return (TRUE); … … 887 942 dvo_catalog_free (catalog[0].starpar_catalog); 888 943 free (catalog[0].starpar_catalog); 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); 889 949 } 890 950 } … … 914 974 if (catalog[0].secfilt) { 915 975 free (catalog[0].secfilt); 916 catalog[0].Nsecf _mem = 0;976 catalog[0].Nsecfilt_mem = 0; 917 977 catalog[0].secfilt = NULL; 918 978 } … … 932 992 catalog[0].starpar = NULL; 933 993 } 994 if (catalog[0].galphot) { 995 free (catalog[0].galphot); 996 catalog[0].Ngalphot = 0; 997 catalog[0].galphot = NULL; 998 } 934 999 if (catalog[0].nOwn_t) { free (catalog[0].nOwn_t); catalog[0].nOwn_t = NULL; } 935 1000 if (catalog[0].found_t) { free (catalog[0].found_t); catalog[0].found_t = NULL; } … … 938 1003 939 1004 /* 940 mode : items to read ( LOAD_AVES | LOAD_MEAS | LOAD_MISS | LOAD_SECF)1005 mode : items to read (DVO_LOAD_AVERAGE | DVO_LOAD_MEASURE | DVO_LOAD_MISSING | DVO_LOAD_SECFILT) 941 1006 format : what table structure on disk (INTERNAL, LONEOS, etc, ) 942 1007 style : raw, mef, split, mysql … … 971 1036 972 1037 // skip empty cpt files 973 if (primary && !catalog->Nave s_disk) {1038 if (primary && !catalog->Naverage_disk) { 974 1039 return TRUE; 975 1040 } … … 1053 1118 } 1054 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 } 1055 1130 } 1056 1131 return TRUE; … … 1060 1135 int dvo_catalog_unlink_backup (Catalog *catalog, int primary) { 1061 1136 1062 if (primary && !catalog->Nave s_disk) {1137 if (primary && !catalog->Naverage_disk) { 1063 1138 // skip empty files (empty when read, but output may not be empty) 1064 1139 return TRUE; … … 1109 1184 } 1110 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 } 1111 1191 } 1112 1192 return TRUE; -
trunk/Ohana/src/libdvo/src/dvo_catalog_create.c
r37807 r38441 1 1 # include <dvo.h> 2 2 # define DEBUG 0 3 4 Catalog *dvo_catalog_create_subcat (Catalog *catalog, char *ext, char *tablename); 3 5 4 6 // create a new dvo catalog file (if split, lock extra files as well?) … … 9 11 // catalog[0].lockmode 10 12 void dvo_catalog_create (SkyRegion *region, Catalog *catalog) { 11 12 int length;13 char *path, *root, *file, *line;14 time_t now;15 13 16 14 if (DEBUG) fprintf (stderr, "new catalog file: %s\n", catalog[0].filename); … … 29 27 30 28 if (catalog[0].catmode == DVO_MODE_SPLIT) { 31 path = pathname (catalog[0].filename); 32 root = filerootname (catalog[0].filename); 33 length = strlen(path) + strlen(root) + 6; 34 35 /* define measure catalog file */ 36 ALLOCATE (catalog[0].measure_catalog, Catalog, 1); 37 dvo_catalog_init (catalog[0].measure_catalog, TRUE); 38 39 /* create basic data for measure catalog file */ 40 gfits_create_header (&catalog[0].measure_catalog[0].header); 41 42 ALLOCATE (catalog[0].measure_catalog[0].filename, char, length); 43 44 sprintf (catalog[0].measure_catalog[0].filename, "%s/%s.cpm", path, root); 45 file = filebasename (catalog[0].measure_catalog[0].filename); 46 gfits_modify (&catalog[0].header, "MEASURE", "%s", 1, file); 47 free (file); 48 49 /* define missing catalog file */ 50 ALLOCATE (catalog[0].missing_catalog, Catalog, 1); 51 dvo_catalog_init (catalog[0].missing_catalog, TRUE); 52 53 /* create basic data for missing catalog file */ 54 gfits_create_header (&catalog[0].missing_catalog[0].header); 55 ALLOCATE (catalog[0].missing_catalog[0].filename, char, length); 56 sprintf (catalog[0].missing_catalog[0].filename, "%s/%s.cpn", path, root); 57 file = filebasename (catalog[0].missing_catalog[0].filename); 58 gfits_modify (&catalog[0].header, "MISSING", "%s", 1, file); 59 free (file); 60 61 /* define secfilt catalog file */ 62 ALLOCATE (catalog[0].secfilt_catalog, Catalog, 1); 63 dvo_catalog_init (catalog[0].secfilt_catalog, TRUE); 64 65 /* create basic data for secfilt catalog file */ 66 gfits_create_header (&catalog[0].secfilt_catalog[0].header); 67 ALLOCATE (catalog[0].secfilt_catalog[0].filename, char, length); 68 sprintf (catalog[0].secfilt_catalog[0].filename, "%s/%s.cps", path, root); 69 file = filebasename (catalog[0].secfilt_catalog[0].filename); 70 gfits_modify (&catalog[0].header, "SECFILT", "%s", 1, file); 71 free (file); 72 73 /* define lensing catalog file */ 74 ALLOCATE (catalog[0].lensing_catalog, Catalog, 1); 75 dvo_catalog_init (catalog[0].lensing_catalog, TRUE); 76 77 /* create basic data for lensing catalog file */ 78 gfits_create_header (&catalog[0].lensing_catalog[0].header); 79 ALLOCATE (catalog[0].lensing_catalog[0].filename, char, length); 80 sprintf (catalog[0].lensing_catalog[0].filename, "%s/%s.cpx", path, root); 81 file = filebasename (catalog[0].lensing_catalog[0].filename); 82 gfits_modify (&catalog[0].header, "LENSING", "%s", 1, file); 83 free (file); 84 85 /* define lensobj catalog file */ 86 ALLOCATE (catalog[0].lensobj_catalog, Catalog, 1); 87 dvo_catalog_init (catalog[0].lensobj_catalog, TRUE); 88 89 /* create basic data for lensobj catalog file */ 90 gfits_create_header (&catalog[0].lensobj_catalog[0].header); 91 ALLOCATE (catalog[0].lensobj_catalog[0].filename, char, length); 92 sprintf (catalog[0].lensobj_catalog[0].filename, "%s/%s.cpy", path, root); 93 file = filebasename (catalog[0].lensobj_catalog[0].filename); 94 gfits_modify (&catalog[0].header, "LENSOBJ", "%s", 1, file); 95 free (file); 96 97 /* define starpar catalog file */ 98 ALLOCATE (catalog[0].starpar_catalog, Catalog, 1); 99 dvo_catalog_init (catalog[0].starpar_catalog, TRUE); 100 101 /* create basic data for starpar catalog file */ 102 gfits_create_header (&catalog[0].starpar_catalog[0].header); 103 ALLOCATE (catalog[0].starpar_catalog[0].filename, char, length); 104 sprintf (catalog[0].starpar_catalog[0].filename, "%s/%s.cpz", path, root); 105 file = filebasename (catalog[0].starpar_catalog[0].filename); 106 gfits_modify (&catalog[0].header, "STARPAR", "%s", 1, file); 107 free (file); 108 109 free (path); 110 free (root); 29 catalog[0].measure_catalog = dvo_catalog_create_subcat (catalog, "cpm", "MEASURE"); 30 catalog[0].missing_catalog = dvo_catalog_create_subcat (catalog, "cpn", "MISSING"); 31 catalog[0].secfilt_catalog = dvo_catalog_create_subcat (catalog, "cps", "SECFILT"); 32 catalog[0].lensing_catalog = dvo_catalog_create_subcat (catalog, "cpx", "LENSING"); 33 catalog[0].lensobj_catalog = dvo_catalog_create_subcat (catalog, "cpy", "LENSOBJ"); 34 catalog[0].starpar_catalog = dvo_catalog_create_subcat (catalog, "cpz", "STARPAR"); 35 catalog[0].galphot_catalog = dvo_catalog_create_subcat (catalog, "cpq", "GALPHOT"); 111 36 112 37 // lock the additional split files … … 136 61 exit (2); 137 62 } 63 if (dvo_catalog_lock (catalog[0].galphot_catalog, catalog[0].lockmode) != DVO_CAT_OPEN_EMPTY) { 64 fprintf (stderr, "error with file lock\n"); 65 exit (2); 66 } 138 67 } 139 68 … … 150 79 151 80 /* write creation date in header */ 81 time_t now; 152 82 ohana_str_to_time ("now", &now); 153 line = ohana_sec_to_date (now);83 char *line = ohana_sec_to_date (now); 154 84 gfits_modify (&catalog[0].header, "DATE", "%s", 1, line); 155 85 free (line); … … 163 93 ALLOCATE (catalog[0].lensobj, Lensobj, 1); 164 94 ALLOCATE (catalog[0].starpar, StarPar, 1); 95 ALLOCATE (catalog[0].galphot, GalPhot, 1); 165 96 166 97 /* setup secondary filters to match photcodes: … … 170 101 } 171 102 103 Catalog *dvo_catalog_create_subcat (Catalog *catalog, char *ext, char *tablename) { 104 105 char *path = pathname (catalog[0].filename); 106 char *root = filerootname (catalog[0].filename); 107 int length = strlen(path) + strlen(root) + 6; 108 109 Catalog *subcat; 110 111 /* define subcat catalog file */ 112 ALLOCATE (subcat, Catalog, 1); 113 dvo_catalog_init (subcat, TRUE); 114 115 /* create basic data for measure catalog file */ 116 gfits_create_header (&subcat->header); 117 118 subcat->catcompress = catalog->catcompress; 119 120 ALLOCATE (subcat->filename, char, length); 121 122 sprintf (subcat->filename, "%s/%s.%s", path, root, ext); 123 124 char *file = filebasename (subcat->filename); 125 gfits_modify (&catalog[0].header, tablename, "%s", 1, file); 126 127 free (file); 128 free (path); 129 free (root); 130 131 return subcat; 132 } 133 172 134 int dvo_catalog_set_range (Catalog *catalog) { 173 135 -
trunk/Ohana/src/libdvo/src/dvo_catalog_mef.c
r37807 r38441 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, Naves_disk, TRUE); 44 GET_TABLE_SIZES ("NMEAS", measure, Nmeas_disk, TRUE); 45 GET_TABLE_SIZES ("NMISS", missing, Nmiss_disk, FALSE); 46 GET_TABLE_SIZES ("NLENSING", lensing, Nlensing_disk, FALSE); 47 GET_TABLE_SIZES ("NLENSOBJ", lensobj, Nlensobj_disk, FALSE); 48 GET_TABLE_SIZES ("NSTARPAR", starpar, Nstarpar_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 GET_TABLE_SIZES ("NLENSING", lensing, Nlensing_disk, FALSE); 47 GET_TABLE_SIZES ("NLENSOBJ", lensobj, Nlensobj_disk, FALSE); 48 GET_TABLE_SIZES ("NSTARPAR", starpar, Nstarpar_disk, FALSE); 49 GET_TABLE_SIZES ("NGALPHOT", galphot, Ngalphot_disk, FALSE); 49 50 50 51 /** Nsecfilt is unusual: it does not list the number of data items in the table … … 53 54 if (!gfits_scan (&catalog[0].header, "NSECFILT", "%d", 1, &Nsecfilt)) Nsecfilt = 0; 54 55 catalog[0].Nsecfilt = Nsecfilt; 55 catalog[0].Nsecf _disk = Naverage * Nsecfilt;56 catalog[0].Nsecfilt_disk = Naverage * Nsecfilt; 56 57 catalog[0].secfilt = NULL; 57 58 … … 70 71 71 72 /* read Average table data (or skip) */ 72 if (catalog[0].catflags & LOAD_AVES) {73 if (catalog[0].catflags & DVO_LOAD_AVERAGE) { 73 74 if (!gfits_fread_ftable_data (catalog[0].f, &ftable, FALSE)) { 74 75 if (VERBOSE) fprintf (stderr, "can't read table average data"); … … 76 77 } 77 78 /* old versions of DVO stored one of the average magnitudes in Average. we save this if needed */ 78 catalog[0].average = FtableToAverage (&ftable, &Naverage, &catalog[0].catformat, &primary );79 if (Naverage != catalog[0].Nave s_disk) {80 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);81 } 82 catalog[0].Naverage = catalog[0].Nave s_disk;83 catalog[0].Nave s_off = 0;79 catalog[0].average = FtableToAverage (&ftable, &Naverage, &catalog[0].catformat, &primary, FALSE); 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; 84 85 } else { 85 86 catalog[0].catformat = FtableGetFormat (&ftable); … … 88 89 ALLOCATE (catalog[0].average, Average, 1); 89 90 catalog[0].Naverage = 0; 90 catalog[0].Nave s_off = catalog[0].Naves_disk;91 catalog[0].Naverage_off = catalog[0].Naverage_disk; 91 92 } 92 93 gfits_free_header (&header); … … 99 100 } 100 101 /* read Measure table data */ 101 if (catalog[0].catflags & LOAD_MEAS) {102 if (catalog[0].catflags & DVO_LOAD_MEASURE) { 102 103 if (!gfits_fread_ftable_data (catalog[0].f, &ftable, FALSE)) { 103 104 if (VERBOSE) fprintf (stderr, "can't read table measure data"); 104 105 return (FALSE); 105 106 } 106 catalog[0].measure = FtableToMeasure (&ftable, catalog[0].average, &catalog[0].Nmeasure, &catalog[0].catformat );107 if (Nmeasure != catalog[0].Nmeas _disk) {108 fprintf (stderr, "Warning: mismatch between Nmeasure in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n", Nmeasure, catalog[0].Nmeas _disk);109 } 110 catalog[0].Nmeasure = catalog[0].Nmeas _disk;111 catalog[0].Nmeas _off = 0;107 catalog[0].measure = FtableToMeasure (&ftable, catalog[0].average, &catalog[0].Nmeasure, &catalog[0].catformat, FALSE); 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; 112 113 } else { 113 114 Nbytes = gfits_data_size (&header); … … 115 116 ALLOCATE (catalog[0].measure, Measure, 1); 116 117 catalog[0].Nmeasure = 0; 117 catalog[0].Nmeas _off = catalog[0].Nmeas_disk;118 catalog[0].Nmeasure_off = catalog[0].Nmeasure_disk; 118 119 } 119 120 … … 124 125 } 125 126 /* read Missing table data */ 126 if (catalog[0].catflags & LOAD_MISS) {127 if (catalog[0].catflags & DVO_LOAD_MISSING) { 127 128 if (!gfits_fread_ftable_data (catalog[0].f, &ftable, FALSE)) { 128 129 if (VERBOSE) fprintf (stderr, "can't read table missing data"); … … 130 131 } 131 132 /* no conversions currently defined */ 132 catalog[0].missing = gfits_table_get_Missing (&ftable, &catalog[0].Nmissing, NULL );133 catalog[0].missing = gfits_table_get_Missing (&ftable, &catalog[0].Nmissing, NULL, NULL); 133 134 if (!catalog[0].missing) { 134 135 fprintf (stderr, "ERROR: failed to read missing\n"); 135 136 exit (2); 136 137 } 137 if (Nmissing != catalog[0].Nmiss _disk) {138 fprintf (stderr, "Warning: mismatch between Nmissing in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n", Nmissing, catalog[0].Nmiss _disk);139 } 140 catalog[0].Nmissing = catalog[0].Nmiss _disk;141 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; 142 143 } else { 143 144 Nbytes = gfits_data_size (&header); … … 145 146 ALLOCATE (catalog[0].missing, Missing, 1); 146 147 catalog[0].Nmissing = 0; 147 catalog[0].Nmiss _off = catalog[0].Nmiss_disk;148 catalog[0].Nmissing_off = catalog[0].Nmissing_disk; 148 149 } 149 150 … … 154 155 } 155 156 /* read secfilt table data */ 156 if (catalog[0].catflags & LOAD_SECF) {157 if (catalog[0].catflags & DVO_LOAD_SECFILT) { 157 158 if (!gfits_fread_ftable_data (catalog[0].f, &ftable, FALSE)) { 158 159 if (VERBOSE) fprintf (stderr, "can't read table secfilt data"); … … 162 163 /* how many entries do we expect from the secfilt table? */ 163 164 Nexpect = catalog[0].Nsecfilt * catalog[0].Naverage; 164 catalog[0].secfilt = FtableToSecFilt (&ftable, &Nitems, &catalog[0].catformat);165 catalog[0].secfilt = FtableToSecFilt (&ftable, catalog[0].average, &Nitems, &catalog[0].catformat, FALSE); 165 166 if (Nexpect != Nitems) { 166 167 fprintf (stderr, "Warning: mismatch between Nsecfilt items in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n", Nexpect, Nitems); … … 175 176 Ntmpfilt = catalog[0].Nsecfilt; 176 177 Nsecfilt = catalog[0].Nsecfilt + 1; 177 Ntotal = Nsecfilt * catalog[0].Nave s_disk;178 Ntotal = Nsecfilt * catalog[0].Naverage_disk; 178 179 ALLOCATE (catalog[0].secfilt, SecFilt, Ntotal); 179 for (i = 0; i < catalog[0].Nave s_disk; i++) {180 for (i = 0; i < catalog[0].Naverage_disk; i++) { 180 181 catalog[0].secfilt[i*Nsecfilt + 0] = primary[i]; 181 182 for (j = 0; j < Ntmpfilt; j++) { … … 184 185 } 185 186 catalog[0].Nsecfilt = Nsecfilt; 186 catalog[0].Nsecf _disk = Ntotal;187 catalog[0].Nsecfilt_disk = Ntotal; 187 188 free (tmpfilt); 188 189 free (primary); 189 190 } 190 catalog[0].Nsecf _mem = catalog[0].Nsecf_disk;191 catalog[0].Nsecf _off = 0;191 catalog[0].Nsecfilt_mem = catalog[0].Nsecfilt_disk; 192 catalog[0].Nsecfilt_off = 0; 192 193 } else { 193 194 /* no real need to skip the data array here... */ … … 197 198 free (primary); 198 199 catalog[0].Nsecfilt ++; 199 catalog[0].Nsecf _disk = catalog[0].Nsecfilt * catalog[0].Naves_disk;200 catalog[0].Nsecfilt_disk = catalog[0].Nsecfilt * catalog[0].Naverage_disk; 200 201 } 201 202 ALLOCATE (catalog[0].secfilt, SecFilt, 1); 202 catalog[0].Nsecf _mem = 0;203 catalog[0].Nsecf _off = catalog[0].Nsecf_disk;203 catalog[0].Nsecfilt_mem = 0; 204 catalog[0].Nsecfilt_off = catalog[0].Nsecfilt_disk; 204 205 } 205 206 … … 210 211 } 211 212 /* read Lensing table data */ 212 if (catalog[0].catflags & LOAD_LENSING) {213 if (catalog[0].catflags & DVO_LOAD_LENSING) { 213 214 if (!gfits_fread_ftable_data (catalog[0].f, &ftable, FALSE)) { 214 215 if (VERBOSE) fprintf (stderr, "can't read table lensing data"); 215 216 return (FALSE); 216 217 } 217 catalog[0].lensing = FtableToLensing (&ftable, &catalog[0].Nlensing, &catalog[0].catformat);218 catalog[0].lensing = FtableToLensing (&ftable, catalog[0].average, &catalog[0].Nlensing, &catalog[0].catformat, FALSE); 218 219 if (Nlensing != catalog[0].Nlensing_disk) { 219 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); … … 235 236 } 236 237 /* read Lensobj table data */ 237 if (catalog[0].catflags & LOAD_LENSOBJ) {238 if (catalog[0].catflags & DVO_LOAD_LENSOBJ) { 238 239 if (!gfits_fread_ftable_data (catalog[0].f, &ftable, FALSE)) { 239 240 if (VERBOSE) fprintf (stderr, "can't read table lensobj data"); 240 241 return (FALSE); 241 242 } 242 catalog[0].lensobj = FtableToLensobj (&ftable, &catalog[0].Nlensobj, &catalog[0].catformat);243 catalog[0].lensobj = FtableToLensobj (&ftable, catalog[0].average, &catalog[0].Nlensobj, &catalog[0].catformat, FALSE); 243 244 if (Nlensobj != catalog[0].Nlensobj_disk) { 244 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); … … 260 261 } 261 262 /* read StarPar table data */ 262 if (catalog[0].catflags & LOAD_STARPAR) {263 if (catalog[0].catflags & DVO_LOAD_STARPAR) { 263 264 if (!gfits_fread_ftable_data (catalog[0].f, &ftable, FALSE)) { 264 265 if (VERBOSE) fprintf (stderr, "can't read table starpar data"); 265 266 return (FALSE); 266 267 } 267 catalog[0].starpar = FtableToStarPar (&ftable, &catalog[0].Nstarpar, &catalog[0].catformat);268 catalog[0].starpar = FtableToStarPar (&ftable, catalog[0].average, &catalog[0].Nstarpar, &catalog[0].catformat, FALSE); 268 269 if (Nstarpar != catalog[0].Nstarpar_disk) { 269 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); … … 277 278 catalog[0].Nstarpar = 0; 278 279 catalog[0].Nstarpar_off = catalog[0].Nstarpar_disk; 280 } 281 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; 279 305 } 280 306 … … 330 356 gfits_modify (&catalog[0].header, "NLENSOBJ", OFF_T_FMT, 1, catalog[0].Nlensobj); 331 357 gfits_modify (&catalog[0].header, "NSTARPAR", OFF_T_FMT, 1, catalog[0].Nstarpar); 358 gfits_modify (&catalog[0].header, "NGALPHOT", OFF_T_FMT, 1, catalog[0].Ngalphot); 359 332 360 gfits_modify_alt (&catalog[0].header, "EXTEND", "%t", 1, TRUE); 333 361 gfits_modify (&catalog[0].header, "OBJID", "%d", 1, catalog[0].objID); … … 357 385 358 386 /* write out Average table (convert to FITS table format) */ 359 AverageToFtable (&ftable, catalog[0].average, catalog[0].Naverage, catalog[0].catformat, primary );387 AverageToFtable (&ftable, catalog[0].average, catalog[0].Naverage, catalog[0].catformat, primary, TRUE); 360 388 if (!gfits_fwrite_Theader (catalog[0].f, &header)) { 361 389 fprintf (stderr, "can't write table header"); … … 370 398 371 399 /* write out Measure table (convert to FITS table format) */ 372 MeasureToFtable (&ftable, catalog[0].average, catalog[0].measure, catalog[0].Nmeasure, catalog[0].catformat );400 MeasureToFtable (&ftable, catalog[0].average, catalog[0].measure, catalog[0].Nmeasure, catalog[0].catformat, TRUE); 373 401 if (!gfits_fwrite_Theader (catalog[0].f, &header)) { 374 402 fprintf (stderr, "can't write table header"); … … 383 411 384 412 /* write out Missing table (convert to FITS table format) */ 385 gfits_table_set_Missing (&ftable, catalog[0].missing, catalog[0].Nmissing );413 gfits_table_set_Missing (&ftable, catalog[0].missing, catalog[0].Nmissing, TRUE); 386 414 if (!gfits_fwrite_Theader (catalog[0].f, &header)) { 387 415 fprintf (stderr, "can't write table header"); … … 397 425 /* write out SecFilt table (convert to FITS table format) */ 398 426 Nitems = catalog[0].Naverage * Nsecfilt; 399 SecFiltToFtable (&ftable, secfilt, Nitems, catalog[0].catformat );427 SecFiltToFtable (&ftable, secfilt, Nitems, catalog[0].catformat, TRUE); 400 428 if (!gfits_fwrite_Theader (catalog[0].f, &header)) { 401 429 fprintf (stderr, "can't write table header"); … … 410 438 411 439 /* write out Lensing table (convert to FITS table format) */ 412 LensingToFtable (&ftable, catalog[0].lensing, catalog[0].Nlensing, catalog[0].catformat );440 LensingToFtable (&ftable, catalog[0].lensing, catalog[0].Nlensing, catalog[0].catformat, TRUE); 413 441 if (!gfits_fwrite_Theader (catalog[0].f, &header)) { 414 442 fprintf (stderr, "can't write table header"); … … 423 451 424 452 /* write out Lensobj table (convert to FITS table format) */ 425 LensobjToFtable (&ftable, catalog[0].lensobj, catalog[0].Nlensobj, catalog[0].catformat); 426 if (!gfits_fwrite_Theader (catalog[0].f, &header)) { 427 fprintf (stderr, "can't write table header"); 428 goto failure; 429 } 430 if (!gfits_fwrite_table (catalog[0].f, &ftable)) { 431 fprintf (stderr, "can't write table data"); 432 goto failure; 433 } 434 gfits_free_table (&ftable); 435 gfits_free_header (&header); 436 437 /* free temp storage */ 438 if (primary != NULL) { 439 free (primary); 440 free (secfilt); 441 } 442 return (TRUE); 453 LensobjToFtable (&ftable, catalog[0].lensobj, catalog[0].Nlensobj, catalog[0].catformat, TRUE); 454 if (!gfits_fwrite_Theader (catalog[0].f, &header)) { 455 fprintf (stderr, "can't write table header"); 456 goto failure; 457 } 458 if (!gfits_fwrite_table (catalog[0].f, &ftable)) { 459 fprintf (stderr, "can't write table data"); 460 goto failure; 461 } 462 gfits_free_table (&ftable); 463 gfits_free_header (&header); 443 464 444 465 /* write out StarPar table (convert to FITS table format) */ 445 StarParToFtable (&ftable, catalog[0].starpar, catalog[0].Nstarpar, catalog[0].catformat); 466 StarParToFtable (&ftable, catalog[0].starpar, catalog[0].Nstarpar, catalog[0].catformat, TRUE); 467 if (!gfits_fwrite_Theader (catalog[0].f, &header)) { 468 fprintf (stderr, "can't write table header"); 469 goto failure; 470 } 471 if (!gfits_fwrite_table (catalog[0].f, &ftable)) { 472 fprintf (stderr, "can't write table data"); 473 goto failure; 474 } 475 gfits_free_table (&ftable); 476 gfits_free_header (&header); 477 478 /* write out GalPhot table (convert to FITS table format) */ 479 GalPhotToFtable (&ftable, catalog[0].galphot, catalog[0].Ngalphot, catalog[0].catformat, TRUE); 446 480 if (!gfits_fwrite_Theader (catalog[0].f, &header)) { 447 481 fprintf (stderr, "can't write table header"); -
trunk/Ohana/src/libdvo/src/dvo_catalog_raw.c
r37807 r38441 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); -
trunk/Ohana/src/libdvo/src/dvo_catalog_split.c
r38153 r38441 1 1 # include <dvo.h> 2 # define OHANA_MEMCHECK 0 2 3 3 4 // return options: … … 6 7 // * ok 7 8 9 // utility function to see if we should compress this table) 10 int output_is_compressed (int start, int Nrows, int Ntotal, DVOCatCompress catcompress) { 11 int fullWrite = (start == 0) && (Nrows == Ntotal); 12 if (fullWrite && catcompress) return TRUE; // we want to compress, so do not swap 13 return FALSE; 14 } 15 16 int byteswap_varlength_ftable (Header *header, FTable *table) { 17 int i, Nfields; 18 if (!gfits_scan (header, "TFIELDS", "%d", 1, &Nfields)) return FALSE; 19 for (i = 0; i < Nfields; i++) { 20 if (!gfits_byteswap_varlength_column (table, i+1)) return FALSE; 21 } 22 return TRUE; 23 } 24 8 25 int dvo_catalog_secfilt_to_primary (Catalog *catalog, SecFilt **myPrimary, SecFilt **mySecfilt, int *myNsecfilt) { 9 26 … … 20 37 21 38 // XXX this translation only works if we have loaded / created a matched average/secfilt set 22 assert (catalog[0].Nsecf _mem == catalog[0].Nsecfilt*catalog[0].Naverage);39 assert (catalog[0].Nsecfilt_mem == catalog[0].Nsecfilt*catalog[0].Naverage); 23 40 24 41 Nallfilt = catalog[0].Nsecfilt; … … 35 52 } 36 53 catalog[0].Nsecfilt --; 37 catalog[0].Nsecf _mem = catalog[0].Naverage*catalog[0].Nsecfilt;54 catalog[0].Nsecfilt_mem = catalog[0].Naverage*catalog[0].Nsecfilt; 38 55 39 56 *myPrimary = primary; … … 51 68 Ntmpfilt = catalog[0].Nsecfilt; 52 69 53 // we do NOT modify Nsecf _disk; this operation only modifies in in-memory values70 // we do NOT modify Nsecfilt_disk; this operation only modifies in in-memory values 54 71 55 72 catalog[0].Nsecfilt ++; … … 57 74 Ntotal = Nsecfilt * Naves; 58 75 59 catalog[0].Nsecf _mem = Ntotal;76 catalog[0].Nsecfilt_mem = Ntotal; 60 77 61 78 ALLOCATE (catalog[0].secfilt, SecFilt, Ntotal); … … 74 91 75 92 Matrix matrix; 76 77 // ohana_memcheck_func (TRUE);78 93 79 80 if (0) { 81 // XXX a TEST : is the data corrupted or the file? 82 char name[1024]; 83 snprintf (name, 1024, "%s.phu.v2", catalog->filename); 84 FILE *f = fopen (name, "w"); 85 fwrite (catalog->header.buffer, sizeof(char), catalog->header.datasize, f); 86 // fprintf (stderr, "save %d bytes in %s (%zx)\n", (int) catalog->header.datasize, name, (size_t) catalog->header.buffer); 87 // fprintf (stderr, "first bytes are %c%c%c%c%c%c%c%c\n", 88 // catalog->header.buffer[0], catalog->header.buffer[1], catalog->header.buffer[2], catalog->header.buffer[3], 89 // catalog->header.buffer[4], catalog->header.buffer[5], catalog->header.buffer[6], catalog->header.buffer[7]); 90 fclose (f); 91 } 92 if (0) { 93 // XXX a TEST : is the data corrupted or the file? 94 char name[1024]; 95 snprintf (name, 1024, "%s.phu", catalog->filename); 96 FILE *f = fopen (name, "w"); 97 fwrite (catalog->header.buffer, sizeof(char), catalog->header.datasize, f); 98 // fprintf (stderr, "save %d bytes in %s (%zx)\n", (int) catalog->header.datasize, name, (size_t) catalog->header.buffer); 99 // fprintf (stderr, "first bytes are %c%c%c%c%c%c%c%c\n", 100 // catalog->header.buffer[0], catalog->header.buffer[1], catalog->header.buffer[2], catalog->header.buffer[3], 101 // catalog->header.buffer[4], catalog->header.buffer[5], catalog->header.buffer[6], catalog->header.buffer[7]); 102 fclose (f); 103 } 104 # if (0) 105 { 106 // XXX a TEST : is the data corrupted or the file? 107 char name[1024]; 108 snprintf (name, 1024, "%s.phu.v2", catalog->filename); 109 FILE *f = fopen (name, "w"); 110 fwrite (catalog->header.buffer, sizeof(char), catalog->header.datasize, f); 111 fprintf (stderr, "save %d bytes in %s (%zx)\n", (int) catalog->header.datasize, name, (size_t) catalog->header.buffer); 112 fprintf (stderr, "first bytes are %c%c%c%c%c%c%c%c\n", 113 catalog->header.buffer[0], catalog->header.buffer[1], catalog->header.buffer[2], catalog->header.buffer[3], 114 catalog->header.buffer[4], catalog->header.buffer[5], catalog->header.buffer[6], catalog->header.buffer[7]); 115 fclose (f); 116 } 117 { 118 // XXX a TEST : is the data corrupted or the file? 119 char name[1024]; 120 snprintf (name, 1024, "%s.phu.v3", catalog->filename); 121 FILE *f = fopen (name, "w"); 122 fwrite (catalog->header.buffer, sizeof(char), catalog->header.datasize, f); 123 fprintf (stderr, "save %d bytes in %s (%zx)\n", (int) catalog->header.datasize, name, (size_t) catalog->header.buffer); 124 fprintf (stderr, "first bytes are %c%c%c%c%c%c%c%c\n", 125 catalog->header.buffer[0], catalog->header.buffer[1], catalog->header.buffer[2], catalog->header.buffer[3], 126 catalog->header.buffer[4], catalog->header.buffer[5], catalog->header.buffer[6], catalog->header.buffer[7]); 127 fclose (f); 128 } 129 # endif 94 if (OHANA_MEMCHECK) ohana_memcheck_func (TRUE); 95 130 96 /* rewind file pointers and truncate (file is still open) */ 131 97 if (fseeko (catalog->f, 0LL, SEEK_SET)) { 132 98 perror ("dvo_catalog_save_subset: "); 133 99 fprintf (stderr, "failed to seek to beginning\n"); 100 return FALSE; 134 101 } 135 102 … … 151 118 gfits_free_matrix (&matrix); 152 119 120 FTable *outtable = ftable; 121 FTable cmptable; 122 Header cmpheader; 123 gfits_init_header (&cmpheader); 124 gfits_init_table (&cmptable); 125 cmptable.header = &cmpheader; 126 127 int fullWrite = (start == 0) && (Nrows == Ntotal); 128 int isCompressed = output_is_compressed (start, Nrows, Ntotal, catalog->catcompress); 129 130 if (OHANA_MEMCHECK) ohana_memcheck_func (TRUE); 131 132 if (isCompressed) { 133 // fprintf (stderr, "compress %s\n", catalog->filename); 134 char *compressMode = dvo_catalog_compress_string (catalog->catcompress); 135 // I should test how Ntile affects fpack/funpack and speed 136 if (!gfits_compress_table (ftable, &cmptable, 1000, compressMode)) { 137 fprintf (stderr, "compression failure\n"); 138 return (FALSE); 139 } 140 if (!byteswap_varlength_ftable (&cmpheader, &cmptable)) { 141 fprintf (stderr, "failed to swap varlength column\n"); 142 return FALSE; 143 } 144 if (!gfits_modify (cmptable.header, "DVO_CMP", "%s", 1, compressMode)) { 145 fprintf (stderr, "can't save compression mode\n"); 146 return (FALSE); 147 } 148 outtable = &cmptable; 149 } 150 151 if (OHANA_MEMCHECK) ohana_memcheck_func (TRUE); 152 153 153 // write the table data 154 if (!gfits_fwrite_ftable_range (catalog->f, ftable, start, Nrows, Ndisk, Ntotal)) { 155 fprintf (stderr, "can't write table data\n"); 156 return (FALSE); 157 } 158 fullsize += ftable->datasize + ftable->header->datasize; 154 if (fullWrite) { 155 if (!gfits_fwrite_Theader (catalog->f, outtable->header)) { 156 fprintf (stderr, "can't write table header\n"); 157 return (FALSE); 158 } 159 if (!gfits_fwrite_table (catalog->f, outtable)) { 160 fprintf (stderr, "can't write table data\n"); 161 return (FALSE); 162 } 163 } else { 164 if (!gfits_fwrite_ftable_range (catalog->f, outtable, start, Nrows, Ndisk, Ntotal)) { 165 fprintf (stderr, "can't write table data (range)\n"); 166 return (FALSE); 167 } 168 } 169 fullsize += outtable->datasize + outtable->header->datasize; 170 171 if (OHANA_MEMCHECK) ohana_memcheck_func (TRUE); 172 173 // since we init'ed the structures above, these operations are safe whether or not we compressed the table 174 gfits_free_header (&cmpheader); 175 gfits_free_table (&cmptable); 159 176 160 177 // if the output file will be completely re-written, truncate to total datasize 161 if ( (start == 0) && (Nrows == Ntotal)) {178 if (fullWrite) { 162 179 int fd = fileno (catalog->f); 163 180 if (ftruncate (fd, fullsize)) { … … 192 209 // databases created prior to ~2014.07.01 did not have the LENSING, LENSOBJ, STARPAR paths in their headers. 193 210 // in these cases, we do not try to lock or open the relevant file 194 if (!strcmp (name, "LENSING")) return (DVO_CAT_OPEN_EMPTY); 195 if (!strcmp (name, "LENSOBJ")) return (DVO_CAT_OPEN_EMPTY); 196 if (!strcmp (name, "STARPAR")) return (DVO_CAT_OPEN_EMPTY); 211 if (!strcmp (name, "LENSING")) return (DVO_CAT_OPEN_EMPTY); 212 if (!strcmp (name, "LENSOBJ")) return (DVO_CAT_OPEN_EMPTY); 213 if (!strcmp (name, "STARPAR")) return (DVO_CAT_OPEN_EMPTY); 214 if (!strcmp (name, "GALPHOT")) return (DVO_CAT_OPEN_EMPTY); 197 215 return (DVO_CAT_OPEN_FAIL); 198 216 } … … 200 218 sprintf (subcat[0].filename, "%s/%s", path, string); 201 219 free (path); 220 221 // inherit compression mode for this subcat; 222 subcat->catcompress = catalog->catcompress; 202 223 203 224 /* lock & open catalog file */ … … 220 241 } 221 242 Nskip = gfits_data_size (&subcat[0].header); 222 fseeko (subcat[0].f, Nskip, SEEK_CUR);243 if (fseeko (subcat[0].f, Nskip, SEEK_CUR)) { perror ("fseeko: "); exit (1); } 223 244 224 245 /* read table header */ … … 230 251 return (DVO_CAT_OPEN_OK); 231 252 } 253 254 // ftable must already exist and have a valid, loaded header 255 int gfits_fread_uncompressed (Catalog *catalog, FTable *ftable, char *nativeOrder, char VERBOSE) { 256 257 // fread_ftable_data requires the header 258 259 *nativeOrder = FALSE; 260 if (!gfits_fread_ftable_data (catalog->f, ftable, FALSE)) { 261 if (VERBOSE) fprintf (stderr, "can't read table data\n"); 262 return FALSE; 263 } 264 // NOTE: fread_ftable returns an unswapped table; uncompress swaps the bytes into native order 265 266 if (gfits_extension_is_compressed_table (ftable->header)) { 267 FTable rawtable; 268 Header rawheader; 269 gfits_init_table (&rawtable); 270 gfits_init_header (&rawheader); 271 rawtable.header = &rawheader; 272 273 // NOTE: uncompress swaps the data bytes into native order, but needs the varlength columns native 274 if (!byteswap_varlength_ftable (ftable->header, ftable)) { 275 fprintf (stderr, "failed to swap varlength column\n"); 276 return FALSE; 277 } 278 if (!gfits_uncompress_table (ftable, &rawtable)) { 279 if (VERBOSE) fprintf (stderr, "failed to uncompress table\n"); 280 gfits_free_table (ftable); 281 return FALSE; 282 } 283 284 char compressMode[80]; 285 if (!gfits_scan (ftable->header, "DVO_CMP", "%s", 1, compressMode)) { 286 strcpy (compressMode, "AUTO"); 287 } 288 catalog->catcompress = dvo_catalog_catcompress (compressMode); // if any table is compressed, set all to a compress state? 289 290 // free the buffers 291 gfits_free_header (ftable->header); 292 gfits_free_table (ftable); 293 294 // copies values but does not allocate new memory 295 Header *outheader = ftable->header; 296 gfits_copy_header_ptr (&rawheader, outheader); 297 gfits_copy_ftable_ptr (&rawtable, ftable); // this replaces ftable->header 298 ftable->header = outheader; 299 *nativeOrder = TRUE; 300 } 301 return TRUE; 302 } 303 304 // LOAD_SUBCAT(measure,MEASURE,Measure) 305 306 # define LOAD_SUBCAT(FIELD, NAME, STRUCT) \ 307 { \ 308 Header header; \ 309 FTable ftable; \ 310 off_t Nitems; \ 311 gfits_init_table (&ftable); \ 312 gfits_init_header (&header); \ 313 ftable.header = &header; \ 314 int status = DVO_CAT_OPEN_EMPTY; \ 315 if (!(catalog[0].catflags & DVO_SKIP_##NAME)) { \ 316 status = dvo_catalog_open_subcat (catalog, &catalog[0].FIELD##_catalog, ftable.header, #NAME, VERBOSE); \ 317 if (status == DVO_CAT_OPEN_FAIL) { \ 318 return (FALSE); \ 319 } \ 320 if ((status == DVO_CAT_OPEN_EMPTY) && (catalog[0].N##FIELD##_disk > 0)) { \ 321 return (FALSE); \ 322 } \ 323 } \ 324 if ((status != DVO_CAT_OPEN_EMPTY) && (catalog[0].catflags & DVO_LOAD_##NAME)) { \ 325 char nativeOrder = FALSE; \ 326 /* read table data */ \ 327 if (!gfits_fread_uncompressed (catalog[0].FIELD##_catalog, &ftable, &nativeOrder, VERBOSE)) { \ 328 if (VERBOSE) fprintf (stderr, "can't read table %s data\n", #FIELD); \ 329 gfits_free_header (&header); \ 330 return (FALSE); \ 331 } \ 332 /* convert data format to internal : returns number of row read in Nvalues */ \ 333 catalog[0].FIELD = FtableTo##STRUCT (&ftable, catalog[0].average, &Nitems, &catalog[0].catformat, nativeOrder); \ 334 if (Nitems != catalog[0].N##FIELD##_disk) { \ 335 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); \ 336 } \ 337 catalog[0].N##FIELD = catalog[0].N##FIELD##_disk; \ 338 catalog[0].N##FIELD##_off = 0; \ 339 } else { \ 340 if (catalog[0].FIELD##_catalog) { \ 341 gfits_free_header (&catalog[0].FIELD##_catalog[0].header); \ 342 } else { \ 343 ALLOCATE (catalog[0].FIELD##_catalog, Catalog, 1); \ 344 dvo_catalog_init (catalog[0].FIELD##_catalog, TRUE); \ 345 } \ 346 gfits_create_header (&catalog[0].FIELD##_catalog[0].header); \ 347 ALLOCATE (catalog[0].FIELD, STRUCT, 1); \ 348 catalog[0].N##FIELD = 0; \ 349 catalog[0].N##FIELD##_off = catalog[0].N##FIELD##_disk; \ 350 } \ 351 gfits_free_header (&header); \ 352 } 232 353 233 354 int dvo_catalog_load_split (Catalog *catalog, int VERBOSE) { … … 240 361 off_t Nlensobj; 241 362 off_t Nstarpar; 242 off_t Nitems; 243 int status, Nsecfilt; 244 Header header; 245 FTable ftable; 363 off_t Ngalphot; 364 int Nsecfilt; 246 365 SecFilt *primary; 247 366 248 /* ftable header storage for below */249 ftable.header = &header;250 ftable.buffer = NULL;251 header.buffer = NULL;252 367 primary = NULL; 253 status = FALSE;254 368 255 369 /* get the components from the header - these duplicate information in the split files (NAXIS2) */ 256 // NSTARS, NMEAS, NMISS are required; NLENSING, NLENSOBJ, NSTARPAR are not (0 if not found) 257 if (!gfits_scan (&catalog[0].header, "NSTARS", OFF_T_FMT, 1, &Naverage)) return (FALSE); 258 if (!gfits_scan (&catalog[0].header, "NMEAS", OFF_T_FMT, 1, &Nmeasure)) return (FALSE); 259 if (!gfits_scan (&catalog[0].header, "NMISS", OFF_T_FMT, 1, &Nmissing)) return (FALSE); 260 if (!gfits_scan (&catalog[0].header, "NSECFILT", "%d", 1, &Nsecfilt)) Nsecfilt = 0; 261 if (!gfits_scan (&catalog[0].header, "NLENSING", OFF_T_FMT, 1, &Nlensing)) Nlensing = 0; 262 if (!gfits_scan (&catalog[0].header, "NLENSOBJ", OFF_T_FMT, 1, &Nlensobj)) Nlensobj = 0; 263 if (!gfits_scan (&catalog[0].header, "NSTARPAR", OFF_T_FMT, 1, &Nstarpar)) Nstarpar = 0; 370 // NSTARS, NMEAS, NMISS are required; NLENSING, NLENSOBJ, NSTARPAR, NGALPHOT are not (0 if not found) 371 if (!gfits_scan (&catalog[0].header, "NSTARS", OFF_T_FMT, 1, &Naverage)) return (FALSE); 372 if (!gfits_scan (&catalog[0].header, "NMEAS", OFF_T_FMT, 1, &Nmeasure)) return (FALSE); 373 if (!gfits_scan (&catalog[0].header, "NMISS", OFF_T_FMT, 1, &Nmissing)) return (FALSE); 374 if (!gfits_scan (&catalog[0].header, "NSECFILT", "%d", 1, &Nsecfilt)) Nsecfilt = 0; 375 if (!gfits_scan (&catalog[0].header, "NLENSING", OFF_T_FMT, 1, &Nlensing)) Nlensing = 0; 376 if (!gfits_scan (&catalog[0].header, "NLENSOBJ", OFF_T_FMT, 1, &Nlensobj)) Nlensobj = 0; 377 if (!gfits_scan (&catalog[0].header, "NSTARPAR", OFF_T_FMT, 1, &Nstarpar)) Nstarpar = 0; 378 if (!gfits_scan (&catalog[0].header, "NGALPHOT", OFF_T_FMT, 1, &Ngalphot)) Ngalphot = 0; 264 379 265 380 /* the OBJID is a counter that uniquely defines an average entry and never changes. if … … 276 391 277 392 /* save the current number so we can do partial updates */ 278 catalog[0].Naves_disk = Naverage; 279 catalog[0].Nmeas_disk = Nmeasure; 280 catalog[0].Nmiss_disk = Nmissing; 281 catalog[0].Nsecf_disk = Naverage * Nsecfilt; 282 catalog[0].Nlensing_disk = Nlensing; 283 catalog[0].Nlensobj_disk = Nlensobj; 284 catalog[0].Nstarpar_disk = Nstarpar; 285 286 /** Nsecfilt is unusual: it does not list the number of data items in the table 287 instead, the number of items is Nsecfilt * Naverage. **/ 288 catalog[0].Nsecfilt = Nsecfilt; 393 catalog[0].Naverage_disk = Naverage; 394 catalog[0].Nmeasure_disk = Nmeasure; 395 catalog[0].Nmissing_disk = Nmissing; 396 catalog[0].Nsecfilt_disk = Naverage * Nsecfilt; 397 catalog[0].Nlensing_disk = Nlensing; 398 catalog[0].Nlensobj_disk = Nlensobj; 399 catalog[0].Nstarpar_disk = Nstarpar; 400 catalog[0].Ngalphot_disk = Ngalphot; 289 401 290 402 /* default values, but we will assign these a valid value before we exit (even if empty) */ 291 catalog[0].average = NULL; 292 catalog[0].measure = NULL; 293 catalog[0].missing = NULL; 294 catalog[0].secfilt = NULL; 295 catalog[0].lensing = NULL; 296 catalog[0].lensobj = NULL; 297 catalog[0].starpar = NULL; 403 catalog[0].average = NULL; 404 catalog[0].measure = NULL; 405 catalog[0].missing = NULL; 406 catalog[0].secfilt = NULL; 407 catalog[0].lensing = NULL; 408 catalog[0].lensobj = NULL; 409 catalog[0].starpar = NULL; 410 catalog[0].galphot = NULL; 298 411 299 412 /*** Average Table ***/ … … 302 415 /* move pointer past PHU header -- must be already read (load_catalog) */ 303 416 Nbytes = catalog[0].header.datasize + gfits_data_size (&catalog[0].header); 304 fseeko (catalog[0].f, Nbytes, SEEK_SET); 417 if (fseeko (catalog[0].f, Nbytes, SEEK_SET)) { perror ("fseeko: "); exit (1); } 418 419 /* ftable header storage for below */ 420 char nativeOrder; 421 Header header; 422 FTable ftable; 423 gfits_init_table (&ftable); 424 gfits_init_header (&header); 425 ftable.header = &header; 305 426 306 427 /* read Average table header */ 307 428 if (!gfits_fread_header (catalog[0].f, &header)) { 308 if (VERBOSE) fprintf (stderr, "can't read table average header ");429 if (VERBOSE) fprintf (stderr, "can't read table average header\n"); 309 430 return (FALSE); 310 431 } 311 if (catalog[0].catflags & LOAD_AVES) { 312 /* read Average table data : format is irrelevant here */ 313 if (!gfits_fread_ftable_data (catalog[0].f, &ftable, FALSE)) { 314 if (VERBOSE) fprintf (stderr, "can't read table average data"); 315 return (FALSE); 316 } 317 /* convert the saved version of the table to the internal version. Old versions of DVO stored 432 if (catalog[0].catflags & DVO_LOAD_AVERAGE) { 433 if (!gfits_fread_uncompressed (catalog, &ftable, &nativeOrder, VERBOSE)) { 434 if (VERBOSE) fprintf (stderr, "can't read Average table\n"); 435 gfits_free_header (&header); 436 return FALSE; 437 } 438 439 /* convert the disk version of the table to the internal version. Old versions of DVO stored 318 440 * one of the average magnitudes in Average. We save this in case it is needed below. NOTE: 319 441 * primary is only used if we read in the secfilt table, otherwise it should be freed */ 320 catalog[0].average = FtableToAverage (&ftable, &Naverage, &catalog[0].catformat, &primary); 321 if (Naverage != catalog[0].Naves_disk) { 322 fprintf (stderr, "Warning: mismatch between Naverage in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n", Naverage, catalog[0].Naves_disk); 323 } 324 gfits_free_header (&header); 325 catalog[0].Naverage = catalog[0].Naves_disk; 326 catalog[0].Naves_off = 0; 442 catalog[0].average = FtableToAverage (&ftable, &Naverage, &catalog[0].catformat, &primary, nativeOrder); 443 if (Naverage != catalog[0].Naverage_disk) { 444 fprintf (stderr, "Warning: mismatch between Naverage in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n", Naverage, catalog[0].Naverage_disk); 445 } 446 catalog[0].Naverage = catalog[0].Naverage_disk; 447 catalog[0].Naverage_off = 0; 327 448 } else { 328 449 catalog[0].catformat = FtableGetFormat (&ftable); 329 450 ALLOCATE (catalog[0].average, Average, 1); 330 451 catalog[0].Naverage = 0; 331 catalog[0].Naves_off = catalog[0].Naves_disk; 332 } 452 catalog[0].Naverage_off = catalog[0].Naverage_disk; 453 } 454 gfits_free_header (&header); 333 455 334 456 /*** Measure Table ***/ 335 if (!(catalog[0].catflags & SKIP_MEAS)) { 336 // unless we specify 'skip', we still need to load the 337 status = dvo_catalog_open_subcat (catalog, &catalog[0].measure_catalog, ftable.header, "MEASURE", VERBOSE); 338 if (status == DVO_CAT_OPEN_FAIL) { 339 return (FALSE); 340 } 341 if ((status == DVO_CAT_OPEN_EMPTY) && (catalog[0].Nmeas_disk > 0)) { 342 return (FALSE); 343 } 344 } 345 if ((status != DVO_CAT_OPEN_EMPTY) && (catalog[0].catflags & LOAD_MEAS)) { 346 // XXX this allows an empty Measure catalog with non-empty Average catalog : is that OK? 347 /* read Measure table data */ 348 if (!gfits_fread_ftable_data (catalog[0].measure_catalog[0].f, &ftable, FALSE)) { 349 if (VERBOSE) fprintf (stderr, "can't read table measure data\n"); 350 return (FALSE); 351 } 352 /* convert data format to internal : returns number of row read in Nmeasure */ 353 catalog[0].measure = FtableToMeasure (&ftable, catalog[0].average, &Nmeasure, &catalog[0].catformat); 354 if (Nmeasure != catalog[0].Nmeas_disk) { 355 fprintf (stderr, "Warning: mismatch between Nmeasure in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n", Nmeasure, catalog[0].Nmeas_disk); 356 } 357 catalog[0].Nmeasure = catalog[0].Nmeas_disk; 358 catalog[0].Nmeas_off = 0; 359 } else { 360 // XXX is it necessary to generate a template header here? 361 // XXX this is a memory leak, right? 362 if (catalog[0].measure_catalog) { 363 gfits_free_header (&catalog[0].measure_catalog[0].header); 457 458 LOAD_SUBCAT(measure,MEASURE,Measure); 459 LOAD_SUBCAT(missing,MISSING,Missing); 460 LOAD_SUBCAT(secfilt,SECFILT,SecFilt); 461 LOAD_SUBCAT(lensing,LENSING,Lensing); 462 LOAD_SUBCAT(lensobj,LENSOBJ,Lensobj); 463 LOAD_SUBCAT(starpar,STARPAR,StarPar); 464 LOAD_SUBCAT(galphot,GALPHOT,GalPhot); 465 466 /** catalog->Nsecfilt is unusual: it does not list the number of data items in the 467 table instead, the number of items is Nsecfilt * Naverage, and is stored in 468 Nsecfilt_mem. fix these below **/ 469 470 catalog[0].Nsecfilt_mem = catalog[0].Nsecfilt; 471 catalog[0].Nsecfilt = Nsecfilt; 472 473 /** some old formats stored one of the secfilt values in the average table. 474 repair this below **/ 475 476 if (primary) { 477 if (catalog[0].Nsecfilt_mem) { 478 dvo_catalog_primary_to_secfilt (catalog, primary, catalog[0].Naverage_disk); 364 479 } else { 365 ALLOCATE (catalog[0].measure_catalog, Catalog, 1);366 dvo_catalog_init (catalog[0].measure_catalog, TRUE);367 }368 gfits_create_header (&catalog[0].measure_catalog[0].header);369 ALLOCATE (catalog[0].measure, Measure, 1);370 catalog[0].Nmeasure = 0;371 catalog[0].Nmeas_off = catalog[0].Nmeas_disk;372 }373 gfits_free_header (&header);374 375 /*** Missing Table ***/376 status = dvo_catalog_open_subcat (catalog, &catalog[0].missing_catalog, ftable.header, "MISSING", VERBOSE);377 if (status == DVO_CAT_OPEN_FAIL) {378 return (FALSE);379 }380 if ((status == DVO_CAT_OPEN_EMPTY) && (catalog[0].Nmiss_disk > 0)) {381 return (FALSE);382 }383 if ((status != DVO_CAT_OPEN_EMPTY) && (catalog[0].catflags & LOAD_MISS)) {384 /* read Missing table data */385 if (!gfits_fread_ftable_data (catalog[0].missing_catalog[0].f, &ftable, FALSE)) {386 if (VERBOSE) fprintf (stderr, "can't read table missing data\n");387 return (FALSE);388 }389 /* no conversions currently defined : this just does the byte swap */390 catalog[0].missing = gfits_table_get_Missing (&ftable, &Nmissing, NULL);391 if (!catalog[0].missing) {392 fprintf (stderr, "ERROR: failed to read missing\n");393 exit (2);394 }395 if (Nmissing != catalog[0].Nmiss_disk) {396 fprintf (stderr, "Warning: mismatch between Nmissing in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n", Nmissing, catalog[0].Nmiss_disk);397 }398 catalog[0].Nmissing = catalog[0].Nmiss_disk;399 catalog[0].Nmiss_off = 0;400 } else {401 // XXX is it necessary to generate a template header here?402 gfits_create_header (&catalog[0].missing_catalog[0].header);403 ALLOCATE (catalog[0].missing, Missing, 1);404 catalog[0].Nmissing = 0;405 catalog[0].Nmiss_off = catalog[0].Nmiss_disk;406 }407 gfits_free_header (ftable.header);408 409 /*** Secfilt Table ***/410 status = dvo_catalog_open_subcat (catalog, &catalog[0].secfilt_catalog, ftable.header, "SECFILT", VERBOSE);411 // fprintf (stderr, "secfilt header %s : %zx\n", catalog[0].secfilt_catalog[0].filename, (size_t) catalog[0].secfilt_catalog[0].header.buffer);412 if (status == DVO_CAT_OPEN_FAIL) {413 return (FALSE);414 }415 if ((status == DVO_CAT_OPEN_EMPTY) && (catalog[0].Nsecf_disk > 0)) {416 return (FALSE);417 }418 if ((status != DVO_CAT_OPEN_EMPTY) && (catalog[0].catflags & LOAD_SECF)) {419 /* read secfilt table data */420 if (!gfits_fread_ftable_data (catalog[0].secfilt_catalog[0].f, &ftable, FALSE)) {421 if (VERBOSE) fprintf (stderr, "can't read table secfilt data\n");422 return (FALSE);423 }424 catalog[0].secfilt = FtableToSecFilt (&ftable, &Nitems, &catalog[0].catformat);425 if (Nitems != catalog[0].Nsecf_disk) {426 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);427 }428 catalog[0].Nsecf_mem = catalog[0].Nsecf_disk;429 catalog[0].Nsecf_off = 0;430 431 /* if primary is defined, we were supplied with one additional average magnitude from Average432 we need to interleave these magnitudes with the secfilt entries just loaded */433 if (primary != NULL) {434 // this modifies catalog.Nsecf_mem,Nsecfilt435 dvo_catalog_primary_to_secfilt (catalog, primary, catalog[0].Naves_disk);436 }437 } else {438 if (primary != NULL) {439 480 free (primary); 440 481 catalog[0].Nsecfilt ++; 441 482 } 442 gfits_create_header (&catalog[0].secfilt_catalog[0].header); 443 ALLOCATE (catalog[0].secfilt, SecFilt, 1); 444 catalog[0].Nsecf_mem = 0; 445 catalog[0].Nsecf_off = catalog[0].Nsecf_disk; 446 } 447 gfits_free_header (ftable.header); 448 449 /*** Lensing Table ***/ 450 if (!(catalog[0].catflags & SKIP_LENSING)) { 451 // unless we specify 'skip', we still need to load the Lensing table 452 status = dvo_catalog_open_subcat (catalog, &catalog[0].lensing_catalog, ftable.header, "LENSING", VERBOSE); 453 if (status == DVO_CAT_OPEN_FAIL) { 454 return (FALSE); 455 } 456 // the Lensing file need not exist, unless we expect data to exist 457 if ((status == DVO_CAT_OPEN_EMPTY) && (catalog[0].Nlensing_disk > 0)) { 458 return (FALSE); 459 } 460 } 461 if ((status != DVO_CAT_OPEN_EMPTY) && (catalog[0].catflags & LOAD_LENSING)) { 462 // only read the Lensing table if the file actually exists 463 /* read Lensing table data */ 464 if (!gfits_fread_ftable_data (catalog[0].lensing_catalog[0].f, &ftable, FALSE)) { 465 if (VERBOSE) fprintf (stderr, "can't read table lensing data\n"); 466 return (FALSE); 467 } 468 /* convert data format to internal : returns number of row read in Nlensing */ 469 catalog[0].lensing = FtableToLensing (&ftable, &Nlensing, &catalog[0].catformat); 470 if (Nlensing != catalog[0].Nlensing_disk) { 471 fprintf (stderr, "Warning: mismatch between Nlensing in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n", Nlensing, catalog[0].Nlensing_disk); 472 } 473 catalog[0].Nlensing = catalog[0].Nlensing_disk; 474 catalog[0].Nlensing_off = 0; 475 } else { 476 if (catalog[0].lensing_catalog) { 477 gfits_free_header (&catalog[0].lensing_catalog[0].header); 478 } else { 479 ALLOCATE (catalog[0].lensing_catalog, Catalog, 1); 480 dvo_catalog_init (catalog[0].lensing_catalog, TRUE); 481 } 482 gfits_create_header (&catalog[0].lensing_catalog[0].header); 483 ALLOCATE (catalog[0].lensing, Lensing, 1); 484 catalog[0].Nlensing = 0; 485 catalog[0].Nlensing_off = catalog[0].Nlensing_disk; 486 } 487 gfits_free_header (&header); 488 489 /*** Lensobj Table ***/ 490 if (!(catalog[0].catflags & SKIP_LENSOBJ)) { 491 // unless we specify 'skip', we still need to load the 492 status = dvo_catalog_open_subcat (catalog, &catalog[0].lensobj_catalog, ftable.header, "LENSOBJ", VERBOSE); 493 if (status == DVO_CAT_OPEN_FAIL) { 494 return (FALSE); 495 } 496 // the Lensobj file need not exist, unless we expect data to exist 497 if ((status == DVO_CAT_OPEN_EMPTY) && (catalog[0].Nlensobj_disk > 0)) { 498 return (FALSE); 499 } 500 } 501 if ((status != DVO_CAT_OPEN_EMPTY) && (catalog[0].catflags & LOAD_LENSOBJ)) { 502 // only read the Lensobj table if the file actually exists 503 /* read Lensobj table data */ 504 if (!gfits_fread_ftable_data (catalog[0].lensobj_catalog[0].f, &ftable, FALSE)) { 505 if (VERBOSE) fprintf (stderr, "can't read table lensobj data\n"); 506 return (FALSE); 507 } 508 /* convert data format to internal : returns number of row read in Nlensobj */ 509 catalog[0].lensobj = FtableToLensobj (&ftable, &Nlensobj, &catalog[0].catformat); 510 if (Nlensobj != catalog[0].Nlensobj_disk) { 511 fprintf (stderr, "Warning: mismatch between Nlensobj in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n", Nlensobj, catalog[0].Nlensobj_disk); 512 } 513 catalog[0].Nlensobj = catalog[0].Nlensobj_disk; 514 catalog[0].Nlensobj_off = 0; 515 } else { 516 if (catalog[0].lensobj_catalog) { 517 gfits_free_header (&catalog[0].lensobj_catalog[0].header); 518 } else { 519 ALLOCATE (catalog[0].lensobj_catalog, Catalog, 1); 520 dvo_catalog_init (catalog[0].lensobj_catalog, TRUE); 521 } 522 gfits_create_header (&catalog[0].lensobj_catalog[0].header); 523 ALLOCATE (catalog[0].lensobj, Lensobj, 1); 524 catalog[0].Nlensobj = 0; 525 catalog[0].Nlensobj_off = catalog[0].Nlensobj_disk; 526 } 527 gfits_free_header (&header); 528 529 /*** StarPar Table ***/ 530 if (!(catalog[0].catflags & SKIP_STARPAR)) { 531 // unless we specify 'skip', we still need to load the 532 status = dvo_catalog_open_subcat (catalog, &catalog[0].starpar_catalog, ftable.header, "STARPAR", VERBOSE); 533 if (status == DVO_CAT_OPEN_FAIL) { 534 return (FALSE); 535 } 536 // the StarPar file need not exist, unless we expect data to exist 537 if ((status == DVO_CAT_OPEN_EMPTY) && (catalog[0].Nstarpar_disk > 0)) { 538 return (FALSE); 539 } 540 } 541 if ((status != DVO_CAT_OPEN_EMPTY) && (catalog[0].catflags & LOAD_STARPAR)) { 542 // only read the StarPar table if the file actually exists 543 /* read StarPar table data */ 544 if (!gfits_fread_ftable_data (catalog[0].starpar_catalog[0].f, &ftable, FALSE)) { 545 if (VERBOSE) fprintf (stderr, "can't read table starpar data\n"); 546 return (FALSE); 547 } 548 /* convert data format to internal : returns number of row read in Nstarpar */ 549 catalog[0].starpar = FtableToStarPar (&ftable, &Nstarpar, &catalog[0].catformat); 550 if (Nstarpar != catalog[0].Nstarpar_disk) { 551 fprintf (stderr, "Warning: mismatch between Nstarpar in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n", Nstarpar, catalog[0].Nstarpar_disk); 552 } 553 catalog[0].Nstarpar = catalog[0].Nstarpar_disk; 554 catalog[0].Nstarpar_off = 0; 555 } else { 556 if (catalog[0].starpar_catalog) { 557 gfits_free_header (&catalog[0].starpar_catalog[0].header); 558 } else { 559 ALLOCATE (catalog[0].starpar_catalog, Catalog, 1); 560 dvo_catalog_init (catalog[0].starpar_catalog, TRUE); 561 } 562 gfits_create_header (&catalog[0].starpar_catalog[0].header); 563 ALLOCATE (catalog[0].starpar, StarPar, 1); 564 catalog[0].Nstarpar = 0; 565 catalog[0].Nstarpar_off = catalog[0].Nstarpar_disk; 566 } 567 gfits_free_header (&header); 483 } 568 484 569 485 return (TRUE); … … 575 491 576 492 off_t Nbytes; 577 off_t Naverage, Nexpect, Nitems, Nmeasure, Nmissing, Nlensing, Nlensobj, Nstarpar ;493 off_t Naverage, Nexpect, Nitems, Nmeasure, Nmissing, Nlensing, Nlensobj, Nstarpar, Ngalphot; 578 494 Header header; 579 495 FTable ftable; … … 587 503 588 504 /*** Average (& SecFilt) Table ***/ 589 if (catalog[0].catflags & LOAD_AVES) {505 if (catalog[0].catflags & DVO_LOAD_AVERAGE) { 590 506 591 507 /*** load the Average data ***/ 592 508 /* move pointer past header and matrix -- must be already read (load_catalog) */ 593 509 Nbytes = catalog[0].header.datasize + gfits_data_size (&catalog[0].header); 594 fseeko (catalog[0].f, Nbytes, SEEK_SET); 510 if (fseeko (catalog[0].f, Nbytes, SEEK_SET)) { perror ("fseeko: "); exit (1); } 511 595 512 /* read Average table header */ 596 513 if (!gfits_fread_header (catalog[0].f, &header)) { … … 607 524 * one of the average magnitudes in Average. We save this in case it is needed below. NOTE: 608 525 * primary is only used if we read in the secfilt table, otherwise it should be freed */ 609 catalog[0].average = FtableToAverage (&ftable, &Naverage, &catalog[0].catformat, &primary );526 catalog[0].average = FtableToAverage (&ftable, &Naverage, &catalog[0].catformat, &primary, FALSE); 610 527 if (Naverage != Nrows) { 611 528 // XXX this condition denotes the eof has been reached; not an error or a warning … … 614 531 gfits_free_header (&header); 615 532 catalog[0].Naverage = Naverage; 616 catalog[0].Nave s_off = start;533 catalog[0].Naverage_off = start; 617 534 618 535 /*** load the secfilt data ***/ … … 621 538 /* move pointer past header -- must be already read (load_catalog) */ 622 539 Nbytes = subcat[0].header.datasize + gfits_data_size (&subcat[0].header); 623 fseeko (subcat[0].f, Nbytes, SEEK_SET);540 if (fseeko (subcat[0].f, Nbytes, SEEK_SET)) { perror ("fseeko: "); exit (1); } 624 541 625 542 /* read Secfilt table header */ … … 635 552 636 553 Nexpect = catalog[0].Naverage * catalog[0].Nsecfilt; 637 catalog[0].secfilt = FtableToSecFilt (&ftable, &Nitems, &catalog[0].catformat);554 catalog[0].secfilt = FtableToSecFilt (&ftable, catalog[0].average, &Nitems, &catalog[0].catformat, FALSE); 638 555 if (Nitems != Nexpect) { 639 556 fprintf (stderr, "Warning: mismatch between Nsecfilt items in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n", Nitems, Nexpect); 640 557 } 641 catalog[0].Nsecf _mem = catalog[0].Naverage * catalog[0].Nsecfilt;642 catalog[0].Nsecf _off = start * catalog[0].Nsecfilt;558 catalog[0].Nsecfilt_mem = catalog[0].Naverage * catalog[0].Nsecfilt; 559 catalog[0].Nsecfilt_off = start * catalog[0].Nsecfilt; 643 560 644 561 /* if primary is defined, we were supplied with one additional average magnitude from Average … … 651 568 652 569 // XXX check the open status of the catalog 653 if (catalog[0].catflags & LOAD_MEAS) {570 if (catalog[0].catflags & DVO_LOAD_MEASURE) { 654 571 655 572 Catalog *subcat = catalog[0].measure_catalog; … … 657 574 /* move pointer past header -- must be already read (load_catalog) */ 658 575 Nbytes = subcat[0].header.datasize + gfits_data_size (&subcat[0].header); 659 fseeko (subcat[0].f, Nbytes, SEEK_SET);576 if (fseeko (subcat[0].f, Nbytes, SEEK_SET)) { perror ("fseeko: "); exit (1); } 660 577 661 578 /* read Measure table header */ … … 671 588 672 589 /* convert data format to internal : returns number of row read in Nmeasure */ 673 catalog[0].measure = FtableToMeasure (&ftable, catalog[0].average, &Nmeasure, &catalog[0].catformat );590 catalog[0].measure = FtableToMeasure (&ftable, catalog[0].average, &Nmeasure, &catalog[0].catformat, FALSE); 674 591 if (Nmeasure != Nrows) { 675 592 // XXX this condition denotes the eof has been reached; not an error or a warning … … 678 595 gfits_free_header (&header); 679 596 catalog[0].Nmeasure = Nmeasure; 680 catalog[0].Nmeas _off = start;597 catalog[0].Nmeasure_off = start; 681 598 } 682 599 683 600 // XXX check the open status of the catalog? 684 if (catalog[0].catflags & LOAD_MISS) {601 if (catalog[0].catflags & DVO_LOAD_MISSING) { 685 602 686 603 Catalog *subcat = catalog[0].missing_catalog; … … 688 605 /* move pointer past header -- must be already read (load_catalog) */ 689 606 Nbytes = subcat[0].header.datasize + gfits_data_size (&subcat[0].header); 690 fseeko (subcat[0].f, Nbytes, SEEK_SET);607 if (fseeko (subcat[0].f, Nbytes, SEEK_SET)) { perror ("fseeko: "); exit (1); } 691 608 692 609 /* read Missing table header */ … … 702 619 703 620 /* no conversions currently defined : this just does the byte swap */ 704 catalog[0].missing = gfits_table_get_Missing (&ftable, &Nmissing, NULL );621 catalog[0].missing = gfits_table_get_Missing (&ftable, &Nmissing, NULL, NULL); 705 622 if (!catalog[0].missing) { 706 623 fprintf (stderr, "ERROR: failed to read missing\n"); … … 712 629 gfits_free_header (&header); 713 630 catalog[0].Nmissing = Nmissing; 714 catalog[0].Nmiss _off = start;631 catalog[0].Nmissing_off = start; 715 632 } 716 633 717 634 // XXX check the open status of the catalog 718 if (catalog[0].catflags & LOAD_LENSING) {635 if (catalog[0].catflags & DVO_LOAD_LENSING) { 719 636 720 637 Catalog *subcat = catalog[0].lensing_catalog; … … 722 639 /* move pointer past header -- must be already read (load_catalog) */ 723 640 Nbytes = subcat[0].header.datasize + gfits_data_size (&subcat[0].header); 724 fseeko (subcat[0].f, Nbytes, SEEK_SET);641 if (fseeko (subcat[0].f, Nbytes, SEEK_SET)) { perror ("fseeko: "); exit (1); } 725 642 726 643 /* read Lensing table header */ … … 736 653 737 654 /* convert data format to internal : returns number of row read in Nlensing */ 738 catalog[0].lensing = FtableToLensing (&ftable, &Nlensing, &catalog[0].catformat);655 catalog[0].lensing = FtableToLensing (&ftable, catalog[0].average, &Nlensing, &catalog[0].catformat, FALSE); 739 656 if (Nlensing != Nrows) { 740 657 // XXX this condition denotes the eof has been reached; not an error or a warning … … 747 664 748 665 // XXX check the open status of the catalog 749 if (catalog[0].catflags & LOAD_LENSOBJ) {666 if (catalog[0].catflags & DVO_LOAD_LENSOBJ) { 750 667 751 668 Catalog *subcat = catalog[0].lensobj_catalog; … … 753 670 /* move pointer past header -- must be already read (load_catalog) */ 754 671 Nbytes = subcat[0].header.datasize + gfits_data_size (&subcat[0].header); 755 fseeko (subcat[0].f, Nbytes, SEEK_SET);672 if (fseeko (subcat[0].f, Nbytes, SEEK_SET)) { perror ("fseeko: "); exit (1); } 756 673 757 674 /* read Lensobj table header */ … … 767 684 768 685 /* convert data format to internal : returns number of row read in Nlensobj */ 769 catalog[0].lensobj = FtableToLensobj (&ftable, &Nlensobj, &catalog[0].catformat);686 catalog[0].lensobj = FtableToLensobj (&ftable, catalog[0].average, &Nlensobj, &catalog[0].catformat, FALSE); 770 687 if (Nlensobj != Nrows) { 771 688 // XXX this condition denotes the eof has been reached; not an error or a warning … … 778 695 779 696 // XXX check the open status of the catalog 780 if (catalog[0].catflags & LOAD_STARPAR) {697 if (catalog[0].catflags & DVO_LOAD_STARPAR) { 781 698 782 699 Catalog *subcat = catalog[0].starpar_catalog; … … 784 701 /* move pointer past header -- must be already read (load_catalog) */ 785 702 Nbytes = subcat[0].header.datasize + gfits_data_size (&subcat[0].header); 786 fseeko (subcat[0].f, Nbytes, SEEK_SET);703 if (fseeko (subcat[0].f, Nbytes, SEEK_SET)) { perror ("fseeko: "); exit (1); } 787 704 788 705 /* read StarPar table header */ … … 798 715 799 716 /* convert data format to internal : returns number of row read in Nstarpar */ 800 catalog[0].starpar = FtableToStarPar (&ftable, &Nstarpar, &catalog[0].catformat);717 catalog[0].starpar = FtableToStarPar (&ftable, catalog[0].average, &Nstarpar, &catalog[0].catformat, FALSE); 801 718 if (Nstarpar != Nrows) { 802 719 // XXX this condition denotes the eof has been reached; not an error or a warning … … 808 725 } 809 726 727 // XXX check the open status of the catalog 728 if (catalog[0].catflags & DVO_LOAD_GALPHOT) { 729 730 Catalog *subcat = catalog[0].galphot_catalog; 731 732 /* move pointer past header -- must be already read (load_catalog) */ 733 Nbytes = subcat[0].header.datasize + gfits_data_size (&subcat[0].header); 734 if (fseeko (subcat[0].f, Nbytes, SEEK_SET)) { perror ("fseeko: "); exit (1); } 735 736 /* read GalPhot table header */ 737 if (!gfits_fread_header (subcat[0].f, &header)) { 738 if (VERBOSE) fprintf (stderr, "can't read table galphot header"); 739 return (FALSE); 740 } 741 /* read GalPhot table data : format is irrelevant here */ 742 if (!gfits_fread_ftable_range (subcat[0].f, FALSE, &ftable, start, Nrows)) { 743 if (VERBOSE) fprintf (stderr, "can't read table galphot data"); 744 return (FALSE); 745 } 746 747 /* convert data format to internal : returns number of row read in Ngalphot */ 748 catalog[0].galphot = FtableToGalPhot (&ftable, catalog[0].average, &Ngalphot, &catalog[0].catformat, FALSE); 749 if (Ngalphot != Nrows) { 750 // XXX this condition denotes the eof has been reached; not an error or a warning 751 // fprintf (stderr, "Warning: mismatch between Ngalphot in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n", Ngalphot, Nrows); 752 } 753 gfits_free_header (&header); 754 catalog[0].Ngalphot = Ngalphot; 755 catalog[0].Ngalphot_off = start; 756 } 757 810 758 return (TRUE); 811 759 } … … 814 762 int dvo_catalog_save_split (Catalog *catalog, char VERBOSE) { 815 763 816 off_t Nitems;817 764 Header header; 818 765 FTable ftable; 819 766 SecFilt *primary, *secfilt; 820 767 int Nsecfilt; 821 off_t Naves_disk_new, Nmeas_disk_new, Nmiss_disk_new, Nsecf_disk_new, Nlensing_disk_new, Nlensobj_disk_new, Nstarpar_disk_new; 822 off_t first, start, Nrows; 768 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; 823 769 824 770 ftable.header = &header; … … 828 774 829 775 // skip empty catalogs: it is illegal to have Measures without corresponding Averages 830 Nave s_disk_new = MAX (catalog[0].Naves_disk, catalog[0].Naverage + catalog[0].Naves_off);831 if (Nave s_disk_new == 0) {776 Naverage_disk_new = MAX (catalog[0].Naverage_disk, catalog[0].Naverage + catalog[0].Naverage_off); 777 if (Naverage_disk_new == 0) { 832 778 if (VERBOSE) fprintf (stderr, "no stars in catalog, skipping\n"); 833 779 return (TRUE); … … 847 793 } 848 794 849 Nmeas _disk_new = MAX (catalog[0].Nmeas_disk, catalog[0].Nmeasure + catalog[0].Nmeas_off);850 Nmiss _disk_new = MAX (catalog[0].Nmiss_disk, catalog[0].Nmissing + catalog[0].Nmiss_off);851 Nsecf _disk_new = MAX (catalog[0].Nsecf_disk, catalog[0].Naverage*Nsecfilt + catalog[0].Nsecf_off);795 Nmeasure_disk_new = MAX (catalog[0].Nmeasure_disk, catalog[0].Nmeasure + catalog[0].Nmeasure_off); 796 Nmissing_disk_new = MAX (catalog[0].Nmissing_disk, catalog[0].Nmissing + catalog[0].Nmissing_off); 797 Nsecfilt_disk_new = MAX (catalog[0].Nsecfilt_disk, catalog[0].Naverage*Nsecfilt + catalog[0].Nsecfilt_off); 852 798 Nlensing_disk_new = MAX (catalog[0].Nlensing_disk, catalog[0].Nlensing + catalog[0].Nlensing_off); 853 799 Nlensobj_disk_new = MAX (catalog[0].Nlensobj_disk, catalog[0].Nlensobj + catalog[0].Nlensobj_off); 854 800 Nstarpar_disk_new = MAX (catalog[0].Nstarpar_disk, catalog[0].Nstarpar + catalog[0].Nstarpar_off); 801 Ngalphot_disk_new = MAX (catalog[0].Ngalphot_disk, catalog[0].Ngalphot + catalog[0].Ngalphot_off); 855 802 856 803 /* make sure header is consistent with data */ 857 gfits_modify (&catalog[0].header, "NSTARS", OFF_T_FMT, 1, Naves_disk_new); 858 gfits_modify (&catalog[0].header, "NMEAS", OFF_T_FMT, 1, Nmeas_disk_new); 859 gfits_modify (&catalog[0].header, "NMISS", OFF_T_FMT, 1, Nmiss_disk_new); 860 gfits_modify (&catalog[0].header, "NSECFILT", "%d", 1, Nsecfilt); 861 gfits_modify (&catalog[0].header, "NLENSING", OFF_T_FMT, 1, Nlensing_disk_new); 862 gfits_modify (&catalog[0].header, "NLENSOBJ", OFF_T_FMT, 1, Nlensobj_disk_new); 863 gfits_modify (&catalog[0].header, "NSTARPAR", OFF_T_FMT, 1, Nstarpar_disk_new); 804 gfits_modify (&catalog[0].header, "NSTARS", OFF_T_FMT, 1, Naverage_disk_new); 805 gfits_modify (&catalog[0].header, "NMEAS", OFF_T_FMT, 1, Nmeasure_disk_new); 806 gfits_modify (&catalog[0].header, "NMISS", OFF_T_FMT, 1, Nmissing_disk_new); 807 gfits_modify (&catalog[0].header, "NSECFILT", "%d", 1, Nsecfilt); 808 gfits_modify (&catalog[0].header, "NLENSING", OFF_T_FMT, 1, Nlensing_disk_new); 809 gfits_modify (&catalog[0].header, "NLENSOBJ", OFF_T_FMT, 1, Nlensobj_disk_new); 810 gfits_modify (&catalog[0].header, "NSTARPAR", OFF_T_FMT, 1, Nstarpar_disk_new); 811 gfits_modify (&catalog[0].header, "NGALPHOT", OFF_T_FMT, 1, Ngalphot_disk_new); 812 864 813 gfits_modify_alt (&catalog[0].header, "EXTEND", "%t", 1, TRUE); 865 814 gfits_modify (&catalog[0].header, "OBJID", "%d", 1, catalog[0].objID); … … 868 817 869 818 /*** Average Table ***/ 870 if ((catalog[0].catflags & LOAD_AVES) && (catalog[0].average != NULL)) {871 872 first = 0; // first row in memory to write873 start = catalog[0].Naves_off; // first disk row to write874 Nrows = catalog[0].Naverage - first;819 if ((catalog[0].catflags & DVO_LOAD_AVERAGE) && (catalog[0].average != NULL)) { 820 821 off_t first = 0; // first row in memory to write 822 off_t start = catalog[0].Naverage_off; // first disk row to write 823 off_t Nrows = catalog[0].Naverage - first; 875 824 876 825 assert (Nrows >= 0); 877 826 assert (first >= 0); 878 827 assert (first <= catalog[0].Naverage); 879 assert (catalog[0].Naves_disk >= catalog[0].Naves_off); 880 881 /* convert internal to external format */ 882 if (!AverageToFtable (&ftable, &catalog[0].average[first], Nrows, catalog[0].catformat, primary)) { 883 fprintf (stderr, "trouble converting format\n"); 884 goto failure; 885 } 886 887 if (!dvo_catalog_save_subcat (catalog, &ftable, start, Nrows, catalog[0].Naves_disk, Naves_disk_new)) { 828 assert (catalog[0].Naverage_disk >= catalog[0].Naverage_off); 829 830 /* convert internal to external format : also results in a byte-swapped, scaled output 831 table. Note that ftable is newly allocated. 832 */ 833 834 // if we are going to compress, we need to receive unswapped data -- 835 int swapFromNative = !output_is_compressed (start, Nrows, Naverage_disk_new, catalog->catcompress); 836 837 // convert to external table format 838 if (!AverageToFtable (&ftable, &catalog[0].average[first], Nrows, catalog[0].catformat, primary, swapFromNative)) { 839 fprintf (stderr, "trouble converting format\n"); 840 goto failure; 841 } 842 843 if (!dvo_catalog_save_subcat (catalog, &ftable, start, Nrows, catalog[0].Naverage_disk, Naverage_disk_new)) { 888 844 fprintf (stderr, "failure writing Average table\n"); 889 845 goto failure; … … 894 850 // even if we do not save the average table, we need to keep the header in sync 895 851 /* rewind file pointers and truncate (file is still open) */ 896 fseeko (catalog[0].f, 0, SEEK_SET);852 if (fseeko (catalog[0].f, 0, SEEK_SET)) { perror ("fseeko: "); exit (1); } 897 853 898 854 /* write table PHU header - always write this out */ … … 905 861 906 862 /*** Measure Table ***/ 907 if ((catalog[0].catflags & LOAD_MEAS) && (catalog[0].measure != NULL)) { 863 if ((catalog[0].catflags & DVO_LOAD_MEASURE) && (catalog[0].measure != NULL)) { 864 865 off_t first = 0; // first row in memory to write 866 off_t start = catalog[0].Nmeasure_off; // first disk row to write 867 off_t Nrows = catalog[0].Nmeasure - first; 868 869 assert (Nrows >= 0); 870 assert (first >= 0); 871 assert (first <= catalog[0].Nmeasure); 872 assert (catalog[0].Nmeasure_disk >= catalog[0].Nmeasure_off); 873 874 // if we are going to compress, we need to receive unswapped data -- 875 int swapFromNative = !output_is_compressed (start, Nrows, Nmeasure_disk_new, catalog->catcompress); 876 877 // convert to external table format 878 if (!MeasureToFtable (&ftable, catalog[0].average, &catalog[0].measure[first], Nrows, catalog[0].catformat, swapFromNative)) { 879 fprintf (stderr, "trouble converting format\n"); 880 goto failure; 881 } 882 883 // write out Measure table 884 catalog->measure_catalog->catcompress = catalog->catcompress; // XXX this is a bit of a hack, should be done in an api 885 if (!dvo_catalog_save_subcat (catalog[0].measure_catalog, &ftable, start, Nrows, catalog[0].Nmeasure_disk, Nmeasure_disk_new)) { 886 fprintf (stderr, "trouble writing Measure table\n"); 887 goto failure; 888 } 889 gfits_free_header (&header); 890 gfits_free_table (&ftable); 891 } 892 893 /*** Missing Table ***/ 894 if ((catalog[0].catflags & DVO_LOAD_MISSING) && (catalog[0].missing != NULL)) { 895 896 if (catalog[0].Nmissing_off != 0) { 897 fprintf (stderr, "inconsistency: Missing table cannot be written in segments\n"); 898 goto failure; 899 } 900 901 // if we are going to compress, we need to receive unswapped data -- 902 int swapFromNative = !output_is_compressed (catalog[0].Nmissing_off, catalog[0].Nmissing, Nmissing_disk_new, catalog->catcompress); 903 904 // convert to external table format 905 if (!gfits_table_set_Missing (&ftable, catalog[0].missing, catalog[0].Nmissing, swapFromNative)) { 906 fprintf (stderr, "trouble converting format\n"); 907 goto failure; 908 } 909 910 // write out Missing table (must write out entire table) 911 catalog->missing_catalog->catcompress = catalog->catcompress; // XXX this is a bit of a hack, should be done in an api 912 if (!dvo_catalog_save_subcat (catalog[0].missing_catalog, &ftable, 0, catalog[0].Nmissing, catalog[0].Nmissing, catalog[0].Nmissing)) { 913 fprintf (stderr, "trouble writing Missing Table\n"); 914 goto failure; 915 } 916 gfits_free_header (&header); 917 gfits_free_table (&ftable); 918 } 919 920 /*** Secfilt Table ***/ 921 if ((catalog[0].catflags & DVO_LOAD_SECFILT) && (catalog[0].secfilt != NULL)) { 922 923 off_t first = 0; // first row in memory to write 924 off_t start = catalog[0].Nsecfilt_off; // first disk row to write 925 off_t Nitems = catalog[0].Naverage*Nsecfilt; 926 off_t Nrows = Nitems - first; 927 928 assert (Nrows >= 0); 929 assert (first >= 0); 930 assert (first <= Nitems); 931 assert (catalog[0].Nsecfilt_disk >= catalog[0].Nsecfilt_off); 932 // XXX check these for consistency... 933 934 // if we are going to compress, we need to receive unswapped data -- 935 int swapFromNative = !output_is_compressed (start, Nrows, Nsecfilt_disk_new, catalog->catcompress); 936 937 // convert to external table format 938 if (!SecFiltToFtable (&ftable, &secfilt[first], Nrows, catalog[0].catformat, swapFromNative)) { 939 fprintf (stderr, "trouble converting format\n"); 940 goto failure; 941 } 942 943 // write out SecFilt table 944 catalog->secfilt_catalog->catcompress = catalog->catcompress; // XXX this is a bit of a hack, should be done in an api 945 if (!dvo_catalog_save_subcat (catalog[0].secfilt_catalog, &ftable, start, Nrows, catalog[0].Nsecfilt_disk, Nsecfilt_disk_new)) { 946 fprintf (stderr, "failure writing SecFilt table\n"); 947 goto failure; 948 } 949 gfits_free_header (&header); 950 gfits_free_table (&ftable); 951 } 952 953 /*** Lensing Table ***/ 954 if ((catalog[0].catflags & DVO_LOAD_LENSING) && (catalog[0].lensing != NULL)) { 955 956 off_t first = 0; // first row in memory to write 957 off_t start = catalog[0].Nlensing_off; // first disk row to write 958 off_t Nrows = catalog[0].Nlensing - first; 959 960 assert (Nrows >= 0); 961 assert (first >= 0); 962 assert (first <= catalog[0].Nlensing); 963 assert (catalog[0].Nlensing_disk >= catalog[0].Nlensing_off); 964 965 // if we are going to compress, we need to receive unswapped data -- 966 int swapFromNative = !output_is_compressed (start, Nrows, Nlensing_disk_new, catalog->catcompress); 967 968 // convert to external table format 969 if (!LensingToFtable (&ftable, &catalog[0].lensing[first], Nrows, catalog[0].catformat, swapFromNative)) { 970 fprintf (stderr, "trouble converting format\n"); 971 goto failure; 972 } 973 974 // write out Lensing table 975 catalog->lensing_catalog->catcompress = catalog->catcompress; // XXX this is a bit of a hack, should be done in an api 976 if (!dvo_catalog_save_subcat (catalog[0].lensing_catalog, &ftable, start, Nrows, catalog[0].Nlensing_disk, Nlensing_disk_new)) { 977 fprintf (stderr, "trouble writing Lensing table\n"); 978 goto failure; 979 } 980 gfits_free_header (&header); 981 gfits_free_table (&ftable); 982 } 983 984 /*** Lensobj Table ***/ 985 if ((catalog[0].catflags & DVO_LOAD_LENSOBJ) && (catalog[0].lensobj != NULL)) { 986 987 off_t first = 0; // first row in memory to write 988 off_t start = catalog[0].Nlensobj_off; // first disk row to write 989 off_t Nrows = catalog[0].Nlensobj - first; 990 991 assert (Nrows >= 0); 992 assert (first >= 0); 993 assert (first <= catalog[0].Nlensobj); 994 assert (catalog[0].Nlensobj_disk >= catalog[0].Nlensobj_off); 995 996 // if we are going to compress, we need to receive unswapped data -- 997 int swapFromNative = !output_is_compressed (start, Nrows, Nlensobj_disk_new, catalog->catcompress); 998 999 // convert to external table format 1000 if (!LensobjToFtable (&ftable, &catalog[0].lensobj[first], Nrows, catalog[0].catformat, swapFromNative)) { 1001 fprintf (stderr, "trouble converting format\n"); 1002 goto failure; 1003 } 1004 1005 // write out Lensobj table 1006 catalog->lensobj_catalog->catcompress = catalog->catcompress; // XXX this is a bit of a hack, should be done in an api 1007 if (!dvo_catalog_save_subcat (catalog[0].lensobj_catalog, &ftable, start, Nrows, catalog[0].Nlensobj_disk, Nlensobj_disk_new)) { 1008 fprintf (stderr, "trouble writing Lensobj table\n"); 1009 goto failure; 1010 } 1011 gfits_free_header (&header); 1012 gfits_free_table (&ftable); 1013 } 1014 1015 /*** StarPar Table ***/ 1016 if ((catalog[0].catflags & DVO_LOAD_STARPAR) && (catalog[0].starpar != NULL)) { 1017 1018 off_t first = 0; // first row in memory to write 1019 off_t start = catalog[0].Nstarpar_off; // first disk row to write 1020 off_t Nrows = catalog[0].Nstarpar - first; 1021 1022 assert (Nrows >= 0); 1023 assert (first >= 0); 1024 assert (first <= catalog[0].Nstarpar); 1025 assert (catalog[0].Nstarpar_disk >= catalog[0].Nstarpar_off); 1026 1027 // if we are going to compress, we need to receive unswapped data -- 1028 int swapFromNative = !output_is_compressed (start, Nrows, Nstarpar_disk_new, catalog->catcompress); 1029 1030 // convert to external table format 1031 if (!StarParToFtable (&ftable, &catalog[0].starpar[first], Nrows, catalog[0].catformat, swapFromNative)) { 1032 fprintf (stderr, "trouble converting format\n"); 1033 goto failure; 1034 } 1035 1036 // write out StarPar table 1037 catalog->starpar_catalog->catcompress = catalog->catcompress; // XXX this is a bit of a hack, should be done in an api 1038 if (!dvo_catalog_save_subcat (catalog[0].starpar_catalog, &ftable, start, Nrows, catalog[0].Nstarpar_disk, Nstarpar_disk_new)) { 1039 fprintf (stderr, "trouble writing StarPar table\n"); 1040 goto failure; 1041 } 1042 gfits_free_header (&header); 1043 gfits_free_table (&ftable); 1044 } 1045 1046 /*** GalPhot Table ***/ 1047 if ((catalog[0].catflags & DVO_LOAD_GALPHOT) && (catalog[0].galphot != NULL)) { 1048 1049 off_t first = 0; // first row in memory to write 1050 off_t start = catalog[0].Ngalphot_off; // first disk row to write 1051 off_t Nrows = catalog[0].Ngalphot - first; 1052 1053 assert (Nrows >= 0); 1054 assert (first >= 0); 1055 assert (first <= catalog[0].Ngalphot); 1056 assert (catalog[0].Ngalphot_disk >= catalog[0].Ngalphot_off); 1057 1058 // if we are going to compress, we need to receive unswapped data -- 1059 int swapFromNative = !output_is_compressed (start, Nrows, Ngalphot_disk_new, catalog->catcompress); 1060 1061 // convert to external table format 1062 if (!GalPhotToFtable (&ftable, &catalog[0].galphot[first], Nrows, catalog[0].catformat, swapFromNative)) { 1063 fprintf (stderr, "trouble converting format\n"); 1064 goto failure; 1065 } 1066 1067 // write out GalPhot table 1068 catalog->galphot_catalog->catcompress = catalog->catcompress; // XXX this is a bit of a hack, should be done in an api 1069 if (!dvo_catalog_save_subcat (catalog[0].galphot_catalog, &ftable, start, Nrows, catalog[0].Ngalphot_disk, Ngalphot_disk_new)) { 1070 fprintf (stderr, "trouble writing GalPhot table\n"); 1071 goto failure; 1072 } 1073 gfits_free_header (&header); 1074 gfits_free_table (&ftable); 1075 } 1076 1077 /* free temp storage */ 1078 if (primary != NULL) { 1079 free (primary); 1080 free (secfilt); 1081 } 1082 return (TRUE); 1083 1084 failure: 1085 /* free temp storage */ 1086 gfits_free_header (&header); 1087 gfits_free_table (&ftable); 1088 if (primary != NULL) { 1089 free (primary); 1090 free (secfilt); 1091 } 1092 return (FALSE); 1093 } 1094 1095 /* update_catalog_split only writes new lines to file. */ 1096 int dvo_catalog_update_split (Catalog *catalog, char VERBOSE) { 1097 1098 off_t Nitems; 1099 Header header; 1100 FTable ftable; 1101 SecFilt *primary, *secfilt; 1102 int Nsecfilt; 1103 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; 1104 off_t first, start, Nrows; 1105 1106 ftable.header = &header; 1107 ftable.buffer = NULL; 1108 header.buffer = NULL; 1109 1110 // skip empty catalogs: it is illegal to have Measures without corresponding Averages 1111 Naverage_disk_new = MAX (catalog[0].Naverage_disk, catalog[0].Naverage + catalog[0].Naverage_off); 1112 if (Naverage_disk_new == 0) { 1113 if (VERBOSE) fprintf (stderr, "no stars in catalog, skipping\n"); 1114 return (TRUE); 1115 } 1116 1117 // for the appropriate types, pull out the first secfilt and pass to AverageToFtable as primary 1118 switch (catalog[0].catformat) { 1119 case DVO_FORMAT_ELIXIR: // special case for ELIXIR 1120 case DVO_FORMAT_LONEOS: // special case for LONEOS 1121 dvo_catalog_secfilt_to_primary (catalog, &primary, &secfilt, &Nsecfilt); 1122 break; 1123 default: 1124 primary = NULL; 1125 secfilt = catalog[0].secfilt; 1126 Nsecfilt = catalog[0].Nsecfilt; 1127 break; 1128 } 1129 1130 Nmeasure_disk_new = MAX (catalog[0].Nmeasure_disk, catalog[0].Nmeasure + catalog[0].Nmeasure_off); 1131 Nmissing_disk_new = MAX (catalog[0].Nmissing_disk, catalog[0].Nmissing + catalog[0].Nmissing_off); 1132 Nsecfilt_disk_new = MAX (catalog[0].Nsecfilt_disk, catalog[0].Naverage*Nsecfilt + catalog[0].Nsecfilt_off); 1133 Nlensing_disk_new = MAX (catalog[0].Nlensing_disk, catalog[0].Nlensing + catalog[0].Nlensing_off); 1134 Nlensobj_disk_new = MAX (catalog[0].Nlensobj_disk, catalog[0].Nlensobj + catalog[0].Nlensobj_off); 1135 Nstarpar_disk_new = MAX (catalog[0].Nstarpar_disk, catalog[0].Nstarpar + catalog[0].Nstarpar_off); 1136 Ngalphot_disk_new = MAX (catalog[0].Ngalphot_disk, catalog[0].Ngalphot + catalog[0].Ngalphot_off); 1137 1138 /* make sure header is consistent with data */ 1139 gfits_modify (&catalog[0].header, "NSTARS", OFF_T_FMT, 1, Naverage_disk_new); 1140 gfits_modify (&catalog[0].header, "NMEAS", OFF_T_FMT, 1, Nmeasure_disk_new); 1141 gfits_modify (&catalog[0].header, "NMISS", OFF_T_FMT, 1, Nmissing_disk_new); 1142 gfits_modify (&catalog[0].header, "NSECFILT", "%d", 1, Nsecfilt); 1143 gfits_modify (&catalog[0].header, "NLENSING", OFF_T_FMT, 1, Nlensing_disk_new); 1144 gfits_modify (&catalog[0].header, "NLENSOBJ", OFF_T_FMT, 1, Nlensobj_disk_new); 1145 gfits_modify (&catalog[0].header, "NSTARPAR", OFF_T_FMT, 1, Nstarpar_disk_new); 1146 gfits_modify (&catalog[0].header, "NGALPHOT", OFF_T_FMT, 1, Ngalphot_disk_new); 1147 1148 gfits_modify_alt (&catalog[0].header, "EXTEND", "%t", 1, TRUE); 1149 gfits_modify (&catalog[0].header, "OBJID", "%d", 1, catalog[0].objID); 1150 1151 /* in split mode, we can save only part of the data */ 1152 1153 /*** Average Table ***/ 1154 if (catalog[0].average != NULL) { 1155 1156 first = catalog[0].Naverage_disk - catalog[0].Naverage_off; // first row to write (memory) 1157 start = catalog[0].Naverage_disk; // first row to write (disk) 1158 Nrows = catalog[0].Naverage - first; 1159 1160 assert (Nrows >= 0); 1161 assert (first >= 0); 1162 assert (first <= catalog[0].Naverage); 1163 assert (catalog[0].Naverage_disk >= catalog[0].Naverage_off); 1164 1165 /* convert internal to external format */ 1166 if (!AverageToFtable (&ftable, &catalog[0].average[first], Nrows, catalog[0].catformat, primary, TRUE)) { 1167 fprintf (stderr, "trouble converting format\n"); 1168 goto failure; 1169 } 1170 1171 if (!dvo_catalog_save_subcat (catalog, &ftable, start, Nrows, catalog[0].Naverage_disk, Naverage_disk_new)) { 1172 fprintf (stderr, "failure writing Average table\n"); 1173 goto failure; 1174 } 1175 gfits_free_header (&header); 1176 gfits_free_table (&ftable); 1177 } else { 1178 // even if we do not save the average table, we need to keep the header in sync 1179 /* rewind file pointers and truncate (file is still open) */ 1180 if (fseeko (catalog[0].f, 0, SEEK_SET)) { perror ("fseeko: "); exit (1); } 1181 1182 /* write table PHU header - always write this out */ 1183 /* XXX EAM : check if disk file size has changed */ 1184 if (!gfits_fwrite_header (catalog[0].f, &catalog[0].header)) { 1185 fprintf (stderr, "can't write primary header"); 1186 goto failure; 1187 } 1188 } 1189 1190 /*** Measure Table ***/ 1191 if ((catalog[0].catflags & DVO_LOAD_MEASURE) && (catalog[0].measure != NULL)) { 908 1192 909 1193 first = 0; // first row in memory to write 910 start = catalog[0].Nmeas _off; // first disk row to write1194 start = catalog[0].Nmeasure_off; // first disk row to write 911 1195 Nrows = catalog[0].Nmeasure - first; 912 1196 … … 914 1198 assert (first >= 0); 915 1199 assert (first <= catalog[0].Nmeasure); 916 assert (catalog[0].Nmeas _disk >= catalog[0].Nmeas_off);1200 assert (catalog[0].Nmeasure_disk >= catalog[0].Nmeasure_off); 917 1201 918 1202 // convert to external table format (note that the block above does not damage or free catalog.average) 919 if (!MeasureToFtable (&ftable, catalog[0].average, &catalog[0].measure[first], Nrows, catalog[0].catformat )) {1203 if (!MeasureToFtable (&ftable, catalog[0].average, &catalog[0].measure[first], Nrows, catalog[0].catformat, TRUE)) { 920 1204 fprintf (stderr, "trouble converting format\n"); 921 1205 goto failure; … … 923 1207 924 1208 // write out Measure table 925 if (!dvo_catalog_save_subcat (catalog[0].measure_catalog, &ftable, start, Nrows, catalog[0].Nmeas _disk, Nmeas_disk_new)) {1209 if (!dvo_catalog_save_subcat (catalog[0].measure_catalog, &ftable, start, Nrows, catalog[0].Nmeasure_disk, Nmeasure_disk_new)) { 926 1210 fprintf (stderr, "trouble writing Measure table\n"); 927 1211 goto failure; … … 932 1216 933 1217 /*** Missing Table ***/ 934 if ((catalog[0].catflags & LOAD_MISS) && (catalog[0].missing != NULL)) {935 936 if (catalog[0].Nmiss _off != 0) {1218 if ((catalog[0].catflags & DVO_LOAD_MISSING) && (catalog[0].missing != NULL)) { 1219 1220 if (catalog[0].Nmissing_off != 0) { 937 1221 fprintf (stderr, "inconsistency: Missing table cannot be written in segments\n"); 938 1222 goto failure; … … 940 1224 941 1225 // convert to external table format 942 if (!gfits_table_set_Missing (&ftable, catalog[0].missing, catalog[0].Nmissing )) {1226 if (!gfits_table_set_Missing (&ftable, catalog[0].missing, catalog[0].Nmissing, TRUE)) { 943 1227 fprintf (stderr, "trouble converting format\n"); 944 1228 goto failure; … … 955 1239 956 1240 /*** Secfilt Table ***/ 957 if ((catalog[0].catflags & LOAD_SECF) && (catalog[0].secfilt != NULL)) {1241 if ((catalog[0].catflags & DVO_LOAD_SECFILT) && (catalog[0].secfilt != NULL)) { 958 1242 959 1243 first = 0; // first row in memory to write 960 start = catalog[0].Nsecf _off; // first disk row to write961 Nitems = catalog[0].Nsecf _mem;1244 start = catalog[0].Nsecfilt_off; // first disk row to write 1245 Nitems = catalog[0].Nsecfilt_mem; 962 1246 Nrows = Nitems - first; 963 1247 … … 965 1249 assert (first >= 0); 966 1250 assert (first <= Nitems); 967 assert (catalog[0].Nsecf _disk >= catalog[0].Nsecf_off);1251 assert (catalog[0].Nsecfilt_disk >= catalog[0].Nsecfilt_off); 968 1252 // XXX check these for consistency... 969 1253 970 1254 // convert to external table format 971 SecFiltToFtable (&ftable, &secfilt[first], Nrows, catalog[0].catformat); 1255 if (!SecFiltToFtable (&ftable, &secfilt[first], Nrows, catalog[0].catformat, TRUE)) { 1256 fprintf (stderr, "trouble converting format\n"); 1257 goto failure; 1258 } 972 1259 973 1260 // write out SecFilt table 974 if (!dvo_catalog_save_subcat (catalog[0].secfilt_catalog, &ftable, start, Nrows, catalog[0].Nsecf _disk, Nsecf_disk_new)) {1261 if (!dvo_catalog_save_subcat (catalog[0].secfilt_catalog, &ftable, start, Nrows, catalog[0].Nsecfilt_disk, Nsecfilt_disk_new)) { 975 1262 fprintf (stderr, "failure writing SecFilt table\n"); 976 1263 goto failure; … … 981 1268 982 1269 /*** Lensing Table (optional, do not save if not loaded) ***/ 983 if ((catalog[0].catflags & LOAD_LENSING) && catalog[0].lensing_catalog->f && catalog[0].lensing) {1270 if ((catalog[0].catflags & DVO_LOAD_LENSING) && catalog[0].lensing_catalog->f && catalog[0].lensing) { 984 1271 985 1272 first = 0; // first row in memory to write … … 994 1281 if (catalog[0].Nlensing) { 995 1282 // convert to external table format (note that the block above does not damage or free catalog.average) 996 if (!LensingToFtable (&ftable, &catalog[0].lensing[first], Nrows, catalog[0].catformat )) {1283 if (!LensingToFtable (&ftable, &catalog[0].lensing[first], Nrows, catalog[0].catformat, TRUE)) { 997 1284 fprintf (stderr, "trouble converting format\n"); 998 1285 goto failure; … … 1010 1297 1011 1298 /*** Lensobj Table (optional, do not save if not loaded) ***/ 1012 if ((catalog[0].catflags & LOAD_LENSOBJ) && catalog[0].lensobj_catalog->f && catalog[0].lensobj) {1299 if ((catalog[0].catflags & DVO_LOAD_LENSOBJ) && catalog[0].lensobj_catalog->f && catalog[0].lensobj) { 1013 1300 1014 1301 first = 0; // first row in memory to write … … 1023 1310 if (catalog[0].Nlensobj) { 1024 1311 // convert to external table format (note that the block above does not damage or free catalog.average) 1025 if (!LensobjToFtable (&ftable, &catalog[0].lensobj[first], Nrows, catalog[0].catformat )) {1312 if (!LensobjToFtable (&ftable, &catalog[0].lensobj[first], Nrows, catalog[0].catformat, TRUE)) { 1026 1313 fprintf (stderr, "trouble converting format\n"); 1027 1314 goto failure; … … 1039 1326 1040 1327 /*** StarPar Table (optional, do not save if not loaded) ***/ 1041 if ((catalog[0].catflags &LOAD_STARPAR) && catalog[0].starpar_catalog->f && catalog[0].starpar) {1328 if ((catalog[0].catflags & DVO_LOAD_STARPAR) && catalog[0].starpar_catalog->f && catalog[0].starpar) { 1042 1329 1043 1330 first = 0; // first row in memory to write … … 1052 1339 if (catalog[0].Nstarpar) { 1053 1340 // convert to external table format (note that the block above does not damage or free catalog.average) 1054 if (!StarParToFtable (&ftable, &catalog[0].starpar[first], Nrows, catalog[0].catformat )) {1341 if (!StarParToFtable (&ftable, &catalog[0].starpar[first], Nrows, catalog[0].catformat, TRUE)) { 1055 1342 fprintf (stderr, "trouble converting format\n"); 1056 1343 goto failure; … … 1067 1354 } 1068 1355 1356 /*** GalPhot Table (optional, do not save if not loaded) ***/ 1357 if ((catalog[0].catflags & DVO_LOAD_GALPHOT) && catalog[0].galphot_catalog->f && catalog[0].galphot) { 1358 1359 first = 0; // first row in memory to write 1360 start = catalog[0].Ngalphot_off; // first disk row to write 1361 Nrows = catalog[0].Ngalphot - first; 1362 1363 assert (Nrows >= 0); 1364 assert (first >= 0); 1365 assert (first <= catalog[0].Ngalphot); 1366 assert (catalog[0].Ngalphot_disk >= catalog[0].Ngalphot_off); 1367 1368 if (catalog[0].Ngalphot) { 1369 // convert to external table format (note that the block above does not damage or free catalog.average) 1370 if (!GalPhotToFtable (&ftable, &catalog[0].galphot[first], Nrows, catalog[0].catformat, TRUE)) { 1371 fprintf (stderr, "trouble converting format\n"); 1372 goto failure; 1373 } 1374 1375 // write out GalPhot table 1376 if (!dvo_catalog_save_subcat (catalog[0].galphot_catalog, &ftable, start, Nrows, catalog[0].Ngalphot_disk, Ngalphot_disk_new)) { 1377 fprintf (stderr, "trouble writing GalPhot table\n"); 1378 goto failure; 1379 } 1380 gfits_free_header (&header); 1381 gfits_free_table (&ftable); 1382 } 1383 } 1384 1069 1385 /* free temp storage */ 1070 1386 if (primary != NULL) { … … 1074 1390 return (TRUE); 1075 1391 1076 failure:1392 failure: 1077 1393 /* free temp storage */ 1078 1394 gfits_free_header (&header); … … 1088 1404 int dvo_catalog_save_split_complete (Catalog *catalog, char VERBOSE) { 1089 1405 1090 off_t Nitems;1091 1406 Header header; 1092 1407 FTable ftable; 1093 1408 SecFilt *primary, *secfilt; 1094 1409 int Nsecfilt; 1095 off_t Nave s_disk_new, Nmeas_disk_new, Nmiss_disk_new, Nsecf_disk_new, Nlensing_disk_new, Nlensobj_disk_new, Nstarpar_disk_new;1410 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; 1096 1411 off_t first, start, Nrows; 1097 1412 … … 1102 1417 1103 1418 // skip empty catalogs: it is illegal to have Measures without corresponding Averages 1104 if (catalog[0].Nave s_off > 0) {1419 if (catalog[0].Naverage_off > 0) { 1105 1420 fprintf (stderr, "ERROR: only partial catalog (Average) was loaded\n"); 1106 1421 goto failure; 1107 1422 } 1108 if (catalog[0].Nmeas _off > 0) {1423 if (catalog[0].Nmeasure_off > 0) { 1109 1424 fprintf (stderr, "ERROR: only partial catalog (Measure) was loaded\n"); 1110 1425 goto failure; 1111 1426 } 1112 if (catalog[0].Nmiss _off > 0) {1427 if (catalog[0].Nmissing_off > 0) { 1113 1428 fprintf (stderr, "ERROR: only partial catalog (Missing) was loaded\n"); 1114 1429 goto failure; 1115 1430 } 1116 if (catalog[0].Nsecf _off > 0) {1431 if (catalog[0].Nsecfilt_off > 0) { 1117 1432 fprintf (stderr, "ERROR: only partial catalog (Secfilt) was loaded\n"); 1118 1433 goto failure; … … 1130 1445 goto failure; 1131 1446 } 1132 1133 Naves_disk_new = catalog[0].Naverage; 1134 if (Naves_disk_new == 0) { 1447 if (catalog[0].Ngalphot_off > 0) { 1448 fprintf (stderr, "ERROR: only partial catalog (GalPhot) was loaded\n"); 1449 goto failure; 1450 } 1451 1452 Naverage_disk_new = catalog[0].Naverage; 1453 if (Naverage_disk_new == 0) { 1135 1454 if (VERBOSE) fprintf (stderr, "resulting catalog is empty; delete it\n"); 1136 1455 // unlink (); … … 1151 1470 } 1152 1471 1153 Nmeas _disk_new = catalog[0].Nmeasure;1154 Nmiss _disk_new = catalog[0].Nmissing;1155 Nsecf _disk_new = catalog[0].Naverage*Nsecfilt;1472 Nmeasure_disk_new = catalog[0].Nmeasure; 1473 Nmissing_disk_new = catalog[0].Nmissing; 1474 Nsecfilt_disk_new = catalog[0].Naverage*Nsecfilt; 1156 1475 Nlensing_disk_new = catalog[0].Nlensing; 1157 1476 Nlensobj_disk_new = catalog[0].Nlensobj; 1158 1477 Nstarpar_disk_new = catalog[0].Nstarpar; 1478 Ngalphot_disk_new = catalog[0].Ngalphot; 1159 1479 1160 1480 /* make sure header is consistent with data */ 1161 gfits_modify (&catalog[0].header, "NSTARS", OFF_T_FMT, 1, Nave s_disk_new);1162 gfits_modify (&catalog[0].header, "NMEAS", OFF_T_FMT, 1, Nmeas _disk_new);1163 gfits_modify (&catalog[0].header, "NMISS", OFF_T_FMT, 1, Nmiss _disk_new);1481 gfits_modify (&catalog[0].header, "NSTARS", OFF_T_FMT, 1, Naverage_disk_new); 1482 gfits_modify (&catalog[0].header, "NMEAS", OFF_T_FMT, 1, Nmeasure_disk_new); 1483 gfits_modify (&catalog[0].header, "NMISS", OFF_T_FMT, 1, Nmissing_disk_new); 1164 1484 gfits_modify (&catalog[0].header, "NSECFILT", "%d", 1, Nsecfilt); 1165 1485 gfits_modify (&catalog[0].header, "NLENSING", OFF_T_FMT, 1, Nlensing_disk_new); 1166 1486 gfits_modify (&catalog[0].header, "NLENSOBJ", OFF_T_FMT, 1, Nlensobj_disk_new); 1167 1487 gfits_modify (&catalog[0].header, "NSTARPAR", OFF_T_FMT, 1, Nstarpar_disk_new); 1488 gfits_modify (&catalog[0].header, "NGALPHOT", OFF_T_FMT, 1, Ngalphot_disk_new); 1168 1489 gfits_modify_alt (&catalog[0].header, "EXTEND", "%t", 1, TRUE); 1169 1490 gfits_modify (&catalog[0].header, "OBJID", "%d", 1, catalog[0].objID); … … 1172 1493 1173 1494 /*** Average Table ***/ 1174 if ((catalog[0].catflags & LOAD_AVES) && (catalog[0].average != NULL)) {1495 if ((catalog[0].catflags & DVO_LOAD_AVERAGE) && (catalog[0].average != NULL)) { 1175 1496 1176 1497 first = 0; // first row in memory to write 1177 start = catalog[0].Nave s_off; // first disk row to write1498 start = catalog[0].Naverage_off; // first disk row to write 1178 1499 Nrows = catalog[0].Naverage - first; 1179 1500 … … 1181 1502 assert (first >= 0); 1182 1503 assert (first <= catalog[0].Naverage); 1183 assert (catalog[0].Nave s_disk >= catalog[0].Naves_off);1504 assert (catalog[0].Naverage_disk >= catalog[0].Naverage_off); 1184 1505 1185 1506 /* convert internal to external format */ 1186 if (!AverageToFtable (&ftable, &catalog[0].average[first], Nrows, catalog[0].catformat, primary )) {1187 fprintf (stderr, "trouble converting format\n"); 1188 goto failure; 1189 } 1190 1191 if (!dvo_catalog_save_subcat (catalog, &ftable, start, Nrows, catalog[0].Nave s_disk, Naves_disk_new)) {1507 if (!AverageToFtable (&ftable, &catalog[0].average[first], Nrows, catalog[0].catformat, primary, TRUE)) { 1508 fprintf (stderr, "trouble converting format\n"); 1509 goto failure; 1510 } 1511 1512 if (!dvo_catalog_save_subcat (catalog, &ftable, start, Nrows, catalog[0].Naverage_disk, Naverage_disk_new)) { 1192 1513 fprintf (stderr, "failure writing Average table\n"); 1193 1514 goto failure; … … 1198 1519 // even if we do not save the average table, we need to keep the header in sync 1199 1520 /* rewind file pointers and truncate (file is still open) */ 1200 fseeko (catalog[0].f, 0, SEEK_SET);1521 if (fseeko (catalog[0].f, 0, SEEK_SET)) { perror ("fseeko: "); exit (1); } 1201 1522 1202 1523 /* write table PHU header - always write this out */ … … 1209 1530 1210 1531 /*** Measure Table ***/ 1211 if ( (catalog[0].catflags & LOAD_MEAS) && (catalog[0].measure != NULL)) {1212 1213 first = 0;// first row in memory to write1214 start = catalog[0].Nmeas _off; // first disk row to write1532 if (catalog[0].measure != NULL) { 1533 1534 first = catalog[0].Nmeasure_disk - catalog[0].Nmeasure_off; // first row in memory to write 1535 start = catalog[0].Nmeasure_disk; // first disk row to write 1215 1536 Nrows = catalog[0].Nmeasure - first; 1216 1537 … … 1218 1539 assert (first >= 0); 1219 1540 assert (first <= catalog[0].Nmeasure); 1220 assert (catalog[0].Nmeas _disk >= catalog[0].Nmeas_off);1541 assert (catalog[0].Nmeasure_disk >= catalog[0].Nmeasure_off); 1221 1542 1222 1543 // convert to external table format 1223 if (!MeasureToFtable (&ftable, catalog[0].average, &catalog[0].measure[first], Nrows, catalog[0].catformat)) { 1544 // XXX does catalog.measure have averef correctly set up? 1545 if (!MeasureToFtable (&ftable, catalog[0].average, &catalog[0].measure[first], Nrows, catalog[0].catformat, TRUE)) { 1224 1546 fprintf (stderr, "trouble converting format\n"); 1225 1547 goto failure; … … 1227 1549 1228 1550 // write out Measure table 1229 if (!dvo_catalog_save_subcat (catalog[0].measure_catalog, &ftable, start, Nrows, catalog[0].Nmeas _disk, Nmeas_disk_new)) {1551 if (!dvo_catalog_save_subcat (catalog[0].measure_catalog, &ftable, start, Nrows, catalog[0].Nmeasure_disk, Nmeasure_disk_new)) { 1230 1552 fprintf (stderr, "trouble writing Measure table\n"); 1231 1553 goto failure; … … 1235 1557 } 1236 1558 1559 /* missing table CANNOT be written unsorted, thus it is always written 1560 out in full */ 1561 1237 1562 /*** Missing Table ***/ 1238 if ((catalog[0].catflags & LOAD_MISS) && (catalog[0].missing != NULL)) { 1239 1240 if (catalog[0].Nmiss_off != 0) { 1563 1564 if (catalog[0].missing != NULL) { 1565 1566 if (catalog[0].Nmissing_off != 0) { 1241 1567 fprintf (stderr, "inconsistency: Missing table cannot be written in segments\n"); 1242 1568 goto failure; … … 1244 1570 1245 1571 // convert to external table format 1246 if (!gfits_table_set_Missing (&ftable, catalog[0].missing, catalog[0].Nmissing )) {1572 if (!gfits_table_set_Missing (&ftable, catalog[0].missing, catalog[0].Nmissing, TRUE)) { 1247 1573 fprintf (stderr, "trouble converting format\n"); 1248 1574 goto failure; … … 1259 1585 1260 1586 /*** Secfilt Table ***/ 1261 if ((catalog[0].catflags & LOAD_SECF) && (catalog[0].secfilt != NULL)) { 1262 1263 first = 0; // first row in memory to write 1264 start = catalog[0].Nsecf_off; // first disk row to write 1265 Nitems = catalog[0].Naverage*Nsecfilt; 1266 Nrows = Nitems - first; 1267 1268 assert (Nrows >= 0); 1269 assert (first >= 0); 1270 assert (first <= Nitems); 1271 assert (catalog[0].Nsecf_disk >= catalog[0].Nsecf_off); 1272 // XXX check these for consistency... 1587 if (catalog[0].secfilt != NULL) { 1588 1589 first = catalog[0].Nsecfilt_disk - catalog[0].Nsecfilt_off; // first row in memory to write 1590 start = catalog[0].Nsecfilt_disk; // first disk row to write 1591 Nrows = catalog[0].Nsecfilt_mem - first; 1592 1593 assert (Nrows >= 0); 1594 assert (first >= 0); 1595 assert (catalog[0].Nsecfilt_disk >= catalog[0].Nsecfilt_off); 1273 1596 1274 1597 // convert to external table format 1275 SecFiltToFtable (&ftable, &secfilt[first], Nrows, catalog[0].catformat); 1598 if (!SecFiltToFtable (&ftable, &secfilt[first], Nrows, catalog[0].catformat, TRUE)) { 1599 fprintf (stderr, "trouble converting format\n"); 1600 goto failure; 1601 } 1276 1602 1277 1603 // write out SecFilt table 1278 if (!dvo_catalog_save_subcat (catalog[0].secfilt_catalog, &ftable, start, Nrows, catalog[0].Nsecf _disk, Nsecf_disk_new)) {1604 if (!dvo_catalog_save_subcat (catalog[0].secfilt_catalog, &ftable, start, Nrows, catalog[0].Nsecfilt_disk, Nsecfilt_disk_new)) { 1279 1605 fprintf (stderr, "failure writing SecFilt table\n"); 1280 1606 goto failure; … … 1285 1611 1286 1612 /*** Lensing Table ***/ 1287 if ( (catalog[0].catflags & LOAD_LENSING) && (catalog[0].lensing != NULL)) {1288 1289 first = 0;// first row in memory to write1290 start = catalog[0].Nlensing_ off; // first disk row to write1613 if (catalog[0].lensing != NULL) { 1614 1615 first = catalog[0].Nlensing_disk - catalog[0].Nlensing_off; // first row in memory to write 1616 start = catalog[0].Nlensing_disk; // first disk row to write 1291 1617 Nrows = catalog[0].Nlensing - first; 1292 1618 … … 1297 1623 1298 1624 // convert to external table format 1299 if (!LensingToFtable (&ftable, &catalog[0].lensing[first], Nrows, catalog[0].catformat)) { 1625 // XXX does catalog.lensing have averef correctly set up? 1626 if (!LensingToFtable (&ftable, &catalog[0].lensing[first], Nrows, catalog[0].catformat, TRUE)) { 1300 1627 fprintf (stderr, "trouble converting format\n"); 1301 1628 goto failure; … … 1312 1639 1313 1640 /*** Lensobj Table ***/ 1314 if ( (catalog[0].catflags & LOAD_LENSOBJ) && (catalog[0].lensobj != NULL)) {1315 1316 first = 0;// first row in memory to write1317 start = catalog[0].Nlensobj_ off; // first disk row to write1641 if (catalog[0].lensobj != NULL) { 1642 1643 first = catalog[0].Nlensobj_disk - catalog[0].Nlensobj_off; // first row in memory to write 1644 start = catalog[0].Nlensobj_disk; // first disk row to write 1318 1645 Nrows = catalog[0].Nlensobj - first; 1319 1646 … … 1324 1651 1325 1652 // convert to external table format 1326 if (!LensobjToFtable (&ftable, &catalog[0].lensobj[first], Nrows, catalog[0].catformat)) { 1653 // XXX does catalog.lensobj have averef correctly set up? 1654 if (!LensobjToFtable (&ftable, &catalog[0].lensobj[first], Nrows, catalog[0].catformat, TRUE)) { 1327 1655 fprintf (stderr, "trouble converting format\n"); 1328 1656 goto failure; … … 1339 1667 1340 1668 /*** StarPar Table ***/ 1341 if ( (catalog[0].catflags & LOAD_STARPAR) && (catalog[0].starpar != NULL)) {1342 1343 first = 0;// first row in memory to write1344 start = catalog[0].Nstarpar_ off; // first disk row to write1669 if (catalog[0].starpar != NULL) { 1670 1671 first = catalog[0].Nstarpar_disk - catalog[0].Nstarpar_off; // first row in memory to write 1672 start = catalog[0].Nstarpar_disk; // first disk row to write 1345 1673 Nrows = catalog[0].Nstarpar - first; 1346 1674 … … 1351 1679 1352 1680 // convert to external table format 1353 if (!StarParToFtable (&ftable, &catalog[0].starpar[first], Nrows, catalog[0].catformat)) { 1681 // XXX does catalog.starpar have averef correctly set up? 1682 if (!StarParToFtable (&ftable, &catalog[0].starpar[first], Nrows, catalog[0].catformat, TRUE)) { 1354 1683 fprintf (stderr, "trouble converting format\n"); 1355 1684 goto failure; … … 1359 1688 if (!dvo_catalog_save_subcat (catalog[0].starpar_catalog, &ftable, start, Nrows, catalog[0].Nstarpar_disk, Nstarpar_disk_new)) { 1360 1689 fprintf (stderr, "trouble writing StarPar table\n"); 1690 goto failure; 1691 } 1692 gfits_free_header (&header); 1693 gfits_free_table (&ftable); 1694 } 1695 1696 /*** GalPhot Table ***/ 1697 if (catalog[0].galphot != NULL) { 1698 1699 first = catalog[0].Ngalphot_disk - catalog[0].Ngalphot_off; // first row in memory to write 1700 start = catalog[0].Ngalphot_disk; // first disk row to write 1701 Nrows = catalog[0].Ngalphot - first; 1702 1703 assert (Nrows >= 0); 1704 assert (first >= 0); 1705 assert (first <= catalog[0].Ngalphot); 1706 assert (catalog[0].Ngalphot_disk >= catalog[0].Ngalphot_off); 1707 1708 // convert to external table format 1709 // XXX does catalog.galphot have averef correctly set up? 1710 if (!GalPhotToFtable (&ftable, &catalog[0].galphot[first], Nrows, catalog[0].catformat, TRUE)) { 1711 fprintf (stderr, "trouble converting format\n"); 1712 goto failure; 1713 } 1714 1715 // write out GalPhot table 1716 if (!dvo_catalog_save_subcat (catalog[0].galphot_catalog, &ftable, start, Nrows, catalog[0].Ngalphot_disk, Ngalphot_disk_new)) { 1717 fprintf (stderr, "trouble writing GalPhot table\n"); 1361 1718 goto failure; 1362 1719 } … … 1370 1727 free (secfilt); 1371 1728 } 1729 1372 1730 return (TRUE); 1373 1731 1374 failure: 1375 /* free temp storage */ 1376 gfits_free_header (&header); 1377 gfits_free_table (&ftable); 1378 if (primary != NULL) { 1379 free (primary); 1380 free (secfilt); 1381 } 1382 return (FALSE); 1383 } 1384 1385 /* update_catalog_split only writes new lines to file. */ 1386 int dvo_catalog_update_split (Catalog *catalog, char VERBOSE) { 1387 1388 Header header; 1389 FTable ftable; 1390 SecFilt *primary, *secfilt; 1391 int Nsecfilt; 1392 off_t Naves_disk_new, Nmeas_disk_new, Nmiss_disk_new, Nsecf_disk_new, Nlensing_disk_new, Nlensobj_disk_new, Nstarpar_disk_new; 1393 off_t first, start, Nrows; 1394 1395 ftable.header = &header; 1396 ftable.buffer = NULL; 1397 header.buffer = NULL; 1398 1399 // skip empty catalogs: it is illegal to have Measures without corresponding Averages 1400 Naves_disk_new = MAX (catalog[0].Naves_disk, catalog[0].Naverage + catalog[0].Naves_off); 1401 if (Naves_disk_new == 0) { 1402 if (VERBOSE) fprintf (stderr, "no stars in catalog, skipping\n"); 1403 return (TRUE); 1404 } 1405 1406 // for the appropriate types, pull out the first secfilt and pass to AverageToFtable as primary 1407 switch (catalog[0].catformat) { 1408 case DVO_FORMAT_ELIXIR: // special case for ELIXIR 1409 case DVO_FORMAT_LONEOS: // special case for LONEOS 1410 dvo_catalog_secfilt_to_primary (catalog, &primary, &secfilt, &Nsecfilt); 1411 break; 1412 default: 1413 primary = NULL; 1414 secfilt = catalog[0].secfilt; 1415 Nsecfilt = catalog[0].Nsecfilt; 1416 break; 1417 } 1418 1419 Nmeas_disk_new = MAX (catalog[0].Nmeas_disk, catalog[0].Nmeasure + catalog[0].Nmeas_off); 1420 Nmiss_disk_new = MAX (catalog[0].Nmiss_disk, catalog[0].Nmissing + catalog[0].Nmiss_off); 1421 Nsecf_disk_new = MAX (catalog[0].Nsecf_disk, catalog[0].Naverage*Nsecfilt + catalog[0].Nsecf_off); 1422 Nlensing_disk_new = MAX (catalog[0].Nlensing_disk, catalog[0].Nlensing + catalog[0].Nlensing_off); 1423 Nlensobj_disk_new = MAX (catalog[0].Nlensobj_disk, catalog[0].Nlensobj + catalog[0].Nlensobj_off); 1424 Nstarpar_disk_new = MAX (catalog[0].Nstarpar_disk, catalog[0].Nstarpar + catalog[0].Nstarpar_off); 1425 1426 /* make sure header is consistent with data */ 1427 gfits_modify (&catalog[0].header, "NSTARS", OFF_T_FMT, 1, Naves_disk_new); 1428 gfits_modify (&catalog[0].header, "NMEAS", OFF_T_FMT, 1, Nmeas_disk_new); 1429 gfits_modify (&catalog[0].header, "NMISS", OFF_T_FMT, 1, Nmiss_disk_new); 1430 gfits_modify (&catalog[0].header, "NSECFILT", "%d", 1, Nsecfilt); 1431 gfits_modify (&catalog[0].header, "NLENSING", OFF_T_FMT, 1, Nlensing_disk_new); 1432 gfits_modify (&catalog[0].header, "NLENSOBJ", OFF_T_FMT, 1, Nlensobj_disk_new); 1433 gfits_modify (&catalog[0].header, "NSTARPAR", OFF_T_FMT, 1, Nstarpar_disk_new); 1434 gfits_modify_alt (&catalog[0].header, "EXTEND", "%t", 1, TRUE); 1435 gfits_modify (&catalog[0].header, "OBJID", "%d", 1, catalog[0].objID); 1436 1437 /* in split mode, we can save only part of the data */ 1438 1439 /*** Average Table ***/ 1440 if (catalog[0].average != NULL) { 1441 1442 first = catalog[0].Naves_disk - catalog[0].Naves_off; // first row to write (memory) 1443 start = catalog[0].Naves_disk; // first row to write (disk) 1444 Nrows = catalog[0].Naverage - first; 1445 1446 assert (Nrows >= 0); 1447 assert (first >= 0); 1448 assert (first <= catalog[0].Naverage); 1449 assert (catalog[0].Naves_disk >= catalog[0].Naves_off); 1450 1451 /* convert internal to external format */ 1452 if (!AverageToFtable (&ftable, &catalog[0].average[first], Nrows, catalog[0].catformat, primary)) { 1453 fprintf (stderr, "trouble converting format\n"); 1454 goto failure; 1455 } 1456 1457 if (!dvo_catalog_save_subcat (catalog, &ftable, start, Nrows, catalog[0].Naves_disk, Naves_disk_new)) { 1458 fprintf (stderr, "failure writing Average table\n"); 1459 goto failure; 1460 } 1461 gfits_free_header (&header); 1462 gfits_free_table (&ftable); 1463 } else { 1464 // even if we do not save the average table, we need to keep the header in sync 1465 /* rewind file pointers and truncate (file is still open) */ 1466 fseeko (catalog[0].f, 0, SEEK_SET); 1467 1468 /* write table PHU header - always write this out */ 1469 /* XXX EAM : check if disk file size has changed */ 1470 if (!gfits_fwrite_header (catalog[0].f, &catalog[0].header)) { 1471 fprintf (stderr, "can't write primary header"); 1472 goto failure; 1473 } 1474 } 1475 1476 /*** Measure Table ***/ 1477 if (catalog[0].measure != NULL) { 1478 1479 first = catalog[0].Nmeas_disk - catalog[0].Nmeas_off; // first row in memory to write 1480 start = catalog[0].Nmeas_disk; // first disk row to write 1481 Nrows = catalog[0].Nmeasure - first; 1482 1483 assert (Nrows >= 0); 1484 assert (first >= 0); 1485 assert (first <= catalog[0].Nmeasure); 1486 assert (catalog[0].Nmeas_disk >= catalog[0].Nmeas_off); 1487 1488 // convert to external table format 1489 // XXX does catalog.measure have averef correctly set up? 1490 if (!MeasureToFtable (&ftable, catalog[0].average, &catalog[0].measure[first], Nrows, catalog[0].catformat)) { 1491 fprintf (stderr, "trouble converting format\n"); 1492 goto failure; 1493 } 1494 1495 // write out Measure table 1496 if (!dvo_catalog_save_subcat (catalog[0].measure_catalog, &ftable, start, Nrows, catalog[0].Nmeas_disk, Nmeas_disk_new)) { 1497 fprintf (stderr, "trouble writing Measure table\n"); 1498 goto failure; 1499 } 1500 gfits_free_header (&header); 1501 gfits_free_table (&ftable); 1502 } 1503 1504 /* missing table CANNOT be written unsorted, thus it is always written 1505 out in full */ 1506 1507 /*** Missing Table ***/ 1508 1509 if (catalog[0].missing != NULL) { 1510 1511 if (catalog[0].Nmiss_off != 0) { 1512 fprintf (stderr, "inconsistency: Missing table cannot be written in segments\n"); 1513 goto failure; 1514 } 1515 1516 // convert to external table format 1517 if (!gfits_table_set_Missing (&ftable, catalog[0].missing, catalog[0].Nmissing)) { 1518 fprintf (stderr, "trouble converting format\n"); 1519 goto failure; 1520 } 1521 1522 // write out Missing table (must write out entire table) 1523 if (!dvo_catalog_save_subcat (catalog[0].missing_catalog, &ftable, 0, catalog[0].Nmissing, catalog[0].Nmissing, catalog[0].Nmissing)) { 1524 fprintf (stderr, "trouble writing Missing Table\n"); 1525 goto failure; 1526 } 1527 gfits_free_header (&header); 1528 gfits_free_table (&ftable); 1529 } 1530 1531 /*** Secfilt Table ***/ 1532 if (catalog[0].secfilt != NULL) { 1533 1534 first = catalog[0].Nsecf_disk - catalog[0].Nsecf_off; // first row in memory to write 1535 start = catalog[0].Nsecf_disk; // first disk row to write 1536 Nrows = catalog[0].Nsecf_mem - first; 1537 1538 assert (Nrows >= 0); 1539 assert (first >= 0); 1540 assert (catalog[0].Nsecf_disk >= catalog[0].Nsecf_off); 1541 1542 // convert to external table format 1543 SecFiltToFtable (&ftable, &secfilt[first], Nrows, catalog[0].catformat); 1544 1545 // write out SecFilt table 1546 if (!dvo_catalog_save_subcat (catalog[0].secfilt_catalog, &ftable, start, Nrows, catalog[0].Nsecf_disk, Nsecf_disk_new)) { 1547 fprintf (stderr, "failure writing SecFilt table\n"); 1548 goto failure; 1549 } 1550 gfits_free_header (&header); 1551 gfits_free_table (&ftable); 1552 } 1553 1554 /*** Lensing Table ***/ 1555 if (catalog[0].lensing != NULL) { 1556 1557 first = catalog[0].Nlensing_disk - catalog[0].Nlensing_off; // first row in memory to write 1558 start = catalog[0].Nlensing_disk; // first disk row to write 1559 Nrows = catalog[0].Nlensing - first; 1560 1561 assert (Nrows >= 0); 1562 assert (first >= 0); 1563 assert (first <= catalog[0].Nlensing); 1564 assert (catalog[0].Nlensing_disk >= catalog[0].Nlensing_off); 1565 1566 // convert to external table format 1567 // XXX does catalog.lensing have averef correctly set up? 1568 if (!LensingToFtable (&ftable, &catalog[0].lensing[first], Nrows, catalog[0].catformat)) { 1569 fprintf (stderr, "trouble converting format\n"); 1570 goto failure; 1571 } 1572 1573 // write out Lensing table 1574 if (!dvo_catalog_save_subcat (catalog[0].lensing_catalog, &ftable, start, Nrows, catalog[0].Nlensing_disk, Nlensing_disk_new)) { 1575 fprintf (stderr, "trouble writing Lensing table\n"); 1576 goto failure; 1577 } 1578 gfits_free_header (&header); 1579 gfits_free_table (&ftable); 1580 } 1581 1582 /*** Lensobj Table ***/ 1583 if (catalog[0].lensobj != NULL) { 1584 1585 first = catalog[0].Nlensobj_disk - catalog[0].Nlensobj_off; // first row in memory to write 1586 start = catalog[0].Nlensobj_disk; // first disk row to write 1587 Nrows = catalog[0].Nlensobj - first; 1588 1589 assert (Nrows >= 0); 1590 assert (first >= 0); 1591 assert (first <= catalog[0].Nlensobj); 1592 assert (catalog[0].Nlensobj_disk >= catalog[0].Nlensobj_off); 1593 1594 // convert to external table format 1595 // XXX does catalog.lensobj have averef correctly set up? 1596 if (!LensobjToFtable (&ftable, &catalog[0].lensobj[first], Nrows, catalog[0].catformat)) { 1597 fprintf (stderr, "trouble converting format\n"); 1598 goto failure; 1599 } 1600 1601 // write out Lensobj table 1602 if (!dvo_catalog_save_subcat (catalog[0].lensobj_catalog, &ftable, start, Nrows, catalog[0].Nlensobj_disk, Nlensobj_disk_new)) { 1603 fprintf (stderr, "trouble writing Lensobj table\n"); 1604 goto failure; 1605 } 1606 gfits_free_header (&header); 1607 gfits_free_table (&ftable); 1608 } 1609 1610 /*** StarPar Table ***/ 1611 if (catalog[0].starpar != NULL) { 1612 1613 first = catalog[0].Nstarpar_disk - catalog[0].Nstarpar_off; // first row in memory to write 1614 start = catalog[0].Nstarpar_disk; // first disk row to write 1615 Nrows = catalog[0].Nstarpar - first; 1616 1617 assert (Nrows >= 0); 1618 assert (first >= 0); 1619 assert (first <= catalog[0].Nstarpar); 1620 assert (catalog[0].Nstarpar_disk >= catalog[0].Nstarpar_off); 1621 1622 // convert to external table format 1623 // XXX does catalog.starpar have averef correctly set up? 1624 if (!StarParToFtable (&ftable, &catalog[0].starpar[first], Nrows, catalog[0].catformat)) { 1625 fprintf (stderr, "trouble converting format\n"); 1626 goto failure; 1627 } 1628 1629 // write out StarPar table 1630 if (!dvo_catalog_save_subcat (catalog[0].starpar_catalog, &ftable, start, Nrows, catalog[0].Nstarpar_disk, Nstarpar_disk_new)) { 1631 fprintf (stderr, "trouble writing StarPar table\n"); 1632 goto failure; 1633 } 1634 gfits_free_header (&header); 1635 gfits_free_table (&ftable); 1636 } 1637 1638 /* free temp storage */ 1639 if (primary != NULL) { 1640 free (primary); 1641 free (secfilt); 1642 } 1643 1644 return (TRUE); 1645 1646 failure: 1732 failure: 1647 1733 /* free temp storage */ 1648 1734 if (primary != NULL) { … … 1662 1748 1663 1749 /* XXX EAM : update is not efficient. MeasureToFtable should only 1664 convert the new rows (Nmeas _disk to Nmeasure). the resulting1750 convert the new rows (Nmeasure_disk to Nmeasure). the resulting 1665 1751 table represents the end rows of the ftable. we need to define 1666 1752 the vtable based on the ftable, but with Ny = Nmeasure */ … … 1668 1754 1669 1755 1670 // * convert to an ftable1671 // * optionally write the PHU header/matrix1672 // * advance to the start of the output data block:1673 // ** Nx * catalog[0].Nmeas_off1674 // * write out the ftable data block1675 // * if Nmeas_off + Nmeasure >= Nmeas_disk, update padding1676 // ** start = Nmeas_off1677 // ** Nrows = Nmeasure1678 1756 // * convert to an ftable 1757 // * optionally write the PHU header/matrix 1758 // * advance to the start of the output data block: 1759 // ** Nx * catalog[0].Nmeasure_off 1760 // * write out the ftable data block 1761 // * if Nmeasure_off + Nmeasure >= Nmeasure_disk, update padding 1762 // ** start = Nmeasure_off 1763 // ** Nrows = Nmeasure 1764 -
trunk/Ohana/src/libdvo/src/dvo_convert.c
r38153 r38441 11 11 constructions below **/ 12 12 13 DVO TableFormat FtableGetFormat (FTable *ftable) {14 15 DVO TableFormat format;13 DVOCatFormat FtableGetFormat (FTable *ftable) { 14 15 DVOCatFormat format; 16 16 char extname[80]; 17 17 … … 52 52 /*** Average / FTable conversion functions ***/ 53 53 54 Average *FtableToAverage (FTable *ftable, off_t *Naverage, char *format, SecFilt **primary) {54 Average *FtableToAverage (FTable *ftable, off_t *Naverage, DVOCatFormat *format, SecFilt **primary, char nativeBytes) { 55 55 56 56 Average *average; … … 98 98 if (!strcmp (extname, NAME)) { \ 99 99 Average_##TYPE *tmpAverage; \ 100 tmpAverage = gfits_table_get_Average_##TYPE (ftable, Naverage, NULL); \100 tmpAverage = gfits_table_get_Average_##TYPE (ftable, Naverage, NULL, &nativeBytes); \ 101 101 if (!tmpAverage) { \ 102 102 fprintf (stderr, "ERROR: failed to read averages\n"); \ … … 109 109 110 110 if (!strcmp (extname, "DVO_AVERAGE")) { 111 average = gfits_table_get_Average (ftable, Naverage, NULL );111 average = gfits_table_get_Average (ftable, Naverage, NULL, &nativeBytes); 112 112 if (!average) { 113 113 fprintf (stderr, "ERROR: failed to read averages\n"); … … 139 139 } 140 140 141 int AverageToFtable (FTable *ftable, Average *average, off_t Naverage, char format, SecFilt *primary) {142 143 # define FORMAT_CASE(FORMAT, TYPE) \144 case DVO_FORMAT_##FORMAT: {\145 Average_##TYPE *tmpAverage;\141 int AverageToFtable (FTable *ftable, Average *average, off_t Naverage, DVOCatFormat format, SecFilt *primary, int swapFromNative) { 142 143 # define FORMAT_CASE(FORMAT, TYPE) \ 144 case DVO_FORMAT_##FORMAT: { \ 145 Average_##TYPE *tmpAverage; \ 146 146 tmpAverage = AverageInternalTo_##TYPE (average, Naverage, primary); \ 147 gfits_table_set_Average_##TYPE (ftable, tmpAverage, Naverage); \148 free (tmpAverage);\149 break; }150 147 gfits_table_set_Average_##TYPE (ftable, tmpAverage, Naverage, swapFromNative); \ 148 free (tmpAverage); \ 149 break; } 150 151 151 /* convert from the internal format */ 152 152 switch (format) { 153 153 case DVO_FORMAT_INTERNAL: { 154 gfits_table_set_Average (ftable, average, Naverage );154 gfits_table_set_Average (ftable, average, Naverage, swapFromNative); 155 155 break; } 156 156 … … 180 180 181 181 // FtableToMeasure needs the Average since old formats stored measure.dR,dD only 182 Measure *FtableToMeasure (FTable *ftable, Average *average, off_t *Nmeasure, char *format) { 182 // other FtableToFOO conversions accept the average argument for macro construction 183 Measure *FtableToMeasure (FTable *ftable, Average *average, off_t *Nmeasure, DVOCatFormat *format, char nativeBytes) { 183 184 184 185 Measure *measure; … … 226 227 if (!strcmp (extname, NAME)) { \ 227 228 Measure_##TYPE *tmpMeasure; \ 228 tmpMeasure = gfits_table_get_Measure_##TYPE (ftable, Nmeasure, NULL); \229 if (!tmpMeasure) {\230 fprintf (stderr, "ERROR: failed to read measures\n"); \231 exit (2);\232 }\233 myAssert (ABS_COORDS || average, "conversion to internal needs average table"); \229 tmpMeasure = gfits_table_get_Measure_##TYPE (ftable, Nmeasure, NULL, &nativeBytes); \ 230 if (!tmpMeasure) { \ 231 fprintf (stderr, "ERROR: failed to read measures\n"); \ 232 exit (2); \ 233 } \ 234 myAssert (ABS_COORDS || average, "conversion to internal needs average table"); \ 234 235 measure = Measure_##TYPE##_ToInternal (average, tmpMeasure, *Nmeasure); \ 235 236 free (tmpMeasure); \ … … 238 239 239 240 if (!strcmp (extname, "DVO_MEASURE")) { 240 measure = gfits_table_get_Measure (ftable, Nmeasure, NULL );241 measure = gfits_table_get_Measure (ftable, Nmeasure, NULL, &nativeBytes); 241 242 if (!measure) { 242 243 fprintf (stderr, "ERROR: failed to read measures\n"); … … 269 270 270 271 // MeasureToFtable needs the Average since old formats stored measure.dR,dD only 271 int MeasureToFtable (FTable *ftable, Average *average, Measure *measure, off_t Nmeasure, char format) {272 int MeasureToFtable (FTable *ftable, Average *average, Measure *measure, off_t Nmeasure, DVOCatFormat format, int swapFromNative) { 272 273 273 274 # define FORMAT_CASE(FORMAT, TYPE, ABS_COORDS) \ … … 276 277 myAssert (ABS_COORDS || average, "conversion from internal needs average table"); \ 277 278 tmpMeasure = MeasureInternalTo_##TYPE (average, measure, Nmeasure); \ 278 gfits_table_set_Measure_##TYPE (ftable, tmpMeasure, Nmeasure); \279 gfits_table_set_Measure_##TYPE (ftable, tmpMeasure, Nmeasure, swapFromNative); \ 279 280 free (tmpMeasure); \ 280 281 break; } … … 283 284 switch (format) { 284 285 case DVO_FORMAT_INTERNAL: { 285 gfits_table_set_Measure (ftable, measure, Nmeasure );286 gfits_table_set_Measure (ftable, measure, Nmeasure, swapFromNative); 286 287 break; } 287 288 … … 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, &nativeBytes); \ 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, &nativeBytes); 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, &nativeBytes); 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, char *format) {389 SecFilt *FtableToSecFilt (FTable *ftable, Average *average, off_t *Nsecfilt, DVOCatFormat *format, char nativeBytes) { 313 390 314 391 SecFilt *secfilt; … … 339 416 if (!strcmp (extname, NAME)) { \ 340 417 SecFilt_##TYPE *tmpSecFilt; \ 341 tmpSecFilt = gfits_table_get_SecFilt_##TYPE (ftable, Nsecfilt, NULL ); \418 tmpSecFilt = gfits_table_get_SecFilt_##TYPE (ftable, Nsecfilt, NULL, &nativeBytes); \ 342 419 if (!tmpSecFilt) { \ 343 420 fprintf (stderr, "ERROR: failed to read secfilts\n"); \ … … 350 427 351 428 if (!strcmp (extname, "DVO_SECFILT")) { 352 secfilt = gfits_table_get_SecFilt (ftable, Nsecfilt, NULL );429 secfilt = gfits_table_get_SecFilt (ftable, Nsecfilt, NULL, &nativeBytes); 353 430 if (!secfilt) { 354 431 fprintf (stderr, "ERROR: failed to read secfilts\n"); … … 380 457 } 381 458 382 int SecFiltToFtable (FTable *ftable, SecFilt *secfilt, off_t Nsecfilt, char format) {459 int SecFiltToFtable (FTable *ftable, SecFilt *secfilt, off_t Nsecfilt, DVOCatFormat format, int swapFromNative) { 383 460 384 461 # define FORMAT_CASE(FORMAT, TYPE) \ … … 386 463 SecFilt_##TYPE *tmpSecFilt; \ 387 464 tmpSecFilt = SecFiltInternalTo_##TYPE (secfilt, Nsecfilt); \ 388 gfits_table_set_SecFilt_##TYPE (ftable, tmpSecFilt, Nsecfilt); \465 gfits_table_set_SecFilt_##TYPE (ftable, tmpSecFilt, Nsecfilt, swapFromNative); \ 389 466 free (tmpSecFilt); \ 390 467 break; } … … 393 470 switch (format) { 394 471 case DVO_FORMAT_INTERNAL: { 395 gfits_table_set_SecFilt (ftable, secfilt, Nsecfilt );472 gfits_table_set_SecFilt (ftable, secfilt, Nsecfilt, swapFromNative); 396 473 break; } 397 474 … … 420 497 /*** Lensing / FTable conversion functions ***/ 421 498 422 Lensing *FtableToLensing (FTable *ftable, off_t *Nlensing, char *format) {499 Lensing *FtableToLensing (FTable *ftable, Average *average, off_t *Nlensing, DVOCatFormat *format, char nativeBytes) { 423 500 424 501 Lensing *lensing; … … 433 510 if (!strcmp (extname, "DVO_LENSING_PS1_V5") && (ftable[0].header[0].Naxis[0] == 128)) { 434 511 Lensing_PS1_V5_R0 *tmpLensing; 435 tmpLensing = gfits_table_get_Lensing_PS1_V5_R0 (ftable, Nlensing, NULL );512 tmpLensing = gfits_table_get_Lensing_PS1_V5_R0 (ftable, Nlensing, NULL, &nativeBytes); 436 513 if (!tmpLensing) { 437 514 fprintf (stderr, "ERROR: failed to read lensings\n"); … … 445 522 if (!strcmp (extname, "DVO_LENSING_PS1_V5") && (ftable[0].header[0].Naxis[0] == 136)) { 446 523 Lensing_PS1_V5_R1 *tmpLensing; 447 tmpLensing = gfits_table_get_Lensing_PS1_V5_R1 (ftable, Nlensing, NULL );524 tmpLensing = gfits_table_get_Lensing_PS1_V5_R1 (ftable, Nlensing, NULL, &nativeBytes); 448 525 if (!tmpLensing) { 449 526 fprintf (stderr, "ERROR: failed to read lensings\n"); … … 457 534 if (!strcmp (extname, "DVO_LENSING_PS1_V5") && (ftable[0].header[0].Naxis[0] == 144)) { 458 535 Lensing_PS1_V5_R2 *tmpLensing; 459 tmpLensing = gfits_table_get_Lensing_PS1_V5_R2 (ftable, Nlensing, NULL );536 tmpLensing = gfits_table_get_Lensing_PS1_V5_R2 (ftable, Nlensing, NULL, &nativeBytes); 460 537 if (!tmpLensing) { 461 538 fprintf (stderr, "ERROR: failed to read lensings\n"); … … 477 554 if (!strcmp (extname, NAME)) { \ 478 555 Lensing_##TYPE *tmpLensing; \ 479 tmpLensing = gfits_table_get_Lensing_##TYPE (ftable, Nlensing, NULL ); \556 tmpLensing = gfits_table_get_Lensing_##TYPE (ftable, Nlensing, NULL, &nativeBytes); \ 480 557 if (!tmpLensing) { \ 481 558 fprintf (stderr, "ERROR: failed to read lensings\n"); \ … … 488 565 489 566 if (!strcmp (extname, "DVO_LENSING")) { 490 lensing = gfits_table_get_Lensing (ftable, Nlensing, NULL );567 lensing = gfits_table_get_Lensing (ftable, Nlensing, NULL, &nativeBytes); 491 568 if (!lensing) { 492 569 fprintf (stderr, "ERROR: failed to read lensings\n"); … … 520 597 521 598 // LensingToFtable needs the Average since old formats stored lensing.dR,dD only 522 int LensingToFtable (FTable *ftable, Lensing *lensing, off_t Nlensing, char format) {599 int LensingToFtable (FTable *ftable, Lensing *lensing, off_t Nlensing, DVOCatFormat format, int swapFromNative) { 523 600 524 601 # define FORMAT_CASE(FORMAT, TYPE) \ … … 526 603 Lensing_##TYPE *tmpLensing; \ 527 604 tmpLensing = LensingInternalTo_##TYPE (lensing, Nlensing); \ 528 gfits_table_set_Lensing_##TYPE (ftable, tmpLensing, Nlensing); \605 gfits_table_set_Lensing_##TYPE (ftable, tmpLensing, Nlensing, swapFromNative); \ 529 606 free (tmpLensing); \ 530 607 break; } … … 533 610 switch (format) { 534 611 case DVO_FORMAT_INTERNAL: { 535 gfits_table_set_Lensing (ftable, lensing, Nlensing );612 gfits_table_set_Lensing (ftable, lensing, Nlensing, swapFromNative); 536 613 break; } 537 614 … … 559 636 /*** Lensobj / FTable conversion functions ***/ 560 637 561 Lensobj *FtableToLensobj (FTable *ftable, off_t *Nlensobj, char *format) {638 Lensobj *FtableToLensobj (FTable *ftable, Average *average, off_t *Nlensobj, DVOCatFormat *format, char nativeBytes) { 562 639 563 640 Lensobj *lensobj; … … 572 649 if (!strcmp (extname, "DVO_LENSOBJ_PS1_V5") && (ftable[0].header[0].Naxis[0] == 136)) { 573 650 Lensobj_PS1_V5_R0 *tmpLensobj; 574 tmpLensobj = gfits_table_get_Lensobj_PS1_V5_R0 (ftable, Nlensobj, NULL );651 tmpLensobj = gfits_table_get_Lensobj_PS1_V5_R0 (ftable, Nlensobj, NULL, &nativeBytes); 575 652 if (!tmpLensobj) { 576 653 fprintf (stderr, "ERROR: failed to read lensobjs\n"); … … 592 669 if (!strcmp (extname, NAME)) { \ 593 670 Lensobj_##TYPE *tmpLensobj; \ 594 tmpLensobj = gfits_table_get_Lensobj_##TYPE (ftable, Nlensobj, NULL ); \671 tmpLensobj = gfits_table_get_Lensobj_##TYPE (ftable, Nlensobj, NULL, &nativeBytes); \ 595 672 if (!tmpLensobj) { \ 596 673 fprintf (stderr, "ERROR: failed to read lensobjs\n"); \ … … 603 680 604 681 if (!strcmp (extname, "DVO_LENSOBJ")) { 605 lensobj = gfits_table_get_Lensobj (ftable, Nlensobj, NULL );682 lensobj = gfits_table_get_Lensobj (ftable, Nlensobj, NULL, &nativeBytes); 606 683 if (!lensobj) { 607 684 fprintf (stderr, "ERROR: failed to read lensobjs\n"); … … 635 712 636 713 // LensobjToFtable needs the Average since old formats stored lensobj.dR,dD only 637 int LensobjToFtable (FTable *ftable, Lensobj *lensobj, off_t Nlensobj, char format) {714 int LensobjToFtable (FTable *ftable, Lensobj *lensobj, off_t Nlensobj, DVOCatFormat format, int swapFromNative) { 638 715 639 716 # define FORMAT_CASE(FORMAT, TYPE) \ … … 641 718 Lensobj_##TYPE *tmpLensobj; \ 642 719 tmpLensobj = LensobjInternalTo_##TYPE (lensobj, Nlensobj); \ 643 gfits_table_set_Lensobj_##TYPE (ftable, tmpLensobj, Nlensobj); \720 gfits_table_set_Lensobj_##TYPE (ftable, tmpLensobj, Nlensobj, swapFromNative); \ 644 721 free (tmpLensobj); \ 645 722 break; } … … 648 725 switch (format) { 649 726 case DVO_FORMAT_INTERNAL: { 650 gfits_table_set_Lensobj (ftable, lensobj, Nlensobj );727 gfits_table_set_Lensobj (ftable, lensobj, Nlensobj, swapFromNative); 651 728 break; } 652 729 … … 674 751 /*** StarPar / FTable conversion functions ***/ 675 752 676 StarPar *FtableToStarPar (FTable *ftable, off_t *Nstarpar, char *format) {753 StarPar *FtableToStarPar (FTable *ftable, Average *average, off_t *Nstarpar, DVOCatFormat *format, char nativeBytes) { 677 754 678 755 StarPar *starpar; … … 695 772 if (!strcmp (extname, NAME)) { \ 696 773 StarPar_##TYPE *tmpStarPar; \ 697 tmpStarPar = gfits_table_get_StarPar_##TYPE (ftable, Nstarpar, NULL ); \774 tmpStarPar = gfits_table_get_StarPar_##TYPE (ftable, Nstarpar, NULL, &nativeBytes); \ 698 775 if (!tmpStarPar) { \ 699 776 fprintf (stderr, "ERROR: failed to read starpar\n"); \ … … 706 783 707 784 if (!strcmp (extname, "DVO_STARPAR")) { 708 starpar = gfits_table_get_StarPar (ftable, Nstarpar, NULL );785 starpar = gfits_table_get_StarPar (ftable, Nstarpar, NULL, &nativeBytes); 709 786 if (!starpar) { 710 787 fprintf (stderr, "ERROR: failed to read starpar\n"); … … 738 815 739 816 // StarParToFtable needs the Average since old formats stored starpar.dR,dD only 740 int StarParToFtable (FTable *ftable, StarPar *starpar, off_t Nstarpar, char format) {817 int StarParToFtable (FTable *ftable, StarPar *starpar, off_t Nstarpar, DVOCatFormat format, int swapFromNative) { 741 818 742 819 # define FORMAT_CASE(FORMAT, TYPE) \ … … 744 821 StarPar_##TYPE *tmpStarPar; \ 745 822 tmpStarPar = StarParInternalTo_##TYPE (starpar, Nstarpar); \ 746 gfits_table_set_StarPar_##TYPE (ftable, tmpStarPar, Nstarpar); \823 gfits_table_set_StarPar_##TYPE (ftable, tmpStarPar, Nstarpar, swapFromNative); \ 747 824 free (tmpStarPar); \ 748 825 break; } … … 751 828 switch (format) { 752 829 case DVO_FORMAT_INTERNAL: { 753 gfits_table_set_StarPar (ftable, starpar, Nstarpar );830 gfits_table_set_StarPar (ftable, starpar, Nstarpar, swapFromNative); 754 831 break; } 755 832 … … 776 853 } 777 854 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 char extname[80]; 861 862 /* convert to the internal format */ 863 if (!gfits_scan (ftable[0].header, "EXTNAME", "%s", 1, extname)) { 864 fprintf (stderr, "EXTNAME missing for galphot table\n"); 865 return (FALSE); 866 } 867 868 # define SKIPPING_FORMAT(NAME, FORMAT, TYPE) \ 869 if (!strcmp (extname, NAME)) { \ 870 fprintf (stderr, "ERROR: format %s not defined for galphot, skipping\n", NAME); \ 871 *Ngalphot = 0; \ 872 return NULL; \ 873 } 874 875 # define CONVERT_FORMAT(NAME, FORMAT, TYPE) \ 876 if (!strcmp (extname, NAME)) { \ 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 exit (2); \ 882 } \ 883 galphot = GalPhot_##TYPE##_ToInternal (tmpGalPhot, *Ngalphot); \ 884 free (tmpGalPhot); \ 885 *format = DVO_FORMAT_##FORMAT; \ 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 exit (2); 893 } 894 *format = DVO_FORMAT_INTERNAL; 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 # undef CONVERT_FORMAT 912 # undef SKIPPING_FORMAT 913 914 fprintf (stderr, "table format unknown: %s\n", extname); 915 916 *Ngalphot = 0; 917 return (NULL); 918 } 919 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 923 # define FORMAT_CASE(FORMAT, TYPE) \ 924 case DVO_FORMAT_##FORMAT: { \ 925 GalPhot_##TYPE *tmpGalPhot; \ 926 tmpGalPhot = GalPhotInternalTo_##TYPE (galphot, Ngalphot); \ 927 gfits_table_set_GalPhot_##TYPE (ftable, tmpGalPhot, Ngalphot, swapFromNative); \ 928 free (tmpGalPhot); \ 929 break; } 930 931 /* convert from the internal format */ 932 switch (format) { 933 case DVO_FORMAT_INTERNAL: { 934 gfits_table_set_GalPhot (ftable, galphot, Ngalphot, swapFromNative); 935 break; } 936 937 // FORMAT_CASE (PS1_REF, PS1_REF); 938 // FORMAT_CASE (ELIXIR, Elixir); 939 // FORMAT_CASE (LONEOS, Loneos); 940 // FORMAT_CASE (PANSTARRS_DEV_0, Panstarrs_DEV_0); 941 // FORMAT_CASE (PANSTARRS_DEV_1, Panstarrs_DEV_1); 942 // FORMAT_CASE (PS1_DEV_1, PS1_DEV_1); 943 // FORMAT_CASE (PS1_DEV_2, PS1_DEV_2); 944 // FORMAT_CASE (PS1_V1, PS1_V1); 945 // FORMAT_CASE (PS1_V2, PS1_V2); 946 // FORMAT_CASE (PS1_V3, PS1_V3); 947 // FORMAT_CASE (PS1_V4, PS1_V4); 948 FORMAT_CASE (PS1_V5, PS1_V5); 949 # undef FORMAT_CASE 950 951 default: 952 fprintf (stderr, "table format unknown (galphot)\n"); 953 return (FALSE); 954 } 955 return (TRUE); 956 } 957 778 958 /*** Image Conversions ***/ 779 959 780 960 // I have loaded the disk db table and now I want to convert to the internal format 781 961 // (Image structure), but I onyl 782 int FtableToImage (FTable *ftable, Header *theader, char*format) {962 int FtableToImage (FTable *ftable, Header *theader, DVOCatFormat *format) { 783 963 784 964 off_t Nimage; … … 788 968 if (*format == DVO_FORMAT_ELIXIR) { // special case for ELIXIR 789 969 Image_Elixir *tmpimage; 790 tmpimage = gfits_table_get_Image_Elixir (ftable, &Nimage, NULL );970 tmpimage = gfits_table_get_Image_Elixir (ftable, &Nimage, NULL, NULL); 791 971 if (!tmpimage) { 792 972 fprintf (stderr, "ERROR: failed to read images\n"); … … 814 994 Image_##TYPE *tmpimage; \ 815 995 *format = DVO_FORMAT_##FORMAT; \ 816 tmpimage = gfits_table_get_Image_##TYPE (ftable, &Nimage, NULL ); \996 tmpimage = gfits_table_get_Image_##TYPE (ftable, &Nimage, NULL, NULL); \ 817 997 if (!tmpimage) { \ 818 998 fprintf (stderr, "ERROR: failed to read images\n"); \ … … 849 1029 } 850 1030 851 int ImageToFtable (FTable *ftable, Header *theader, charformat) {1031 int ImageToFtable (FTable *ftable, Header *theader, DVOCatFormat format) { 852 1032 853 1033 off_t Nimage; … … 860 1040 tmpImage = ImageInternalTo_##TYPE ((Image *) ftable[0].buffer, Nimage); \ 861 1041 free (ftable[0].buffer); \ 862 gfits_table_set_Image_##TYPE (ftable, tmpImage, Nimage ); \1042 gfits_table_set_Image_##TYPE (ftable, tmpImage, Nimage, TRUE); \ 863 1043 free (tmpImage); \ 864 1044 break; } … … 889 1069 } 890 1070 891 int ImageToVtable (VTable *vtable, Header *theader, charformat) {1071 int ImageToVtable (VTable *vtable, Header *theader, DVOCatFormat format) { 892 1072 893 1073 off_t i, Nrow, Nimage; -
trunk/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_2.c
r37807 r38441 118 118 out[i].Nmeasure = in[i].Nmeasure; 119 119 out[i].Nmissing = in[i].Nmissing; 120 out[i].N extend= 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].N extend;154 out[i].Nextend = in[i].Ngalphot; 155 155 out[i].measureOffset = in[i].measureOffset; 156 156 out[i].missingOffset = in[i].missingOffset; -
trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V1.c
r37807 r38441 138 138 out[i].Nmeasure = in[i].Nmeasure; 139 139 out[i].Nmissing = in[i].Nmissing; 140 out[i].N extend = in[i].Nextend;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].N extend = in[i].Nextend;175 out[i].Ngalphot = in[i].Ngalphot; 176 176 out[i].measureOffset = in[i].measureOffset; 177 177 out[i].missingOffset = in[i].missingOffset; -
trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V2.c
r37807 r38441 143 143 out[i].Nmeasure = in[i].Nmeasure; 144 144 out[i].Nmissing = in[i].Nmissing; 145 out[i].N extend = in[i].Nextend;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].N extend = in[i].Nextend;184 out[i].Ngalphot = in[i].Ngalphot; 185 185 out[i].measureOffset = in[i].measureOffset; 186 186 out[i].missingOffset = in[i].missingOffset; -
trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V3.c
r37807 r38441 143 143 out[i].Nmeasure = in[i].Nmeasure; 144 144 out[i].Nmissing = in[i].Nmissing; 145 out[i].N extend = in[i].Nextend;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].N extend = in[i].Nextend;186 out[i].Ngalphot = in[i].Ngalphot; 187 187 out[i].measureOffset = in[i].measureOffset; 188 188 out[i].missingOffset = in[i].missingOffset; -
trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V4.c
r37807 r38441 164 164 out[i].Nmeasure = in[i].Nmeasure; 165 165 out[i].Nmissing = in[i].Nmissing; 166 out[i].N extend = in[i].Nextend;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].N extend = in[i].Nextend;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].N extend = in[i].Nextend;692 out[i].Ngalphot = in[i].Ngalphot; 693 693 out[i].measureOffset = in[i].measureOffset; 694 694 out[i].missingOffset = in[i].missingOffset; -
trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V5.c
r38153 r38441 196 196 out[i].Nlensobj = in[i].Nlensobj; 197 197 out[i].Nstarpar = in[i].Nstarpar; 198 out[i].N extend = in[i].Nextend;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]. extendOffset = in[i].extendOffset;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].N extend = in[i].Nextend;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]. extendOffset = in[i].extendOffset;273 out[i].galphotOffset = in[i].galphotOffset; 274 274 275 275 out[i].refColorBlue = in[i].refColorBlue; … … 975 975 out[i].objID = in[i].objID ; 976 976 out[i].catID = in[i].catID ; 977 } 978 return (out); 979 } 980 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 991 out[i].Xfit = in[i].Xfit; 992 out[i]. Yfit = in[i]. Yfit; 993 out[i]. mag = in[i]. mag; 994 out[i]. magErr = in[i]. magErr; 995 out[i]. majorAxis = in[i]. majorAxis; 996 out[i]. minorAxis = in[i]. minorAxis; 997 out[i]. majorAxisErr = in[i]. majorAxisErr; 998 out[i]. minorAxisErr = in[i]. minorAxisErr; 999 out[i]. theta = in[i]. theta; 1000 out[i]. theta_err = in[i]. theta_err; 1001 out[i]. index = in[i]. index; 1002 out[i]. chisq = in[i]. chisq; 1003 out[i]. Npix = in[i]. Npix; 1004 out[i]. objID = in[i]. objID; 1005 out[i]. catID = in[i]. catID; 1006 out[i]. detID = in[i]. detID; 1007 out[i]. imageID = in[i]. imageID; 1008 out[i]. photcode = in[i]. photcode; 1009 out[i]. modelType = in[i]. modelType; 1010 } 1011 return (out); 1012 } 1013 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 1021 for (i = 0; i < Nvalues; i++) { 1022 out[i].Xfit = in[i].Xfit; 1023 out[i].Yfit = in[i].Yfit; 1024 out[i].mag = in[i].mag; 1025 out[i].magErr = in[i].magErr; 1026 out[i].majorAxis = in[i].majorAxis; 1027 out[i].minorAxis = in[i].minorAxis; 1028 out[i].majorAxisErr = in[i].majorAxisErr; 1029 out[i].minorAxisErr = in[i].minorAxisErr; 1030 out[i].theta = in[i].theta; 1031 out[i].theta_err = in[i].theta_err; 1032 out[i].index = in[i].index; 1033 out[i].chisq = in[i].chisq; 1034 out[i].Npix = in[i].Npix; 1035 out[i].objID = in[i].objID; 1036 out[i].catID = in[i].catID; 1037 out[i].detID = in[i].detID; 1038 out[i].imageID = in[i].imageID; 1039 out[i].photcode = in[i].photcode; 1040 out[i].modelType = in[i].modelType; 977 1041 } 978 1042 return (out); … … 1234 1298 out[i].Nlensing = in[i].Nlensing; 1235 1299 out[i].Nlensobj = in[i].Nlensobj; 1236 out[i].N extend = in[i].Nextend;1300 out[i].Ngalphot = in[i].Ngalphot; 1237 1301 1238 1302 out[i].measureOffset = in[i].measureOffset; … … 1241 1305 out[i].lensobjOffset = in[i].lensobjOffset; 1242 1306 out[i].starparOffset = in[i].starparOffset; 1243 out[i]. extendOffset = in[i].extendOffset;1307 out[i].galphotOffset = in[i].galphotOffset; 1244 1308 1245 1309 out[i].refColorBlue = in[i].refColorBlue; … … 1302 1366 SWAP_BYTE (110); // NLENSING 1303 1367 SWAP_BYTE (112); // NLENSOBJ 1304 SWAP_BYTE (114); // N EXTEND1368 SWAP_BYTE (114); // NGALPHOT 1305 1369 SWAP_WORD (116); // OFF_MEASURE 1306 1370 SWAP_WORD (120); // OFF_MISSING 1307 1371 SWAP_WORD (124); // OFF_LENSING 1308 1372 SWAP_WORD (128); // OFF_LENSOBJ 1309 SWAP_WORD (132); // OFF_ EXTEND1373 SWAP_WORD (132); // OFF_GALPHOT 1310 1374 SWAP_WORD (136); // OFF_PARAMS 1311 1375 SWAP_WORD (140); // REF_COLOR_BLUE -
trunk/Ohana/src/libdvo/src/dvo_image.c
r37807 r38441 19 19 db[0].lockstate = lockstate; 20 20 db[0].timeout = timeout; 21 gfits_db_init (db);22 21 23 22 if (!gfits_db_lock (db, filename)) { … … 89 88 // so when we later do a gfits_copy_ftable, we stomp on bad memory 90 89 FtableToImage (&db[0].ftable, &db[0].theader, &db[0].format); 91 db[0].swapped = TRUE; /* table has internal byte-order */ 90 db[0].nativeOrder = TRUE; /* table has internal byte-order */ 91 db[0].scaledValue = TRUE; /* table has internal byte-order */ 92 92 return (TRUE); 93 93 } … … 100 100 /* convert from internal to requested external format */ 101 101 ImageToFtable (&db[0].ftable, &db[0].theader, db[0].format); 102 db[0].swapped = FALSE; 102 db[0].nativeOrder = FALSE; 103 db[0].scaledValue = FALSE; 103 104 104 105 /* write data in appropriate mode */ … … 149 150 /* theader is modified to match output format */ 150 151 ImageToVtable (&db[0].vtable, &db[0].theader, db[0].format); 151 db[0].swapped = FALSE; 152 db[0].scaledValue = FALSE; 153 db[0].nativeOrder = FALSE; 152 154 153 155 /* write data in appropriate mode */ … … 363 365 364 366 /* return internal structure representation */ 365 Image *gfits_table_get_Image (FTable *ftable, off_t *Ndata, char *s wapped) {367 Image *gfits_table_get_Image (FTable *ftable, off_t *Ndata, char *scaledValue, char *nativeOrder) { 366 368 367 369 int Ncols; … … 377 379 data = (Image *) ftable[0].buffer; 378 380 379 if (!swapped) { 380 myAbort ("invalid to call this without suppying 'swapped'"); 381 } 382 if (*swapped == FALSE) { 383 myAbort ("invalid for table to be swapped"); 381 if (!scaledValue) { 382 myAbort ("invalid to call this without suppying 'scaledValue'"); 383 } 384 if (*scaledValue == FALSE) { 385 myAbort ("invalid for table NOT to be scaledValue"); 386 } 387 if (!nativeOrder) { 388 myAbort ("invalid to call this without suppying 'nativeOrder'"); 389 } 390 if (*nativeOrder == FALSE) { 391 myAbort ("invalid for table NOT to be nativeOrder"); 384 392 } 385 393 -
trunk/Ohana/src/libdvo/src/dvo_image_raw.c
r37807 r38441 107 107 db[0].theader.Naxis[1] = Nimage; 108 108 db[0].ftable.datasize = gfits_data_size (&db[0].theader); 109 db[0].swapped = FALSE; /* table does not have internal byte-order */ 109 110 db[0].nativeOrder = FALSE; /* table does not have internal byte-order */ 111 db[0].scaledValue = FALSE; /* table does not have internal byte-order */ 110 112 return (TRUE); 111 113 } -
trunk/Ohana/src/libdvo/src/dvo_util.c
r37807 r38441 127 127 } 128 128 129 dvoConfig->images = gfits_table_get_Image (&dvoConfig->imageDB.ftable, &dvoConfig->nImages, &dvoConfig->imageDB.s wapped);129 dvoConfig->images = gfits_table_get_Image (&dvoConfig->imageDB.ftable, &dvoConfig->nImages, &dvoConfig->imageDB.scaledValue, &dvoConfig->imageDB.nativeOrder); 130 130 if (!dvoConfig->images) { 131 131 fprintf (stderr, "problem loading images\n"); … … 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 -
trunk/Ohana/src/libdvo/src/fits_db.c
r35755 r38441 6 6 db[0].f = NULL; 7 7 db[0].filename = NULL; 8 db[0].dbstate = 0; 9 db[0].lockstate = 0; 10 db[0].mode = 0; 11 db[0].format = 0; 12 db[0].virtual = 0; 13 db[0].nativeOrder = 0; 14 db[0].scaledValue = 0; 8 15 9 # if (1)10 16 gfits_init_header (&db->header); 11 17 gfits_init_matrix (&db->matrix); 12 18 gfits_init_header (&db->theader); 13 gfits_init_table (&db->ftable);19 gfits_init_table (&db->ftable); 14 20 db->ftable.header = &db->theader; 15 21 gfits_init_vtable (&db->vtable); 16 # else17 db[0].header.buffer = NULL;18 db[0].matrix.buffer = NULL;19 db[0].theader.buffer = NULL;20 db[0].ftable.buffer = NULL;21 db[0].ftable.header = &db[0].theader;22 db[0].vtable.header = NULL;23 db[0].vtable.buffer = NULL;24 db[0].vtable.row = NULL;25 # endif26 22 return (TRUE); 27 23 } … … 97 93 return (FALSE); 98 94 } 99 db[0].swapped = FALSE; /* table does not have internal byte-order */ 95 db[0].nativeOrder = FALSE; /* table does not have internal byte-order */ 96 db[0].scaledValue = FALSE; /* table has not been scaled by BZERO,BSCALE */ 100 97 return (TRUE); 101 98 } -
trunk/Ohana/src/libdvo/src/flatcorr_io.c
r37807 r38441 49 49 return (NULL); 50 50 } 51 flatcorrTable->image = gfits_table_get_FlatCorrectionImage (&ftable, &flatcorrTable->Nimage, NULL );51 flatcorrTable->image = gfits_table_get_FlatCorrectionImage (&ftable, &flatcorrTable->Nimage, NULL, NULL); 52 52 if (!flatcorrTable->image) { 53 53 fprintf (stderr, "ERROR: failed to read Flat Correction Images\n"); … … 64 64 return (NULL); 65 65 } 66 flatcorrTable->corr = gfits_table_get_FlatCorrection (&ftable, &flatcorrTable->Ncorr, NULL );66 flatcorrTable->corr = gfits_table_get_FlatCorrection (&ftable, &flatcorrTable->Ncorr, NULL, NULL); 67 67 if (!flatcorrTable->corr) { 68 68 fprintf (stderr, "ERROR: failed to read Flat Corrections\n"); … … 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 } … … 161 161 162 162 ftableImage.header = &theaderImage; 163 gfits_table_set_FlatCorrectionImage (&ftableImage, image, flatcorrTable->Nimage );163 gfits_table_set_FlatCorrectionImage (&ftableImage, image, flatcorrTable->Nimage, TRUE); 164 164 165 165 ftableCorr.header = &theaderCorr; 166 gfits_table_set_FlatCorrection (&ftableCorr, corr, flatcorrTable->Ncorr );166 gfits_table_set_FlatCorrection (&ftableCorr, corr, flatcorrTable->Ncorr, TRUE); 167 167 168 168 f = fopen (filename, "w"); -
trunk/Ohana/src/libdvo/src/skyregion_io.c
r36833 r38441 40 40 ALLOCATE (skytable, SkyTable, 1); 41 41 memset (skytable->hosts, 0, 80); 42 skytable[0].regions = gfits_table_get_SkyRegion (&ftable, &skytable[0].Nregions, NULL );42 skytable[0].regions = gfits_table_get_SkyRegion (&ftable, &skytable[0].Nregions, NULL, NULL); 43 43 if (!skytable[0].regions) { 44 44 fprintf (stderr, "ERROR: failed to read sky regions\n"); … … 99 99 gfits_print (&header, "HOSTS", "%s", 1, skytable->hosts); 100 100 101 gfits_table_set_SkyRegion (&ftable, skytable[0].regions, skytable[0].Nregions );101 gfits_table_set_SkyRegion (&ftable, skytable[0].regions, skytable[0].Nregions, TRUE); 102 102 103 103 f = fopen (filename, "w");
Note:
See TracChangeset
for help on using the changeset viewer.
