- Timestamp:
- Jan 7, 2010, 5:07:54 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/20091201/psphot/src/psphotModelBackground.c
r26523 r26542 30 30 31 31 // Generate the background model 32 static bool backgroundModel(psImage *model, // Model image 33 psImage *modelStdev, // Model stdev image 34 psMetadata *analysis, // Analysis metadata for outputs 35 pmReadout *readout, // Readout for which to generate a background model 36 psImageBinning *binning, // Binning parameters 37 const pmConfig *config // Configuration 38 ) 32 // generate the median in NxN boxes, clipping heavily 33 // linear interpolation to generate full-scale model 34 bool psphotModelBackgroundReadout(psImage *model, // Model image 35 psImage *modelStdev, // Model stdev image 36 psMetadata *analysis, // Analysis metadata for outputs 37 pmReadout *readout, // Readout for which to generate a background model 38 psImageBinning *binning, // Binning parameters 39 const pmConfig *config // Configuration 40 ) 39 41 { 40 42 psTimerStart ("psphot.background"); … … 328 330 } 329 331 330 // XXX these two functions are absurdly-named and very similar -- fix! 331 332 psImage *psphotBackgroundModel(pmReadout *ro, const pmConfig *config) 333 { 334 PM_ASSERT_READOUT_NON_NULL(ro, NULL); 335 PM_ASSERT_READOUT_IMAGE(ro, NULL); 332 // generate a background model for a single readout. do not save an associated pmFPAfile for possible output 333 psImage *psphotModelBackgroundReadoutNoFile(pmReadout *readout, const pmConfig *config) 334 { 335 PM_ASSERT_READOUT_NON_NULL(readout, NULL); 336 PM_ASSERT_READOUT_IMAGE(readout, NULL); 336 337 PS_ASSERT_PTR_NON_NULL(config, NULL); 337 338 338 psImageBinning *binning = psphotBackgroundBinning(r o->image, config); // Image binning parameters339 psImageBinning *binning = psphotBackgroundBinning(readout->image, config); // Image binning parameters 339 340 psImage *model = psImageAlloc(binning->nXruff, binning->nYruff, PS_TYPE_F32); // Background model 340 341 psImage *modelStdev = psImageAlloc(binning->nXruff, binning->nYruff, PS_TYPE_F32); // Standard deviation 341 342 342 if (! backgroundModel(model, modelStdev, ro->analysis, ro, binning, config)) {343 if (!psphotModelBackgroundReadout(model, modelStdev, readout->analysis, readout, binning, config)) { 343 344 psFree(model); 344 345 psFree(modelStdev); … … 346 347 return NULL; 347 348 } 348 349 349 psFree(modelStdev); 350 351 350 return model; 352 351 } 353 352 354 355 // generate the median in NxN boxes, clipping heavily 356 // linear interpolation to generate full-scale model 357 bool psphotModelBackground (pmConfig *config, const pmFPAview *view, const char *filename) 358 { 359 bool status = true; 360 353 // generate a background model for readout number index; save an associated pmFPAfile for possible output 354 bool psphotModelBackgroundReadoutFileIndex (pmConfig *config, const pmFPAview *view, const char *filename, int index) 355 { 361 356 // find the currently selected readout 362 pmFPAfile *file = psMetadataLookupPtr (&status, config->files, filename); 357 pmFPAfile *file = pmFPAfileSelectSingle(config->files, filename, index); // File of interest 358 PS_ASSERT_PTR_NON_NULL (file, false); 359 363 360 pmFPA *inFPA = file->fpa; 364 361 pmReadout *readout = pmFPAviewThisReadout(view, inFPA); … … 368 365 pmReadout *modelStdev = pmFPAGenerateReadout(config, view, "PSPHOT.BACKMDL.STDEV", inFPA, binning); 369 366 370 if (! backgroundModel(model->image, modelStdev->image, model->analysis, readout, binning, config)) {367 if (!psphotModelBackgroundReadout(model->image, modelStdev->image, model->analysis, readout, binning, config)) { 371 368 psError(PS_ERR_UNKNOWN, false, "Unable to generate background model"); 372 369 return false; … … 378 375 379 376 // XXX supply filename or keep PSPHOT.INPUT fixed? 380 bool psphot StackModelBackground (pmConfig *config, const pmFPAview *view)381 { 382 bool status = true;383 384 int num = psMetadata AddS32 (&status, config->arguments, "INPUTS.NUM");385 psA bort (!status, "programming error: must define INPUTS.NUM");377 bool psphotModelBackground (pmConfig *config, const pmFPAview *view) 378 { 379 bool status = false; 380 381 int num = psMetadataLookupS32 (&status, config->arguments, "PSPHOT.INPUT.NUM"); 382 psAssert (status, "programming error: must define PSPHOT.INPUT.NUM"); 386 383 387 384 // loop over the available readouts 388 385 for (int i = 0; i < num; i++) { 389 390 pmFPAfile *file = pmFPAfileSelectSingle(config->files, "PSPHOT.INPUT", i); // File of interest 391 392 // find the currently selected readout 393 pmReadout *readout = pmFPAviewThisReadout (view, file->fpa); 394 PS_ASSERT_PTR_NON_NULL (readout, false); 395 396 psImageBinning *binning = psphotBackgroundBinning(readout->image, config); // Image binning parameters 397 pmReadout *model = pmFPAGenerateReadout(config, view, "PSPHOT.BACKMDL", inFPA, binning); // this needs to be a MULTI like PSPHOT.INPUT 398 pmReadout *modelStdev = pmFPAGenerateReadout(config, view, "PSPHOT.BACKMDL.STDEV", inFPA, binning); // this needs to be a MULTI like PSPHOT.INPUT 399 400 // XXX save results on model->analysis or readout->analysis?? 401 if (!backgroundModel(model->image, modelStdev->image, model->analysis, readout, binning, config)) { 402 psError(PS_ERR_UNKNOWN, false, "Unable to generate background model"); 386 if (!psphotModelBackgroundReadoutFileIndex(config, view, "PSPHOT.INPUT", i)) { 387 psError (PSPHOT_ERR_CONFIG, false, "failed to model background for PSPHOT.INPUT entry %d", i); 403 388 return false; 404 389 } 405 npass ++;406 390 } 407 391 return true;
Note:
See TracChangeset
for help on using the changeset viewer.
