Changeset 34352 for trunk/psphot/src/psphotStackMatchPSFsUtils.c
- Timestamp:
- Aug 24, 2012, 12:33:06 PM (14 years ago)
- File:
-
- 1 edited
-
trunk/psphot/src/psphotStackMatchPSFsUtils.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psphot/src/psphotStackMatchPSFsUtils.c
r34136 r34352 280 280 281 281 // Do the image matching 282 bool rejectReadout = false; 282 283 pmSubtractionKernels *kernel = psMetadataLookupPtr(&mdok, readoutSrc->analysis, PM_SUBTRACTION_ANALYSIS_KERNEL); // Conv kernel 283 284 if (kernel) { … … 301 302 302 303 if (!pmSubtractionMatch(NULL, readoutOut, fake, readoutSrc, footprint, stride, regionSize, spacing, threshold, stampSources, stampsName, type, size, order, widthsCopy, orders, inner, ringsOrder, binning, penalty, optimum, optWidths, optOrder, optThresh, iter, rej, normFrac, sysError, skyErr, kernelError, covarFrac, maskVal, maskBad, maskPoor, poorFrac, badFrac, PM_SUBTRACTION_MODE_2)) { 303 psError(psErrorCodeLast(), false, "Unable to match images."); 304 goto escape; 304 int errorCode = psErrorCodeLast(); 305 if (errorCode == PM_ERR_SMALL_AREA) { 306 // failed to match but, don't fault. Just drop this input from measurements that need the 307 // matched readout. 308 rejectReadout = true; 309 psLogMsg("psphot", PS_LOG_WARN, "PSF match failed for input %d. Too few pixels.", index); 310 } else { 311 psError(psErrorCodeLast(), false, "Unable to match images."); 312 goto escape; 313 } 305 314 } 306 315 } 307 316 308 // Reject image completely if the maximum deconvolution fraction exceeds the limit317 // If the maximum deconvolution fraction exceeds the limit, reject this input for analyses that require PSF matching 309 318 float deconvLimit = psMetadataLookupF32(NULL, stackRecipe, "DECONV.LIMIT"); // Limit on deconvolution fraction 310 319 float deconv = psMetadataLookupF32(NULL, readoutOut->analysis, PM_SUBTRACTION_ANALYSIS_DECONV_MAX); // Max deconvolution fraction 311 320 if (deconv > deconvLimit) { 312 #if (1) 313 // XXX: don't reject the image set 314 psWarning("Maximum deconvolution fraction (%f) exceeds limit (%f) --- rejecting image for matched psf analysis%d\n", deconv, deconvLimit, index); 315 psMetadataAddBool(readoutOut->analysis, PS_LIST_TAIL, "DECONV.OVERLIMIT", PS_META_REPLACE, "", true); 316 #else 317 psWarning("Maximum deconvolution fraction (%f) exceeds limit (%f) --- rejecting image %d\n", deconv, deconvLimit, index); 318 goto escape; 319 #endif 321 rejectReadout = true; 322 psLogMsg("psphot", PS_LOG_WARN, "Maximum deconvolution fraction (%f) exceeds limit (%f) --- rejecting image for matched psf analysis%d\n", deconv, deconvLimit, index); 323 } 324 325 if (rejectReadout) { 326 psMetadataAddBool(readoutOut->analysis, PS_LIST_TAIL, "NOT.PSF.MATCHED", PS_META_REPLACE, "", true); 320 327 } else { 321 psMetadataAddBool(readoutOut->analysis, PS_LIST_TAIL, "DECONV.OVERLIMIT", PS_META_REPLACE, "", false); 322 } 323 328 psMetadataAddBool(readoutOut->analysis, PS_LIST_TAIL, "NOT.PSF.MATCHED", PS_META_REPLACE, "", false); 329 } 324 330 // save the PSF on the new readout->analysis: 325 331 // if (!psMetadataAddPtr (readoutOut->analysis, PS_LIST_TAIL, "PSPHOT.PSF", PS_META_REPLACE | PS_DATA_UNKNOWN, "psphot psf model", options->psf)) { … … 470 476 } 471 477 472 // Set input to be skipped if the decovolution fraction was overlimit. Use for radial apertures 473 // This interface can be potentiall be extended for other uses 478 // Set input to be skipped if the analysis reports that psf matching has failed for some reason. 479 // For exmaple if decovolution fraction was overlimit or the bad fraction was too high. 480 // 474 481 bool psphotStackSetInputsToSkip(pmConfig *config, const pmFPAview *view, const char *filerule, bool set) { 475 482 int num = psphotFileruleCount(config, filerule); … … 487 494 psAssert (readout, "missing readout?"); 488 495 if (set) { 489 bool overLimit = psMetadataLookupBool(&status, readout->analysis, "DECONV.OVERLIMIT");490 psMetadataAddBool(readout->analysis, PS_LIST_TAIL, "PSPHOT.SKIP.INPUT", PS_META_REPLACE, "Skip analysis", overLimit);496 bool notMatched = psMetadataLookupBool(&status, readout->analysis, "NOT.PSF.MATCHED"); 497 psMetadataAddBool(readout->analysis, PS_LIST_TAIL, "PSPHOT.SKIP.INPUT", PS_META_REPLACE, "Skip analysis", notMatched); 491 498 } else { 492 499 psMetadataAddBool(readout->analysis, PS_LIST_TAIL, "PSPHOT.SKIP.INPUT", PS_META_REPLACE, "Skip analysis", false);
Note:
See TracChangeset
for help on using the changeset viewer.
