Changeset 39411 for branches/eam_branches/ohana.20160226/src/libdvo
- Timestamp:
- Feb 27, 2016, 8:59:21 AM (10 years ago)
- Location:
- branches/eam_branches/ohana.20160226/src/libdvo
- Files:
-
- 8 edited
-
include/dvo_util.h (modified) (2 diffs)
-
include/dvodb.h (modified) (1 diff)
-
src/AstromOffsetMapUtils.c (modified) (1 diff)
-
src/ImageOps.c (modified) (1 diff)
-
src/dbExtractImages.c (modified) (1 diff)
-
src/db_utils.c (modified) (1 diff)
-
src/dvo_util.c (modified) (2 diffs)
-
src/match_image.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ohana.20160226/src/libdvo/include/dvo_util.h
r27435 r39411 61 61 // There is no need to release memory pointed to by return value. 62 62 // It will be freed when dvoConfigFree() is invoked. 63 Image *dvoImageByExternID(dvoConfig *dvoConfig, int sourceID,int externID);63 Image *dvoImageByExternID(dvoConfig *dvoConfig, unsigned short sourceID, unsigned int externID); 64 64 65 65 // Loads the sky table for the database. … … 72 72 // return a list of detections from a particular image id 73 73 // Use dvoFree() to free the memory pointed to by results 74 off_t dvoGetDetections(SkyList *skylist, int imageID, dvoDetection **results,int *pMaxDetID);74 off_t dvoGetDetections(SkyList *skylist, unsigned int imageID, dvoDetection **results, unsigned int *pMaxDetID); 75 75 76 76 // free memory returned by various dvo util functions -
branches/eam_branches/ohana.20160226/src/libdvo/include/dvodb.h
r39308 r39411 490 490 double TimeValue (time_t time, time_t TimeReference, int TimeFormat); 491 491 492 void image_subset PROTO((Image *image, off_t Nimage, off_t **Subset, off_t *Nsubset, SkyRegionSelection *selection, unsigned long inttzero, double trange, int TimeSelect));493 off_t match_image_subset PROTO((Image *image, off_t *subset, off_t Nsubset, unsigned intT, short int S));492 void image_subset PROTO((Image *image, off_t Nimage, off_t **Subset, off_t *Nsubset, SkyRegionSelection *selection, e_time tzero, double trange, int TimeSelect)); 493 off_t match_image_subset PROTO((Image *image, off_t *subset, off_t Nsubset, e_time T, short int S)); 494 494 495 495 // dvo DB field functions -
branches/eam_branches/ohana.20160226/src/libdvo/src/AstromOffsetMapUtils.c
r39409 r39411 11 11 off_t i; 12 12 for (i = 0; i < Nimages; i++) { 13 if (images[i].imageID < 0) continue;13 // if (images[i].imageID < 0) continue; 14 14 15 15 unsigned int imageID = images[i].imageID; -
branches/eam_branches/ohana.20160226/src/libdvo/src/ImageOps.c
r39347 r39411 5 5 void image_subset (Image *image, off_t Nimage, off_t **Subset, off_t *Nsubset, 6 6 SkyRegionSelection *selection, 7 unsigned long inttzero, double trange, int TimeSelect)7 e_time tzero, double trange, int TimeSelect) 8 8 { 9 9 -
branches/eam_branches/ohana.20160226/src/libdvo/src/dbExtractImages.c
r39308 r39411 55 55 /* return image.field based on the selection */ 56 56 dbValue dbExtractImages (Image *image, off_t Nimage, off_t N, dbField *field) { 57 OHANA_UNUSED_PARAM(Nimage); // XXX: not sure why this is supplied 57 58 58 59 double x, y; -
branches/eam_branches/ohana.20160226/src/libdvo/src/db_utils.c
r31636 r39411 10 10 // by default, no graphdata 11 11 int GetGraphdata(Graphdata *graph, int *kapa, char *name) { 12 OHANA_UNUSED_PARAM(graph); 13 OHANA_UNUSED_PARAM(kapa); 14 OHANA_UNUSED_PARAM(name); 12 15 return FALSE; 13 16 } -
branches/eam_branches/ohana.20160226/src/libdvo/src/dvo_util.c
r38553 r39411 1 #include <dvo_util.h> 2 1 3 // dvo_util.c 2 4 // This file contains a set of functions that provide simple read-only access to a dvo database 3 5 // 4 #include <dvo_util.h> 5 6 void dvoFree(void *ptr) 7 { 8 if (ptr) { 9 FREE(ptr); 10 } 11 } 12 13 dvoConfig * dvoConfigAlloc() 14 { 15 dvoConfig *config; 16 17 ALLOCATE(config, dvoConfig, 1); 18 19 memset(config, 0, sizeof(dvoConfig)); 20 return config; 21 } 22 23 void dvoConfigFree(dvoConfig *dvoConfig) 24 { 25 if (dvoConfig) { 26 if (dvoConfig->skyTable) { 27 SkyTableFree(dvoConfig->skyTable); 28 } 29 if (dvoConfig->images) { 30 gfits_db_free(&dvoConfig->imageDB); 31 } 32 FREE(dvoConfig); 33 } 34 } 35 36 dvoConfig *dvoConfigRead(int *argc, char **argv) 37 { 38 dvoConfig *dvoConfig = dvoConfigAlloc(); 39 char MasterPhotcodeFile[256]; 40 41 char *file = SelectConfigFile(argc, argv, "ptolemy"); 42 char *configData = LoadConfigFile(file); 43 if (!configData) { 44 fprintf(stderr, "ERROR: can't find configuration file %s\n", file); 45 if (file) { 46 FREE(file); 47 } 48 exit(3); 49 } 50 FREE (file); 51 file = NULL; 52 53 ScanConfig (configData, "GSCFILE", "%s", 0, dvoConfig->gscfile); 54 ScanConfig (configData, "CATDIR", "%s", 0, dvoConfig->catdir); 55 ScanConfig (configData, "CATMODE", "%s", 0, dvoConfig->catmode); 56 ScanConfig (configData, "CATFORMAT", "%s", 0, dvoConfig->catformat); 57 ScanConfig (configData, "PHOTCODE_FILE", "%s", 0, MasterPhotcodeFile); 58 if (!ScanConfig (configData, "SKY_DEPTH", "%d", 0, &dvoConfig->skyDepth)) { 59 dvoConfig->skyDepth = 2; 60 } 61 if (!ScanConfig (configData, "SKY_TABLE", "%s", 0, dvoConfig->skyTableFile)) { 62 dvoConfig->skyTableFile[0] = 0; 63 } 64 65 snprintf (dvoConfig->photcodeFile, 256, "%s/Photcodes.dat", dvoConfig->catdir); 66 if (!LoadPhotcodes (dvoConfig->photcodeFile, MasterPhotcodeFile, FALSE)) { 67 fprintf (stderr, "error loading photcode table %s or master file %s\n", 68 dvoConfig->photcodeFile, MasterPhotcodeFile); 69 exit (1); 70 } 71 72 double zero_point; 73 ScanConfig (configData, "ZERO_PT", "%lf", 0, &zero_point); 74 SetZeroPoint (zero_point); 6 7 void dvoFree(void *ptr) { 8 if (ptr) { 9 FREE(ptr); 10 } 11 } 12 13 dvoConfig *dvoConfigAlloc() { 14 dvoConfig *config; 15 16 ALLOCATE(config, dvoConfig, 1); 17 18 memset(config, 0, sizeof(dvoConfig)); 19 return config; 20 } 21 22 void dvoConfigFree(dvoConfig *dvoConfig) { 23 if (dvoConfig) { 24 if (dvoConfig->skyTable) { 25 SkyTableFree(dvoConfig->skyTable); 26 } 27 if (dvoConfig->images) { 28 gfits_db_free(&dvoConfig->imageDB); 29 } 30 FREE(dvoConfig); 31 } 32 } 33 34 dvoConfig *dvoConfigRead(int *argc, char **argv) { 35 dvoConfig *dvoConfig = dvoConfigAlloc(); 36 char MasterPhotcodeFile[256]; 37 38 char *file = SelectConfigFile(argc, argv, "ptolemy"); 39 char *configData = LoadConfigFile(file); 40 if (!configData) { 41 fprintf(stderr, "ERROR: can't find configuration file %s\n", file); 42 if (file) { 43 FREE(file); 44 } 45 exit(3); 46 } 47 FREE (file); 48 file = NULL; 49 50 ScanConfig (configData, "GSCFILE", "%s", 0, dvoConfig->gscfile); 51 ScanConfig (configData, "CATDIR", "%s", 0, dvoConfig->catdir); 52 ScanConfig (configData, "CATMODE", "%s", 0, dvoConfig->catmode); 53 ScanConfig (configData, "CATFORMAT", "%s", 0, dvoConfig->catformat); 54 ScanConfig (configData, "PHOTCODE_FILE", "%s", 0, MasterPhotcodeFile); 55 if (!ScanConfig (configData, "SKY_DEPTH", "%d", 0, &dvoConfig->skyDepth)) { 56 dvoConfig->skyDepth = 2; 57 } 58 if (!ScanConfig (configData, "SKY_TABLE", "%s", 0, dvoConfig->skyTableFile)) { 59 dvoConfig->skyTableFile[0] = 0; 60 } 61 62 snprintf (dvoConfig->photcodeFile, 256, "%s/Photcodes.dat", dvoConfig->catdir); 63 if (!LoadPhotcodes (dvoConfig->photcodeFile, MasterPhotcodeFile, FALSE)) { 64 fprintf (stderr, "error loading photcode table %s or master file %s\n", 65 dvoConfig->photcodeFile, MasterPhotcodeFile); 66 exit (1); 67 } 68 69 double zero_point; 70 ScanConfig (configData, "ZERO_PT", "%lf", 0, &zero_point); 71 SetZeroPoint (zero_point); 75 72 76 73 #if (DVO_UTIL_READ_CAMERA_CONFIG) 77 // at one point I thought reading the camera configuration might be useful78 // but we didn't need it79 if (!ScanConfig (configData, "CAMERA_CONFIG", "%s", 0, dvoConfig->cameraConfig)) {80 fprintf (stderr, "can't find CAMERA_CONFIG in configuration\n");81 exit (3);82 }83 char * cameraConfigData = LoadConfigFile(dvoConfig->cameraConfig);84 if (!cameraConfigData) {85 fprintf (stderr, "failed to load %s\n", dvoConfig->cameraConfig);86 exit (3);87 }88 89 ScanConfig (cameraConfigData, "NCCD", "%d", 1, &dvoConfig->nCCD);74 // at one point I thought reading the camera configuration might be useful 75 // but we didn't need it 76 if (!ScanConfig (configData, "CAMERA_CONFIG", "%s", 0, dvoConfig->cameraConfig)) { 77 fprintf (stderr, "can't find CAMERA_CONFIG in configuration\n"); 78 exit (3); 79 } 80 char * cameraConfigData = LoadConfigFile(dvoConfig->cameraConfig); 81 if (!cameraConfigData) { 82 fprintf (stderr, "failed to load %s\n", dvoConfig->cameraConfig); 83 exit (3); 84 } 85 86 ScanConfig (cameraConfigData, "NCCD", "%d", 1, &dvoConfig->nCCD); 90 87 #endif 91 88 92 return (dvoConfig); 93 } 94 95 int dvoLoadImages(dvoConfig *dvoConfig) 96 { 97 if (dvoConfig->images) { 98 return TRUE; 99 } 100 101 char filename[256]; 89 return (dvoConfig); 90 } 91 92 int dvoLoadImages(dvoConfig *dvoConfig) { 93 if (dvoConfig->images) { 94 return TRUE; 95 } 96 97 char filename[256]; 102 98 103 snprintf (filename, 256, "%s/Images.dat", dvoConfig->catdir); 104 105 gfits_db_init (&dvoConfig->imageDB); 106 dvoConfig->imageDB.lockstate = LCK_SOFT; 107 dvoConfig->imageDB.timeout = 120.0; 108 109 if (!gfits_db_lock (&dvoConfig->imageDB, filename)) { 110 fprintf (stderr, "error opening image catalog %s (1)\n", filename); 111 return (FALSE); 112 } 113 114 if (dvoConfig->imageDB.dbstate == LCK_EMPTY) { 115 fprintf (stderr, "note: image catalog is empty\n"); 116 ALLOCATE (dvoConfig->images, Image, 1); 117 dvoConfig->nImages = 1; 118 return (TRUE); 119 } 120 121 int status = dvo_image_load (&dvoConfig->imageDB, TRUE, FALSE); 122 gfits_db_close (&dvoConfig->imageDB); 123 124 if (!status) { 125 fprintf (stderr, "problem loading image database table\n"); 126 return (FALSE); 127 } 128 129 dvoConfig->images = gfits_table_get_Image (&dvoConfig->imageDB.ftable, &dvoConfig->nImages, &dvoConfig->imageDB.scaledValue, &dvoConfig->imageDB.nativeOrder); 130 if (!dvoConfig->images) { 131 fprintf (stderr, "problem loading images\n"); 132 return (FALSE); 133 } 134 99 snprintf (filename, 256, "%s/Images.dat", dvoConfig->catdir); 100 101 gfits_db_init (&dvoConfig->imageDB); 102 dvoConfig->imageDB.lockstate = LCK_SOFT; 103 dvoConfig->imageDB.timeout = 120.0; 104 105 if (!gfits_db_lock (&dvoConfig->imageDB, filename)) { 106 fprintf (stderr, "error opening image catalog %s (1)\n", filename); 107 return (FALSE); 108 } 109 110 if (dvoConfig->imageDB.dbstate == LCK_EMPTY) { 111 fprintf (stderr, "note: image catalog is empty\n"); 112 ALLOCATE (dvoConfig->images, Image, 1); 113 dvoConfig->nImages = 1; 135 114 return (TRUE); 136 } 137 Image *dvoImageByExternID(dvoConfig *dvoConfig, int sourceID, int externID) 138 { 139 int i; 115 } 116 117 int status = dvo_image_load (&dvoConfig->imageDB, TRUE, FALSE); 118 gfits_db_close (&dvoConfig->imageDB); 119 120 if (!status) { 121 fprintf (stderr, "problem loading image database table\n"); 122 return (FALSE); 123 } 124 125 dvoConfig->images = gfits_table_get_Image (&dvoConfig->imageDB.ftable, &dvoConfig->nImages, &dvoConfig->imageDB.scaledValue, &dvoConfig->imageDB.nativeOrder); 126 if (!dvoConfig->images) { 127 fprintf (stderr, "problem loading images\n"); 128 return (FALSE); 129 } 130 131 return (TRUE); 132 } 133 134 Image *dvoImageByExternID(dvoConfig *dvoConfig, unsigned short sourceID, unsigned int externID) { 135 136 unsigned int i; 140 137 141 if (!dvoLoadImages(dvoConfig)) return NULL; 142 143 for (i=0; i<dvoConfig->nImages; i++) { 144 Image *image = dvoConfig->images + i; 145 if ((image->externID == externID) && (image->sourceID == sourceID)) { 146 BuildChipMatch(dvoConfig->images, dvoConfig->nImages); 147 return image; 148 } 149 } 150 fprintf(stderr, "can't find image for %d %d\n", sourceID, externID); 151 return NULL; 152 } 153 154 SkyTable *dvoLoadSkyTable(dvoConfig *dvoConfig) 155 { 156 if (!dvoConfig->skyTable) { 157 char *skyfile = ""; 158 dvoConfig->skyTable = SkyTableLoadOptimal(dvoConfig->catdir, skyfile, dvoConfig->gscfile, 159 FALSE, dvoConfig->skyDepth, 0); 160 } 161 162 if (dvoConfig->skyTable == NULL) { 163 fprintf(stderr, "failed to load SkyTable\n"); 164 return NULL; 165 } 166 167 SkyTableSetFilenames(dvoConfig->skyTable, dvoConfig->catdir, "cpt"); 168 169 return dvoConfig->skyTable; 170 } 171 172 SkyList *dvoSkyListByExternID(dvoConfig *dvoConfig, int sourceID, int externID, Image **ppImage) 173 { 174 Image *image = dvoImageByExternID(dvoConfig, sourceID, externID); 175 if (image == NULL) { 176 // fprintf(stderr, "can't find image for %d %d\n", sourceID, externID); 177 return NULL; 178 } 179 180 if (dvoLoadSkyTable(dvoConfig) == NULL) { 181 fprintf(stderr, "failed to load Sky table\n"); 182 return NULL; 183 } 184 SkyList *skylist = SkyListByImage(dvoConfig->skyTable, -1, image); 185 if (!skylist->Nregions) { 186 fprintf(stderr, "failed to find SkyList for image %d %d\n", sourceID, externID); 187 return NULL; 188 } 189 190 *ppImage = image; 191 192 return skylist; 193 } 194 195 off_t dvoGetDetections(SkyList *skylist, int imageID, dvoDetection **results, int *pMaxDetID) 196 { 138 if (!dvoLoadImages(dvoConfig)) return NULL; 139 140 for (i = 0; i < dvoConfig->nImages; i++) { 141 Image *image = dvoConfig->images + i; 142 if ((image->externID == externID) && (image->sourceID == sourceID)) { 143 BuildChipMatch(dvoConfig->images, dvoConfig->nImages); 144 return image; 145 } 146 } 147 fprintf(stderr, "can't find image for %d %d\n", sourceID, externID); 148 return NULL; 149 } 150 151 SkyTable *dvoLoadSkyTable(dvoConfig *dvoConfig) { 152 if (!dvoConfig->skyTable) { 153 char *skyfile = ""; 154 dvoConfig->skyTable = SkyTableLoadOptimal(dvoConfig->catdir, skyfile, dvoConfig->gscfile, 155 FALSE, dvoConfig->skyDepth, 0); 156 } 157 158 if (dvoConfig->skyTable == NULL) { 159 fprintf(stderr, "failed to load SkyTable\n"); 160 return NULL; 161 } 162 163 SkyTableSetFilenames(dvoConfig->skyTable, dvoConfig->catdir, "cpt"); 164 165 return dvoConfig->skyTable; 166 } 167 168 SkyList *dvoSkyListByExternID(dvoConfig *dvoConfig, int sourceID, int externID, Image **ppImage) { 169 Image *image = dvoImageByExternID(dvoConfig, sourceID, externID); 170 if (image == NULL) { 171 // fprintf(stderr, "can't find image for %d %d\n", sourceID, externID); 172 return NULL; 173 } 174 175 if (dvoLoadSkyTable(dvoConfig) == NULL) { 176 fprintf(stderr, "failed to load Sky table\n"); 177 return NULL; 178 } 179 SkyList *skylist = SkyListByImage(dvoConfig->skyTable, -1, image); 180 if (!skylist->Nregions) { 181 fprintf(stderr, "failed to find SkyList for image %d %d\n", sourceID, externID); 182 return NULL; 183 } 184 185 *ppImage = image; 186 187 return skylist; 188 } 189 190 off_t dvoGetDetections(SkyList *skylist, unsigned int imageID, dvoDetection **results, unsigned int *pMaxDetID) { 197 191 int GetMeasures = 1; 198 192 int reg; … … 204 198 *pMaxDetID = -1; 205 199 for (reg=0; reg< skylist->Nregions; reg++) { 206 /* lock, load, unlock catalog */ 207 Catalog catalog; 208 209 dvo_catalog_init (&catalog, TRUE); 210 catalog.filename = skylist->filename[reg]; 211 catalog.catflags = GetMeasures ? DVO_LOAD_AVERAGE | DVO_LOAD_MEASURE | DVO_LOAD_SECFILT : DVO_LOAD_AVERAGE | DVO_LOAD_SECFILT; 212 catalog.Nsecfilt = 0; 213 214 // an error exit status here is a significant error 215 if (!dvo_catalog_open (&catalog, NULL, FALSE, "r")) { 216 fprintf (stderr, "ERROR: failure to open catalog file %s\n", catalog.filename); 217 exit (2); 200 /* lock, load, unlock catalog */ 201 Catalog catalog; 202 203 dvo_catalog_init (&catalog, TRUE); 204 catalog.filename = skylist->filename[reg]; 205 catalog.catflags = GetMeasures ? DVO_LOAD_AVERAGE | DVO_LOAD_MEASURE | DVO_LOAD_SECFILT : DVO_LOAD_AVERAGE | DVO_LOAD_SECFILT; 206 catalog.Nsecfilt = 0; 207 208 // an error exit status here is a significant error 209 if (!dvo_catalog_open (&catalog, NULL, FALSE, "r")) { 210 fprintf (stderr, "ERROR: failure to open catalog file %s\n", catalog.filename); 211 exit (2); 212 } 213 dvo_catalog_unlock (&catalog); 214 215 off_t Nmeasure = catalog.Nmeasure; 216 217 off_t i; 218 for (i=0; i< Nmeasure; i++) { 219 Measure *m = catalog.measure + i; 220 if (m->imageID != imageID) { 221 continue; 218 222 } 219 dvo_catalog_unlock (&catalog); 220 221 off_t Nmeasure = catalog.Nmeasure; 222 223 off_t i; 224 for (i=0; i< Nmeasure; i++) { 225 Measure *m = catalog.measure + i; 226 if (m->imageID != imageID) { 227 continue; 228 } 229 Average *a = catalog.average + m->averef; 223 Average *a = catalog.average + m->averef; 230 224 231 dvoDetection *det = detections + Ndetect;232 233 det->valid = 1;234 det->ave = *a;235 det->meas = *m;225 dvoDetection *det = detections + Ndetect; 226 227 det->valid = 1; 228 det->ave = *a; 229 det->meas = *m; 236 230 #ifdef notdfe 237 det->objID = a->objID;238 det->catID = m->catID;239 det->detID = m->detID;240 det->pspsObjID = a->extID;241 det->pspsDetID = m->extID;231 det->objID = a->objID; 232 det->catID = m->catID; 233 det->detID = m->detID; 234 det->pspsObjID = a->extID; 235 det->pspsDetID = m->extID; 242 236 #endif 243 237 244 if ((int) det->meas.detID > *pMaxDetID) { 245 *pMaxDetID = det->meas.detID; 246 } 247 248 Ndetect++; 249 CHECK_REALLOCATE(detections, dvoDetection, detectionsArrayLength, Ndetect, 1000); 238 if (det->meas.detID > *pMaxDetID) { 239 *pMaxDetID = det->meas.detID; 250 240 } 251 241 252 dvo_catalog_free (&catalog); 242 Ndetect++; 243 CHECK_REALLOCATE(detections, dvoDetection, detectionsArrayLength, Ndetect, 1000); 244 } 245 246 dvo_catalog_free (&catalog); 253 247 } 254 248 size_t NInvalidDetID = 0; 255 249 if (Ndetect) { 256 dvoDetection *sorted; 257 ALLOCATE(sorted, dvoDetection, *pMaxDetID + 1); 258 259 memset(sorted, 0, sizeof(dvoDetection) * *pMaxDetID); 260 off_t i; 261 for (i = 0; i < Ndetect; i++) { 262 263 if (detections[i].meas.detID < 0 || detections[i].meas.detID > (*pMaxDetID + 1)) 264 NInvalidDetID++; 265 else 266 sorted[detections[i].meas.detID] = detections[i]; 267 } 268 *results = sorted; 250 dvoDetection *sorted; 251 ALLOCATE(sorted, dvoDetection, *pMaxDetID + 1); 252 253 memset(sorted, 0, sizeof(dvoDetection) * *pMaxDetID); 254 off_t i; 255 for (i = 0; i < Ndetect; i++) { 256 257 // if (detections[i].meas.detID < 0 || detections[i].meas.detID > (*pMaxDetID + 1)) 258 259 if (detections[i].meas.detID > (*pMaxDetID + 1)) 260 NInvalidDetID++; 261 else 262 sorted[detections[i].meas.detID] = detections[i]; 263 } 264 *results = sorted; 269 265 } else { 270 *results = NULL;266 *results = NULL; 271 267 } 272 268 -
branches/eam_branches/ohana.20160226/src/libdvo/src/match_image.c
r31635 r39411 1 1 # include "dvo.h" 2 2 3 off_t match_image (Image *image, off_t Nimage, unsigned intT, short int S) {3 off_t match_image (Image *image, off_t Nimage, e_time T, short int S) { 4 4 5 5 off_t N, Nlo, Nhi, N1, N2; … … 37 37 } 38 38 39 off_t match_image_subset (Image *image, off_t *subset, off_t Nsubset, unsigned intT, short int S) {39 off_t match_image_subset (Image *image, off_t *subset, off_t Nsubset, e_time T, short int S) { 40 40 41 41 off_t N, Nlo, Nhi, N1, N2;
Note:
See TracChangeset
for help on using the changeset viewer.
