Changeset 29937
- Timestamp:
- Dec 5, 2010, 9:45:46 PM (15 years ago)
- Location:
- trunk/ppSub
- Files:
-
- 10 edited
- 3 copied
-
doc/psphot.txt (copied) (copied from branches/eam_branches/ipp-20101103/ppSub/doc/psphot.txt )
-
src/Makefile.am (modified) (2 diffs)
-
src/ppSub.h (modified) (2 diffs)
-
src/ppSubArguments.c (modified) (1 diff)
-
src/ppSubBackground.c (modified) (2 diffs)
-
src/ppSubCamera.c (modified) (3 diffs)
-
src/ppSubFlagNeighbors.c (modified) (1 diff)
-
src/ppSubInputDetections.c (copied) (copied from branches/eam_branches/ipp-20101103/ppSub/src/ppSubInputDetections.c )
-
src/ppSubLoop.c (modified) (4 diffs)
-
src/ppSubMakePSF.c (modified) (2 diffs)
-
src/ppSubMatchPSFs.c (modified) (1 diff)
-
src/ppSubReadoutForcedPhot.c (copied) (copied from branches/eam_branches/ipp-20101103/ppSub/src/ppSubReadoutForcedPhot.c )
-
src/ppSubReadoutPhotometry.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ppSub/src/Makefile.am
r29003 r29937 38 38 ppSubLoop.c \ 39 39 ppSubDefineOutput.c \ 40 ppSubInputDetections.c \ 40 41 ppSubExtras.c \ 41 42 ppSubFlagNeighbors.c \ … … 46 47 ppSubReadoutJpeg.c \ 47 48 ppSubReadoutPhotometry.c \ 49 ppSubReadoutForcedPhot.c \ 48 50 ppSubReadoutStats.c \ 49 51 ppSubReadoutSubtract.c \ -
trunk/ppSub/src/ppSub.h
r29003 r29937 45 45 bool photometry; // Perform photometry? 46 46 bool inverse; // Output inverse subtraction as well? 47 bool forcedPhot1; // perform forced photometry? 48 bool forcedPhot2; // perform forced photometry? 47 49 bool saveInConv; // Save convolved input? 48 50 bool saveRefConv; // Save convolved reference? … … 105 107 ppSubData *data ///< Processing data 106 108 ); 109 110 bool ppSubInputDetections (bool *foundDetections, const char *sourcesName, const char *imageName, ppSubData *data); 111 bool ppSubReadoutForcedPhot(const char *outputName, const char *targetName, const char *sourceName, ppSubData *data); 112 bool psphotCopyResults (bool *foundDetections, pmFPAfile *target, pmFPAfile *source, pmFPAview *view); 107 113 108 114 /// Higher-order background subtraction -
trunk/ppSub/src/ppSubArguments.c
r27596 r29937 86 86 psMetadataAddS32(arguments, PS_LIST_TAIL, "-convolve", 0, "Image to convolve [1 or 2]", 0); 87 87 psMetadataAddBool(arguments, PS_LIST_TAIL, "-photometry", 0, "Perform photometry?", NULL); 88 psMetadataAddBool(arguments, PS_LIST_TAIL, "-forced-phot", 0, "Perform forced photometry?", NULL); 89 psMetadataAddBool(arguments, PS_LIST_TAIL, "-forced-input1", 0, "Perform forced photometry?", NULL); 90 psMetadataAddBool(arguments, PS_LIST_TAIL, "-forced-input2", 0, "Perform forced photometry?", NULL); 88 91 psMetadataAddF32(arguments, PS_LIST_TAIL, "-zp", 0, "Zero point for photometry", NAN); 89 92 psMetadataAddBool(arguments, PS_LIST_TAIL, "-inverse", 0, "Generate inverse subtractions?", false); -
trunk/ppSub/src/ppSubBackground.c
r29003 r29937 37 37 pmFPAview *view = ppSubViewReadout(); // View to readout 38 38 pmReadout *outRO = pmFPAfileThisReadout(config->files, view, "PPSUB.OUTPUT"); // Output image 39 pmReadout *modelRO = pmFPAfileThisReadout(config->files, view, "PSPHOT.BACKMDL"); // Background model40 39 41 // Generate the background model, if required 40 // Generate the background model 41 if (!psphotModelBackground(config, view, "PPSUB.OUTPUT")) { 42 psError(psErrorCodeLast(), false, "Unable to model background"); 43 psFree(view); 44 return false; 45 } 46 47 // select the model readout (should now exist) 48 pmReadout *modelRO = pmFPAfileThisReadout(config->files, view, "PSPHOT.BACKMDL"); 42 49 if (!modelRO) { 43 // Create the background model 44 if (!psphotModelBackgroundReadoutFileIndex(config, view, "PPSUB.OUTPUT", 0)) { 45 psError(psErrorCodeLast(), false, "Unable to model background"); 46 psFree(view); 47 return false; 48 } 49 // select the model readout (should now exist) 50 modelRO = pmFPAfileThisReadout(config->files, view, "PSPHOT.BACKMDL"); 51 if (!modelRO) { 52 psError(psErrorCodeLast(), false, "Unable to find background model"); 53 psFree(view); 54 return false; 55 } 50 psError(psErrorCodeLast(), false, "Unable to find background model"); 51 psFree(view); 52 return false; 56 53 } 57 54 psFree(view); 58 55 59 psImageBinning *binning = psMetadataLookupPtr(&mdok, modelRO->analysis, 60 "PSPHOT.BACKGROUND.BINNING"); // Binning for model 56 psImageBinning *binning = psMetadataLookupPtr(&mdok, modelRO->analysis, "PSPHOT.BACKGROUND.BINNING"); // Binning for model 61 57 psImage *modelImage = modelRO->image; // Background model 62 58 psImage *image = outRO->image; // Image of interest … … 83 79 } 84 80 85 pmFPAfileDropInternal(config->files, "PSPHOT.BACKMDL");86 pmFPAfileDropInternal(config->files, "PSPHOT.BACKMDL.STDEV");87 88 81 return true; 89 82 } -
trunk/ppSub/src/ppSubCamera.c
r27661 r29937 221 221 "Generate inverse subtractions?", true); 222 222 } 223 224 data->inverse = psMetadataLookupBool(NULL, recipe, "INVERSE"); 225 data->photometry = psMetadataLookupBool(NULL, recipe, "PHOTOMETRY"); 223 if (psMetadataLookupBool(NULL, config->arguments, "-forced-phot")) { 224 psMetadataAddBool(recipe, PS_LIST_TAIL, "FORCED.PHOTOMETRY.BOTH", PS_META_REPLACE, "Perform forced photometry?", true); 225 } 226 if (psMetadataLookupBool(NULL, config->arguments, "-forced-input1")) { 227 psMetadataAddBool(recipe, PS_LIST_TAIL, "FORCED.PHOTOMETRY.INPUT1", PS_META_REPLACE, "Perform forced photometry?", true); 228 } 229 if (psMetadataLookupBool(NULL, config->arguments, "-forced-input2")) { 230 psMetadataAddBool(recipe, PS_LIST_TAIL, "FORCED.PHOTOMETRY.INPUT2", PS_META_REPLACE, "Perform forced photometry?", true); 231 } 232 233 data->inverse = psMetadataLookupBool(NULL, recipe, "INVERSE"); 234 data->photometry = psMetadataLookupBool(NULL, recipe, "PHOTOMETRY"); 235 data->forcedPhot1 = psMetadataLookupBool(NULL, recipe, "FORCED.PHOTOMETRY.BOTH") || psMetadataLookupBool(NULL, recipe, "FORCED.PHOTOMETRY.INPUT1"); 236 data->forcedPhot2 = psMetadataLookupBool(NULL, recipe, "FORCED.PHOTOMETRY.BOTH") || psMetadataLookupBool(NULL, recipe, "FORCED.PHOTOMETRY.INPUT2"); 226 237 227 238 // Convolved input image … … 363 374 return false; 364 375 } 365 // specify the number of psphot input images366 psMetadataAddS32 (config->arguments, PS_LIST_TAIL, "PSPHOT.INPUT.NUM", PS_META_REPLACE, "number of inputs", 1);367 376 pmFPAfileActivate(config->files, false, "PSPHOT.INPUT"); 368 377 … … 405 414 invSources->save = true; 406 415 } 416 417 // files need to do the forced photometry on the positions of sources in the positive images 418 if (data->forcedPhot1) { 419 // this pmFPAfile is used to carry sources detected in the positive image #1 420 pmFPAfile *posSources1 = defineOutputFile(config, output, true, "PPSUB.POS1.SOURCES", PM_FPA_FILE_CMF); 421 if (!posSources1) { 422 psError(psErrorCodeLast(), false, "Unable to set up forced source file."); 423 return false; 424 } 425 posSources1->save = true; 426 427 // this pmFPAfile is used to carry sources detected in the diff image @ the positions from positive image #1 428 pmFPAfile *frcSources1 = defineOutputFile(config, output, true, "PPSUB.FORCED1.SOURCES", PM_FPA_FILE_CMF); 429 if (!frcSources1) { 430 psError(psErrorCodeLast(), false, "Unable to set up forced source file."); 431 return false; 432 } 433 frcSources1->save = true; 434 } 435 436 if (data->forcedPhot2) { 437 // this pmFPAfile is used to carry sources detected in the positive image #2 438 pmFPAfile *posSources2 = defineOutputFile(config, inverse, true, "PPSUB.POS2.SOURCES", PM_FPA_FILE_CMF); 439 if (!posSources2) { 440 psError(psErrorCodeLast(), false, "Unable to set up forced source file."); 441 return false; 442 } 443 posSources2->save = true; 444 445 // this pmFPAfile is used to carry sources detected in the diff image @ the positions from positive image #2 446 pmFPAfile *frcSources2 = defineOutputFile(config, inverse, true, "PPSUB.FORCED2.SOURCES", PM_FPA_FILE_CMF); 447 if (!frcSources2) { 448 psError(psErrorCodeLast(), false, "Unable to set up forced source file."); 449 return false; 450 } 451 frcSources2->save = true; 452 } 407 453 } 408 454 -
trunk/ppSub/src/ppSubFlagNeighbors.c
r29003 r29937 235 235 src = sources->data[Imin]; 236 236 237 fprintf (stderr, "j: %d, Imin: %d, obj x,y: %f, %f src x,y: %f, %f, SN: %f, ID: %d\n", j, Imin, obj->x, obj->y, src->peak->xf, src->peak->yf, src->peak->SN, src->id);237 // fprintf (stderr, "j: %d, Imin: %d, obj x,y: %f, %f src x,y: %f, %f, SN: %f, ID: %d\n", j, Imin, obj->x, obj->y, src->peak->xf, src->peak->yf, src->peak->SN, src->id); 238 238 239 239 // add source to object -
trunk/ppSub/src/ppSubLoop.c
r29003 r29937 57 57 } 58 58 59 if (data->forcedPhot1) { 60 bool foundDetections = false; 61 if (!ppSubInputDetections(&foundDetections, "PPSUB.POS1.SOURCES", "PPSUB.INPUT", data)) { 62 psError(psErrorCodeLast(), false, "Unable to measure positive detections (1)"); 63 return false; 64 } 65 // if nothing was found, don't bother doing the forced photometry below 66 if (!foundDetections) { 67 psWarning ("no sources found in positive image 1, skipping forced photometry"); 68 data->forcedPhot1 = false; 69 } 70 } 71 if (data->forcedPhot2) { 72 bool foundDetections = false; 73 if (!ppSubInputDetections(&foundDetections, "PPSUB.POS2.SOURCES", "PPSUB.REF", data)) { 74 psError(psErrorCodeLast(), false, "Unable to measure positive detections (2)"); 75 return false; 76 } 77 // if nothing was found, don't bother doing the forced photometry below 78 if (!foundDetections) { 79 psWarning ("no sources found in positive image 1, skipping forced photometry"); 80 data->forcedPhot1 = false; 81 } 82 } 83 84 // XXX if it exists, use the POS1, POS2 results for the FWHMs 59 85 if (!ppSubMatchPSFs(data)) { 60 86 psError(psErrorCodeLast(), false, "Unable to match PSFs."); … … 70 96 return false; 71 97 } 98 99 // XXX add in a positive image detection step here (if needed) 100 72 101 73 102 psMetadataAddF32(data->stats, PS_LIST_TAIL, "TIME_MATCH", 0, "Time to match PSFs", … … 153 182 } 154 183 // dumpout(config, "diff.3.fits"); 184 185 // forced photometry for positive image 1 186 if (data->forcedPhot1 && !data->quality) { 187 if (!ppSubReadoutForcedPhot("PPSUB.FORCED1.SOURCES", "PPSUB.OUTPUT", "PPSUB.POS1.SOURCES", data)) { 188 psError(psErrorCodeLast(), false, "Unable to perform photometry."); 189 return false; 190 } 191 } 192 193 // forced photometry for positive image 2 194 if (data->forcedPhot2 && !data->quality) { 195 if (!ppSubReadoutForcedPhot("PPSUB.FORCED2.SOURCES", "PPSUB.OUTPUT", "PPSUB.POS2.SOURCES", data)) { 196 psError(psErrorCodeLast(), false, "Unable to perform photometry."); 197 return false; 198 } 199 } 155 200 156 201 if (!ppSubFilesIterateUp(config, PPSUB_FILES_PHOT_SUB)) { … … 227 272 } 228 273 274 pmFPAfileDropInternal(config->files, "PSPHOT.BACKGND"); 275 pmFPAfileDropInternal(config->files, "PSPHOT.BACKMDL"); 276 pmFPAfileDropInternal(config->files, "PSPHOT.BACKMDL.STDEV"); 277 229 278 return true; 230 279 } -
trunk/ppSub/src/ppSubMakePSF.c
r28049 r29937 35 35 36 36 psTimerStart("PPSUB_PHOT"); 37 38 psMetadata *recipe = psMetadataLookupMetadata(NULL, config->recipes, PPSUB_RECIPE); // Recipe for ppSub39 psAssert(recipe, "We checked this earlier, so it should be here.");40 41 if (!psMetadataLookupBool(NULL, recipe, "PHOTOMETRY")) {42 return true;43 }44 37 45 38 bool reverse = psMetadataLookupBool(NULL, config->arguments, "REVERSE"); // Reverse sense of subtraction? … … 93 86 // use flags to toss totally bogus entries? 94 87 psArray *goodSources = ppSubSelectPSFSources (sources); 95 if (!psphotReadoutFindPSF(config, view, goodSources)) {88 if (!psphotReadoutFindPSF(config, view, "PSPHOT.INPUT", goodSources)) { 96 89 // This is likely a data quality issue 97 90 // XXX Split into multiple cases using error codes? -
trunk/ppSub/src/ppSubMatchPSFs.c
r29593 r29937 72 72 // Extract the loaded sources from the associated readout, and generate PSF 73 73 // Here, we assume the image is background-subtracted 74 if (!psphotReadoutFindPSF(config, view, sources)) {74 if (!psphotReadoutFindPSF(config, view, "PSPHOT.INPUT", sources)) { 75 75 psErrorStackPrint(stderr, "Unable to determine PSF"); 76 76 psWarning("Unable to determine PSF."); -
trunk/ppSub/src/ppSubReadoutPhotometry.c
r29003 r29937 31 31 32 32 if (!data->photometry) { 33 return true;34 }35 36 // Look up recipe values37 psMetadata *recipe = psMetadataLookupMetadata(NULL, config->recipes, PPSUB_RECIPE); // Recipe for ppSim38 psAssert(recipe, "We checked this earlier, so it should be here.");39 40 if (!psMetadataLookupBool(NULL, recipe, "PHOTOMETRY")) {41 pmFPAfileDropInternal(config->files, "PSPHOT.BACKMDL");42 pmFPAfileDropInternal(config->files, "PSPHOT.BACKMDL.STDEV");43 33 return true; 44 34 } … … 81 71 } 82 72 83 if (!psphotReadoutMinimal(config, view )) {73 if (!psphotReadoutMinimal(config, view, "PSPHOT.INPUT")) { 84 74 // This is likely a data quality issue 85 75 // XXX Split into multiple cases using error codes? … … 90 80 91 81 // If no sources were found, there's no error, but we want to trigger 'bad quality' 82 psWarning("no sources found: why is this being set to bad quality??"); 92 83 pmDetections *detections = psMetadataLookupPtr(NULL, photRO->analysis, "PSPHOT.DETECTIONS"); // Sources 93 84 if (!detections) { … … 136 127 } 137 128 } 138 139 pmFPAfileDropInternal(config->files, "PSPHOT.BACKMDL");140 pmFPAfileDropInternal(config->files, "PSPHOT.BACKMDL.STDEV");141 129 142 130 return true;
Note:
See TracChangeset
for help on using the changeset viewer.
