Changeset 35416 for trunk/Ohana/src/libdvo
- Timestamp:
- Apr 19, 2013, 4:31:05 PM (13 years ago)
- Location:
- trunk/Ohana
- Files:
-
- 11 edited
- 2 copied
-
. (modified) (1 prop)
-
src/libdvo/Makefile (modified) (2 diffs)
-
src/libdvo/include/cmf-ps1-dv3.h (copied) (copied from branches/eam_branches/ipp-20130307/Ohana/src/libdvo/include/cmf-ps1-dv3.h )
-
src/libdvo/include/dvo.h (modified) (3 diffs)
-
src/libdvo/include/dvodb.h (modified) (3 diffs)
-
src/libdvo/src/ImageMetadata.c (modified) (10 diffs)
-
src/libdvo/src/ImageMetadataSelection.c (modified) (4 diffs)
-
src/libdvo/src/ImageSelection.c (modified) (1 diff)
-
src/libdvo/src/cmf-ps1-dv3.c (copied) (copied from branches/eam_branches/ipp-20130307/Ohana/src/libdvo/src/cmf-ps1-dv3.c )
-
src/libdvo/src/dbExtractAverages.c (modified) (2 diffs)
-
src/libdvo/src/dbExtractMeasures.c (modified) (7 diffs)
-
src/libdvo/src/dbFields.c (modified) (3 diffs)
-
src/libdvo/src/dvo_catalog.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana
-
trunk/Ohana/src/libdvo/Makefile
r35263 r35416 36 36 $(DESTINC)/ps1_v3_defs.h \ 37 37 $(DESTINC)/ps1_v4_defs.h \ 38 $(DESTINC)/ps1_ref_defs.h 38 $(DESTINC)/ps1_ref_defs.h \ 39 $(DESTINC)/cmf-ps1-dv3.h 39 40 40 41 INCS = $(DEFS) $(DESTINC)/dvo.h $(DESTINC)/autocode.h $(DESTINC)/dvo_util.h $(DESTINC)/dvodb.h $(DESTINC)/libdvo_astro.h $(DESTINC)/convert.h $(DESTINC)/get_graphdata.h … … 84 85 $(SRC)/cmf-ps1-v1-alt.$(ARCH).o \ 85 86 $(SRC)/cmf-ps1-sv1-alt.$(ARCH).o \ 87 $(SRC)/cmf-ps1-dv3.$(ARCH).o \ 86 88 $(SRC)/dvo_util.$(ARCH).o \ 87 89 $(SRC)/dbBooleanCond.$(ARCH).o \ -
trunk/Ohana/src/libdvo/include/dvo.h
r35102 r35416 129 129 ID_MEAS_BLEND_MEAS_X = 0x00001000, // detection is within radius of multiple objects across catalogs 130 130 ID_MEAS_ARTIFACT = 0x00002000, // detection is thought to be non-astronomical 131 ID_MEAS_ UNDEF_5 = 0x00004000, // unused131 ID_MEAS_SYNTH_MAG = 0x00004000, // magnitude is synthetic 132 132 ID_MEAS_PHOTOM_UBERCAL = 0x00008000, // externally-supplied zero point from ubercal analysis 133 133 ID_MEAS_STACK_PRIMARY = 0x00010000, // this stack measurement is in the primary skycell … … 288 288 CMF_PS1_SV1 *gfits_table_get_CMF_PS1_SV1_Alt (FTable *ftable, off_t *Ndata, char *swapped); 289 289 290 // another special case : does not match byte-boundaries 291 # include "cmf-ps1-dv3.h" 292 290 293 typedef struct { 291 294 int Ncode; // number of photcodes … … 717 720 718 721 void dvo_average_init (Average *average); 722 void dvo_averageT_init (AverageTiny *average); 719 723 void dvo_secfilt_init (SecFilt *secfilt); 720 724 void dvo_measure_init (Measure *measure); 725 void dvo_measureT_init (MeasureTiny *measure); 721 726 722 727 # endif // DVO_H -
trunk/Ohana/src/libdvo/include/dvodb.h
r35263 r35416 125 125 MEAS_YFIX, 126 126 MEAS_POS_SYS_ERR, 127 MEAS_XFIELD, 128 MEAS_YFIELD, 127 129 MEAS_XMOSAIC, 128 130 MEAS_YMOSAIC, … … 301 303 double crval1; 302 304 double crval2; 305 float theta; 303 306 unsigned int imageID; 304 307 unsigned int externID; … … 382 385 ImageMetadata *MatchImageMetadataDVO (unsigned int imageID); 383 386 Coords *MatchMosaicMetadata (unsigned int imageID); 387 Coords *MatchFieldMetadata (unsigned int imageID); 384 388 off_t match_image_by_ID (ImageMetadata *image, off_t Nimage, unsigned int ID); 385 389 void sort_image_metadata (ImageMetadata *image, off_t Nimage); -
trunk/Ohana/src/libdvo/src/ImageMetadata.c
r35263 r35416 63 63 GET_COLUMN (crval1, "CRVAL1", double); 64 64 GET_COLUMN (crval2, "CRVAL2", double); 65 GET_COLUMN (theta, "THETA", float); 65 66 GET_COLUMN (Mcal, "MCAL", float); 66 67 GET_COLUMN (secz, "SECZ", float); … … 75 76 image[i].crval1 = crval1[i] ; 76 77 image[i].crval2 = crval2[i] ; 78 image[i].theta = theta[i] ; 77 79 image[i].Mcal = Mcal[i] ; 78 80 image[i].secz = secz[i] ; … … 87 89 free (crval1); 88 90 free (crval2); 91 free (theta); 89 92 free (Mcal); 90 93 free (secz); … … 112 115 FTable ftable; 113 116 117 BuildChipMatch (image, Nimage); 118 114 119 gfits_init_header (&header); 115 120 header.extend = TRUE; … … 124 129 gfits_define_bintable_column (&theader, "D", "CRVAL1", "ra at center", "degrees", 1.0, 0.0); 125 130 gfits_define_bintable_column (&theader, "D", "CRVAL2", "dec at center", "degrees", 1.0, 0.0); 131 gfits_define_bintable_column (&theader, "E", "THETA", "camera rot angle", "degrees", 1.0, 0.0); 126 132 gfits_define_bintable_column (&theader, "E", "MCAL", "zero point offset", "magnitudes", 1.0, 0.0); 127 133 gfits_define_bintable_column (&theader, "E", "SECZ", "airmass", "none", 1.0, 0.0); … … 134 140 unsigned int *imageID, *externID, *expname; 135 141 double *crval1, *crval2; 136 float *Mcal, *Xcenter, *Ycenter, *secz ;142 float *Mcal, *Xcenter, *Ycenter, *secz, *theta; 137 143 138 144 // create intermediate storage arrays … … 142 148 ALLOCATE (crval1, double, Nimage); 143 149 ALLOCATE (crval2, double, Nimage); 150 ALLOCATE (theta, float, Nimage); 144 151 ALLOCATE (Mcal, float, Nimage); 145 152 ALLOCATE (secz, float, Nimage); … … 149 156 // assign the storage arrays 150 157 for (i = 0; i < Nimage; i++) { 158 int Nmosaic = FindMosaicForImage (image, Nimage, i); 159 if (!Nmosaic) continue; 160 Nmosaic --; 151 161 imageID[i] = image[i].imageID; 152 162 externID[i] = image[i].externID; 153 crval1[i] = image[i].coords.crval1; 154 crval2[i] = image[i].coords.crval2; 163 crval1[i] = image[Nmosaic].coords.crval1; 164 crval2[i] = image[Nmosaic].coords.crval2; 165 166 theta[i] = DEG_RAD*atan2(image[Nmosaic].coords.pc1_2, image[Nmosaic].coords.pc1_1); 167 155 168 Mcal[i] = image[i].Mcal; 156 169 secz[i] = image[i].secz; … … 172 185 gfits_set_bintable_column (&theader, &ftable, "CRVAL1", crval1, Nimage); 173 186 gfits_set_bintable_column (&theader, &ftable, "CRVAL2", crval2, Nimage); 187 gfits_set_bintable_column (&theader, &ftable, "THETA", theta, Nimage); 174 188 gfits_set_bintable_column (&theader, &ftable, "MCAL", Mcal, Nimage); 175 189 gfits_set_bintable_column (&theader, &ftable, "SECZ", secz, Nimage); … … 182 196 free (crval1); 183 197 free (crval2); 198 free (theta); 184 199 free (Mcal); 185 200 free (secz); -
trunk/Ohana/src/libdvo/src/ImageMetadataSelection.c
r35263 r35416 5 5 static off_t Nimage = 0; 6 6 static Coords mosaic; 7 static Coords field; 7 8 8 9 /* load images based on parameters and region, etc */ … … 11 12 image = NULL; 12 13 14 /* field defines a frame with 0,0 at the field center, and 1 arcsec / pixel */ 15 field.crpix1 = field.crpix2 = 0.0; 16 field.cdelt1 = field.cdelt2 = 1.0 / 3600; 17 field.pc1_1 = field.pc2_2 = 1.0; 18 field.pc1_2 = field.pc2_1 = 0.0; 19 field.Npolyterms = 0; 20 strcpy (field.ctype, "RA---SIN"); 21 13 22 /* mosaic defines a frame with 0,0 at the mosaic center, and 1 arcsec / pixel */ 14 23 mosaic.crpix1 = mosaic.crpix2 = 0.0; … … 42 51 } 43 52 53 Coords *MatchFieldMetadata (unsigned int imageID) { 54 55 int m; 56 57 m = match_image_by_ID (image, Nimage, imageID); 58 if (m == -1) return (NULL); 59 60 // if WRP, return the image, otherwise return NULL 61 // if (strcmp(&image[m].coords.ctype[4], "-WRP")) return NULL; 62 // return (&image[m].coords); 63 64 field.crval1 = image[m].crval1; 65 field.crval2 = image[m].crval2; 66 return (&field); 67 } 68 44 69 Coords *MatchMosaicMetadata (unsigned int imageID) { 45 70 … … 48 73 m = match_image_by_ID (image, Nimage, imageID); 49 74 if (m == -1) return (NULL); 75 76 // if WRP, return the image, otherwise return NULL 77 // if (strcmp(&image[m].coords.ctype[4], "-WRP")) return NULL; 78 // return (&image[m].coords); 79 50 80 mosaic.crval1 = image[m].crval1; 51 81 mosaic.crval2 = image[m].crval2; 82 83 mosaic.pc1_1 = cos(RAD_DEG*image[m].theta); 84 mosaic.pc1_2 = sin(RAD_DEG*image[m].theta); 85 mosaic.pc2_2 = cos(RAD_DEG*image[m].theta); 86 mosaic.pc2_1 = -sin(RAD_DEG*image[m].theta); 87 52 88 return (&mosaic); 53 89 } -
trunk/Ohana/src/libdvo/src/ImageSelection.c
r35263 r35416 93 93 int m; 94 94 95 // mosaic.crval1 = 0; 96 // mosaic.crval2 = 0; 95 97 m = match_image_subset (image, subset, Nsubset, time, source); 96 98 if (m == -1) return (NULL); 97 mosaic.crval1 = image[m].coords.crval1; 98 mosaic.crval2 = image[m].coords.crval2; 99 return (&mosaic); 99 // mosaic = image[m].coords.crval1; 100 // mosaic = image[m].coords.crval2; 101 102 // if WRP, return the image, otherwise return NULL 103 if (strcmp(&image[m].coords.ctype[4], "-WRP")) return NULL; 104 return (&image[m].coords); 100 105 } -
trunk/Ohana/src/libdvo/src/dbExtractAverages.c
r34844 r35416 141 141 value.Flt = average[0].ChiSqPar; 142 142 break; 143 144 // XXX case AVE_PM_GROUPS: 145 // XXX value.Int = GetProperMotionGroups (average, measure); 146 // XXX break; 143 147 144 148 case AVE_TMEAN: … … 278 282 } 279 283 284 // XXX int GetProperMotionGroups (Average *average, Measure *measure) { 285 // XXX // need the times, excluding ignored detections 286 // XXX // sort the images 287 // XXX for (i = 0; i < Ntimes - 1; i++) { 288 // XXX if (time[i+1] - time[i] < TRANGE) Ngroup ++; 289 // XXX } 290 // XXX return Ngroup; 291 // XXX } 292 // XXX -
trunk/Ohana/src/libdvo/src/dbExtractMeasures.c
r35263 r35416 16 16 static int REMOTE_CLIENT = FALSE; 17 17 18 // the following values are calculated together in a single function, eg., 19 // ApplyTransform() returning Glon & Glat. for a single measurement, we want to do this 20 // calculation once and save both values in case both are requested (usually both are if 21 // either is) 18 22 static int haveGalacticAve = FALSE; 19 23 static double GLON_AVE = 0.0; … … 31 35 static double ELON_MEAS = 0.0; 32 36 static double ELAT_MEAS = 0.0; 37 38 static int haveMosaicMeas = FALSE; 39 static double XMOS_MEAS = 0.0; 40 static double YMOS_MEAS = 0.0; 41 42 static int haveFieldMeas = FALSE; 43 static double XFIELD_MEAS = 0.0; 44 static double YFIELD_MEAS = 0.0; 33 45 34 46 int dbExtractMeasuresInit (int isRemoteClient) { … … 66 78 67 79 int dbExtractMeasuresInitMeas () { 80 haveMosaicMeas = FALSE; 68 81 haveGalacticMeas = FALSE; 69 82 haveEclipticMeas = FALSE; … … 76 89 int Nsec; 77 90 dbValue value; 78 double ra, dec, x, y, dT; 79 80 Coords *mosaic; 91 double dT; 92 93 Coords *mosaic, *fieldc; 94 81 95 PhotCode *equiv; 82 96 … … 85 99 86 100 switch (field->ID) { 87 case MEAS_MAG: /* magnitudes are already determined above */ 88 equiv = GetPhotcodeEquivbyCode (measure[0].photcode); 89 90 // we return the magnitude for this measure if: 91 if (field->photcode->type == PHOT_MAG) goto valid_photcode; 101 case MEAS_MAG: { /* magnitudes are already determined above */ 102 PhotCode *myEquiv = GetPhotcodeEquivbyCode (measure[0].photcode); 103 104 // if we request mag:ave, use equiv for photcode 105 if (field->photcode->type == PHOT_MAG) { 106 equiv = myEquiv; 107 goto valid_photcode; 108 } 109 110 // if we ask for 2MASS_K, etc (REF values), return NAN unless measure->code matches 92 111 if ((field->photcode->type == PHOT_REF) && (measure[0].photcode == field->photcode->code)) goto valid_photcode; 112 113 // if we ask for GPC1.g.XY03:rel, etc (DEP values), return NAN unless measure->code matches 93 114 if ((field->photcode->type == PHOT_DEP) && (measure[0].photcode == field->photcode->code)) goto valid_photcode; 94 115 95 if ((equiv != NULL) && (field->photcode->type == PHOT_SEC) && (equiv[0].code == field->photcode->code)) goto valid_photcode; 116 // if we ask for g:ave, or other SEC-level values, return the corresponding field 117 if (field->photcode->type == PHOT_SEC) { 118 switch (field->magMode) { 119 // measure-like : return non-NAN if measure.equiv.photcode matches field.photcode 120 case MAG_INST: 121 case MAG_CAT: 122 case MAG_SYS: 123 case MAG_REL: 124 case MAG_CAL: 125 case MAG_APER: 126 case MAG_APER_INST: 127 case MAG_KRON: 128 case MAG_KRON_INST: 129 case MAG_KRON_ERR: 130 case MAG_ERR: 131 case MAG_PHOT_FLAGS: 132 equiv = myEquiv; 133 if (equiv && (equiv->code == field->photcode->code)) goto valid_photcode; 134 break; 135 136 // mean-like : return value for the given photcode 137 case MAG_AVE: 138 case MAG_REF: 139 case MAG_CHISQ: 140 case MAG_AVE_ERR: 141 case MAG_NCODE: 142 case MAG_NPHOT: 143 case MAG_FLUX_PSF: 144 case MAG_FLUX_PSF_ERR: 145 case MAG_FLUX_KRON: 146 case MAG_FLUX_KRON_ERR: 147 equiv = field->photcode; 148 goto valid_photcode; 149 break; 150 default: 151 fprintf (stderr, "error"); 152 return value; 153 } 154 } 96 155 break; 97 156 … … 182 241 } 183 242 break; 243 } 184 244 case MEAS_RA: /* OK */ 185 245 value.Flt = average[0].R - measure[0].dR / 3600.0; … … 465 525 value.Flt = FromShortPixels(measure[0].dRsys); 466 526 break; 467 case MEAS_XMOSAIC: /* OK */ 468 ra = average[0].R - measure[0].dR / 3600.0; 469 dec = average[0].D - measure[0].dD / 3600.0; 470 mosaic = MatchMosaicMetadata (measure[0].imageID); 471 if (mosaic == NULL) break; 472 RD_to_XY (&x, &y, ra, dec, mosaic); 473 value.Flt = x; 527 528 case MEAS_XFIELD: /* offset relative to exposure center in ra,dec space */ 529 if (!haveFieldMeas) { 530 if (REMOTE_CLIENT) { 531 fieldc = MatchFieldMetadata (measure[0].imageID); 532 } else { 533 fprintf (stderr, "non-parallel Xmos broken\n"); 534 abort(); 535 // fieldc = MatchField (measure[0].t, measure[0].photcode); 536 } 537 if (fieldc == NULL) break; 538 double Rm = average[0].R - measure[0].dR / 3600.0; 539 double Dm = average[0].D - measure[0].dD / 3600.0; 540 RD_to_XY (&XFIELD_MEAS, &YFIELD_MEAS, Rm, Dm, fieldc); 541 } 542 value.Flt = XFIELD_MEAS; 543 break; 544 case MEAS_YFIELD: /* OK */ 545 if (!haveFieldMeas) { 546 if (REMOTE_CLIENT) { 547 fieldc = MatchFieldMetadata (measure[0].imageID); 548 } else { 549 fprintf (stderr, "non-parallel Xmos broken\n"); 550 abort(); 551 // fieldc = MatchField (measure[0].t, measure[0].photcode); 552 } 553 if (fieldc == NULL) break; 554 double Rm = average[0].R - measure[0].dR / 3600.0; 555 double Dm = average[0].D - measure[0].dD / 3600.0; 556 RD_to_XY (&XFIELD_MEAS, &YFIELD_MEAS, Rm, Dm, fieldc); 557 } 558 value.Flt = YFIELD_MEAS; 559 break; 560 561 case MEAS_XMOSAIC: /* offset relative to exposure center in camera coords */ 562 if (!haveMosaicMeas) { 563 if (REMOTE_CLIENT) { 564 mosaic = MatchMosaicMetadata (measure[0].imageID); 565 } else { 566 fprintf (stderr, "non-parallel Xmos broken\n"); 567 abort(); 568 mosaic = MatchMosaic (measure[0].t, measure[0].photcode); 569 } 570 if (mosaic == NULL) break; 571 double Rm = average[0].R - measure[0].dR / 3600.0; 572 double Dm = average[0].D - measure[0].dD / 3600.0; 573 RD_to_XY (&XMOS_MEAS, &YMOS_MEAS, Rm, Dm, mosaic); 574 } 575 value.Flt = XMOS_MEAS; 474 576 break; 475 577 case MEAS_YMOSAIC: /* OK */ 476 ra = average[0].R - measure[0].dR / 3600.0; 477 dec = average[0].D - measure[0].dD / 3600.0; 478 mosaic = MatchMosaic (measure[0].t, measure[0].photcode); 479 if (mosaic == NULL) break; 480 RD_to_XY (&x, &y, ra, dec, mosaic); 481 value.Flt = y; 578 if (!haveMosaicMeas) { 579 if (REMOTE_CLIENT) { 580 mosaic = MatchMosaicMetadata (measure[0].imageID); 581 } else { 582 fprintf (stderr, "non-parallel Xmos broken\n"); 583 abort(); 584 mosaic = MatchMosaic (measure[0].t, measure[0].photcode); 585 } 586 if (mosaic == NULL) break; 587 double Rm = average[0].R - measure[0].dR / 3600.0; 588 double Dm = average[0].D - measure[0].dD / 3600.0; 589 RD_to_XY (&XMOS_MEAS, &YMOS_MEAS, Rm, Dm, mosaic); 590 } 591 value.Flt = YMOS_MEAS; 482 592 break; 483 593 -
trunk/Ohana/src/libdvo/src/dbFields.c
r35237 r35416 87 87 strcpy (code[0].name, "MAG"); 88 88 code[0].type = PHOT_MAG; 89 // the field call 'mag' is only valid for mextract 90 // it should default to REL, but other types should default to AVE 91 if (useDefault) { 92 *mode = MAG_REL; 93 } 89 94 free (tmpstring); 90 95 return (code); … … 220 225 if (!strcasecmp (fieldName, "YFIX")) ESCAPE (MEAS_YFIX, MAG_NONE, OPIHI_FLT); 221 226 if (!strcasecmp (fieldName, "POS_SYS_ERR")) ESCAPE (MEAS_POS_SYS_ERR, MAG_NONE, OPIHI_FLT); 227 if (!strcasecmp (fieldName, "XFIELD")) ESCAPE (MEAS_XFIELD, MAG_NONE, OPIHI_FLT); 228 if (!strcasecmp (fieldName, "YFIELD")) ESCAPE (MEAS_YFIELD, MAG_NONE, OPIHI_FLT); 222 229 if (!strcasecmp (fieldName, "XMOSAIC")) ESCAPE (MEAS_XMOSAIC, MAG_NONE, OPIHI_FLT); 223 230 if (!strcasecmp (fieldName, "YMOSAIC")) ESCAPE (MEAS_YMOSAIC, MAG_NONE, OPIHI_FLT); … … 254 261 255 262 // check for code:mode in photcode name 256 code = ParsePhotcodeField (fieldName, &mode, MAG_ REL);263 code = ParsePhotcodeField (fieldName, &mode, MAG_AVE); 257 264 if (code == NULL) { 258 265 gprint (GP_ERR, "unknown field '%s' for measurement table in DVO database\n", fieldName); -
trunk/Ohana/src/libdvo/src/dvo_catalog.c
r35102 r35416 112 112 113 113 // init all data, or just catalog data 114 void dvo_averageT_init (AverageTiny *average) { 115 average->R = 0; 116 average->D = 0; 117 average->flags = 0; 118 average->Nmeasure = 0; 119 average->measureOffset = -1; 120 average->catID = 0; 121 } 122 123 // init all data, or just catalog data 114 124 void dvo_secfilt_init (SecFilt *secfilt) { 115 125 secfilt->M = NAN; … … 142 152 measure->dR = NAN; 143 153 measure->dD = NAN; 144 measure->M = NAN;145 154 measure->Mcal = NAN; 146 155 measure->Map = NAN; … … 203 212 measure->dbFlags = 0; 204 213 measure->photFlags = 0; 214 } 215 216 void dvo_measureT_init (MeasureTiny *measure) { 217 measure->dR = NAN; 218 measure->dD = NAN; 219 measure->M = NAN; 220 measure->Mcal = NAN; 221 measure->dM = NAN; 222 223 measure->airmass = NAN; 224 measure->Xccd = NAN; 225 measure->Yccd = NAN; 226 measure->Xfix = NAN; 227 measure->Yfix = NAN; 228 229 measure->t = 0; 230 measure->dt = NAN; 231 measure->averef = 0; 232 233 measure->imageID = 0; 234 235 measure->dbFlags = 0; 236 measure->photFlags = 0; 237 measure->photcode = 0; 238 239 measure->catID = 0; 240 241 measure->dXccd = 0; 242 measure->dYccd = 0; 243 measure->dRsys = 0; 205 244 } 206 245
Note:
See TracChangeset
for help on using the changeset viewer.
