Changeset 24244 for branches/cnb_branches/cnb_branch_20090301/ppStack/src
- Timestamp:
- May 26, 2009, 1:59:32 PM (17 years ago)
- Location:
- branches/cnb_branches/cnb_branch_20090301
- Files:
-
- 13 edited
- 1 copied
-
. (modified) (1 prop)
-
ppStack (modified) (1 prop)
-
ppStack/src (modified) (1 prop)
-
ppStack/src/Makefile.am (modified) (1 diff)
-
ppStack/src/ppStackArguments.c (modified) (1 diff)
-
ppStack/src/ppStackCombineFinal.c (modified) (1 diff)
-
ppStack/src/ppStackCombineInitial.c (modified) (1 diff)
-
ppStack/src/ppStackConvolve.c (modified) (1 diff)
-
ppStack/src/ppStackFinish.c (modified) (2 diffs)
-
ppStack/src/ppStackMatch.c (modified) (5 diffs)
-
ppStack/src/ppStackPhotometry.c (modified) (2 diffs)
-
ppStack/src/ppStackSetup.c (modified) (3 diffs)
-
ppStack/src/ppStackVersion.c (modified) (3 diffs)
-
ppStack/src/ppStackVersionDefinitions.h.in (copied) (copied from trunk/ppStack/src/ppStackVersionDefinitions.h.in )
Legend:
- Unmodified
- Added
- Removed
-
branches/cnb_branches/cnb_branch_20090301
- Property svn:mergeinfo changed
-
branches/cnb_branches/cnb_branch_20090301/ppStack
- Property svn:mergeinfo changed
/branches/pap/ppStack (added) merged: 23580,23597-23598,23648 /trunk/ppStack merged: 23601-23602,23688,23740,23753,23767-23769,23781,23790,23801,23808,23841,23958,23977,24174,24215-24216
- Property svn:mergeinfo changed
-
branches/cnb_branches/cnb_branch_20090301/ppStack/src
- Property svn:ignore
-
old new 9 9 config.h.in 10 10 stamp-h1 11 ppStackVersionDefinitions.h
-
- Property svn:ignore
-
branches/cnb_branches/cnb_branch_20090301/ppStack/src/Makefile.am
r23594 r24244 1 1 bin_PROGRAMS = ppStack 2 2 3 # PPSTACK_VERSION=`if [ -e ../../VERSION ]; then cat ../../VERSION; else svnversion; fi` 4 # PPSTACK_BRANCH=`if [ -e ../../BRANCH ]; then cat ../../BRANCH; else svn info | sed -n -e '/URL:/ h' -e '/Repository Root:/ { x; H; x; s|Repository Root: \(.*\)\nURL: \1\(.*\)|\2| ; s|^/|| ; s|/[a-zA-Z]*/src.*|| ; p }'; fi` 5 # PPSTACK_SOURCE=`if [ -e ../../SOURCE ]; then cat ../../SOURCE; else svn info | sed -n -e 's/Repository UUID: // p'; fi` 6 # 7 # # Force recompilation of ppStackVersion.c, since it gets the version information 8 # ppStackVersion.c: FORCE 9 # touch ppStackVersion.c 10 # FORCE: ; 3 if HAVE_SVNVERSION 4 PPSTACK_VERSION=`$(SVNVERSION) ..` 5 else 6 PPSTACK_VERSION="UNKNOWN" 7 endif 11 8 12 ppStack_CFLAGS = $(PSLIB_CFLAGS) $(PSMODULE_CFLAGS) $(PSPHOT_CFLAGS) $(PPSTATS_CFLAGS) $(PPSTACK_CFLAGS) -DPPSTACK_VERSION=$(SVN_VERSION) -DPPSTACK_BRANCH=$(SVN_BRANCH) -DPPSTACK_SOURCE=$(SVN_SOURCE) 9 if HAVE_SVN 10 PPSTACK_BRANCH=`$(SVN) info .. | $(SED) -n -e '/URL:/ h' -e '/Repository Root:/ { x; H; x; s|Repository Root: \(.*\)\nURL: \1\(.*\)|\2| ; s|^/|| ; s|/[a-zA-Z]*/src.*|| ; p }'` 11 PPSTACK_SOURCE=`$(SVN) info | $(SED) -n -e 's/Repository UUID: // p'` 12 else 13 PPSTACK_BRANCH="UNKNOWN" 14 PPSTACK_SOURCE="UNKNOWN" 15 endif 16 17 # Force recompilation of ppStackVersion.c, since it gets the version information 18 ppStackVersion.c: ppStackVersionDefinitions.h 19 ppStackVersionDefinitions.h: ppStackVersionDefinitions.h.in FORCE 20 -$(RM) ppStackVersionDefinitions.h 21 $(SED) -e "s|@PPSTACK_VERSION@|\"$(PPSTACK_VERSION)\"|" -e "s|@PPSTACK_BRANCH@|\"$(PPSTACK_BRANCH)\"|" -e "s|@PPSTACK_SOURCE@|\"$(PPSTACK_SOURCE)\"|" ppStackVersionDefinitions.h.in > ppStackVersionDefinitions.h 22 FORCE: ; 23 24 ppStack_CFLAGS = $(PSLIB_CFLAGS) $(PSMODULE_CFLAGS) $(PSPHOT_CFLAGS) $(PPSTATS_CFLAGS) $(PPSTACK_CFLAGS) 13 25 ppStack_LDFLAGS = $(PSLIB_LIBS) $(PSMODULE_LIBS) $(PSPHOT_LIBS) $(PPSTATS_LIBS) $(PPSTACK_LIBS) 14 26 -
branches/cnb_branches/cnb_branch_20090301/ppStack/src/ppStackArguments.c
r23594 r24244 119 119 { 120 120 assert(config); 121 122 { 123 int argNum = psArgumentGet(argc, argv, "-debug"); // Debugging argument number 124 if (argNum) { 125 psArgumentRemove(argNum, &argc, argv); 126 pmSubtractionRegions(true); 127 } 128 } 121 129 122 130 // This capability makes things much faster when debugging -
branches/cnb_branches/cnb_branch_20090301/ppStack/src/ppStackCombineFinal.c
r23352 r24244 47 47 } 48 48 49 // Sum covariance matrices 50 double sumWeights = 0.0; // Sum of weights 51 for (int i = 0; i < options->num; i++) { 52 if (options->inputMask->data.U8[i]) { 53 psFree(options->covariances->data[i]); 54 options->covariances->data[i] = NULL; 55 continue; 56 } 57 psKernel *covar = options->covariances->data[i]; // Covariance matrix 58 float weight = options->weightings->data.F32[i]; // Weight to apply 59 psBinaryOp(covar->image, covar->image, "*", psScalarAlloc(weight, PS_TYPE_F32)); 60 sumWeights += weight; 61 } 62 pmReadout *outRO = options->outRO; // Output readout 63 outRO->covariance = psImageCovarianceSum(options->covariances); 64 psBinaryOp(outRO->covariance->image, outRO->covariance->image, "/", 65 psScalarAlloc(sumWeights, PS_TYPE_F32)); 66 psFree(options->covariances); options->covariances = NULL; 67 psImageCovarianceTransfer(outRO->variance, outRO->covariance); 68 49 69 #ifdef TESTING 50 70 pmStackVisualPlotTestImage(outRO->image, "combined_initial.fits"); -
branches/cnb_branches/cnb_branch_20090301/ppStack/src/ppStackCombineInitial.c
r23594 r24244 87 87 #endif 88 88 89 // Sum covariance matrices90 for (int i = 0; i < options->num; i++) {91 if (options->inputMask->data.U8[i]) {92 psFree(options->covariances->data[i]);93 options->covariances->data[i] = NULL;94 }95 }96 options->outRO->covariance = psImageCovarianceSum(options->covariances);97 psFree(options->covariances); options->covariances = NULL;98 89 psFree(options->matchChi2); options->matchChi2 = NULL; 99 90 -
branches/cnb_branches/cnb_branch_20090301/ppStack/src/ppStackConvolve.c
r23594 r24244 112 112 113 113 // Write the temporary convolved files 114 if (options->convolve) { 115 pmHDU *hdu = readout->parent->parent->parent->hdu; // HDU for convolved image 116 assert(hdu); 117 ppStackWriteImage(options->imageNames->data[i], hdu->header, readout->image, config); 118 psMetadata *maskHeader = psMetadataCopy(NULL, hdu->header); // Copy of header, for mask 119 pmConfigMaskWriteHeader(config, maskHeader); 120 ppStackWriteImage(options->maskNames->data[i], maskHeader, readout->mask, config); 121 psFree(maskHeader); 122 psImageCovarianceTransfer(readout->variance, readout->covariance); 123 ppStackWriteImage(options->varianceNames->data[i], hdu->header, readout->variance, config); 114 pmHDU *hdu = readout->parent->parent->parent->hdu; // HDU for convolved image 115 assert(hdu); 116 ppStackWriteImage(options->imageNames->data[i], hdu->header, readout->image, config); 117 psMetadata *maskHeader = psMetadataCopy(NULL, hdu->header); // Copy of header, for mask 118 pmConfigMaskWriteHeader(config, maskHeader); 119 ppStackWriteImage(options->maskNames->data[i], maskHeader, readout->mask, config); 120 psFree(maskHeader); 121 psImageCovarianceTransfer(readout->variance, readout->covariance); 122 ppStackWriteImage(options->varianceNames->data[i], hdu->header, readout->variance, config); 124 123 #ifdef TESTING 125 {126 psString name = NULL;127 psStringAppend(&name, "covariance_%d.fits", i);128 ppStackWriteImage(name, hdu->header, readout->covariance->image, config);129 pmStackVisualPlotTestImage(readout->covariance->image, name);130 psFree(name);131 }124 { 125 psString name = NULL; 126 psStringAppend(&name, "covariance_%d.fits", i); 127 ppStackWriteImage(name, hdu->header, readout->covariance->image, config); 128 pmStackVisualPlotTestImage(readout->covariance->image, name); 129 psFree(name); 130 } 132 131 #endif 133 }134 132 135 133 pmCell *inCell = readout->parent; // Input cell -
branches/cnb_branches/cnb_branch_20090301/ppStack/src/ppStackFinish.c
r23594 r24244 58 58 psFree((void *)statsMDC); 59 59 fclose(options->statsFile); options->statsFile = NULL; 60 pmConfigRunFilenameAddWrite(config, "STATS", psMetadataLookupStr(NULL, config->arguments, "STATS")); 60 61 } 61 62 … … 65 66 psString dump = psMetadataLookupStr(&mdok, config->arguments, "DUMP_CONFIG"); // File for config 66 67 if (dump) { 67 pmFPAfile *input = psMetadataLookupPtr(NULL, config->files, "PPSTACK.INPUT"); // Input file 68 pmConfigDump(config, input->fpa, dump); 68 pmConfigDump(config, dump); 69 69 } 70 70 -
branches/cnb_branches/cnb_branch_20090301/ppStack/src/ppStackMatch.c
r23594 r24244 209 209 pmFPAview *view = pmFPAviewAlloc(0); // View to readout of interest 210 210 view->chip = view->cell = view->readout = 0; 211 psString filename = pmFPAfileNameFromRule(file rule->rule, file, view); // Filename of interest211 psString filename = pmFPAfileNameFromRule(file->filerule, file, view); // Filename of interest 212 212 213 213 // Read convolution kernel … … 241 241 !readImage(&readout->variance, options->varianceNames->data[index], config)) { 242 242 psError(PS_ERR_IO, false, "Unable to read previously produced image."); 243 psFree(imageName);244 psFree(maskName);245 psFree(varianceName);246 243 return false; 247 244 } 248 psFree(imageName);249 psFree(maskName);250 psFree(varianceName);251 245 252 246 psRegion *region = psMetadataLookupPtr(NULL, conv->analysis, … … 317 311 } 318 312 313 fake->mask = psImageCopy(NULL, readout->mask, PS_TYPE_IMAGE_MASK); 314 319 315 // Add the background into the target image 320 316 psImage *bgImage = stackBackgroundModel(readout, config); // Image of background … … 361 357 psFree(stampSources); 362 358 psFree(conv); 359 if (threads > 0) { 360 pmSubtractionThreadsFinalize(readout, fake); 361 } 363 362 return false; 364 363 } … … 375 374 psFree(stampSources); 376 375 psFree(conv); 376 if (threads > 0) { 377 pmSubtractionThreadsFinalize(readout, fake); 378 } 377 379 return false; 378 380 } -
branches/cnb_branches/cnb_branch_20090301/ppStack/src/ppStackPhotometry.c
r23594 r24244 69 69 70 70 if (!psphotReadoutKnownSources(config, photView, inSources)) { 71 // Clear the error, so that the output files are written. 72 psError(PS_ERR_UNKNOWN, false, "Unable to perform photometry on stacked image."); 73 psFree(photView); 74 return false; 71 // This is likely a data quality issue 72 // XXX Split into multiple cases using error codes? 73 psErrorStackPrint(stderr, "Unable to perform photometry on image"); 74 psWarning("Unable to perform photometry on image --- suspect bad data quality."); 75 if (options->stats && psMetadataLookupS32(NULL, options->stats, "QUALITY") == 0) { 76 psMetadataAddS32(options->stats, PS_LIST_TAIL, "QUALITY", PS_META_REPLACE, 77 "Unable to perform photometry on image", psErrorCodeLast()); 78 } 79 psErrorClear(); 80 psphotFilesActivate(config, false); 75 81 } 76 82 … … 88 94 psArray *sources = psMetadataLookupPtr(NULL, photRO->analysis, "PSPHOT.SOURCES"); // Sources 89 95 psMetadataAddS32(options->stats, PS_LIST_TAIL, "NUM_SOURCES", 0, 90 "Number of sources detected", sources ->n);96 "Number of sources detected", sources ? sources->n : 0); 91 97 psMetadataAddF32(options->stats, PS_LIST_TAIL, "TIME_PHOT", 0, 92 98 "Time to do photometry", psTimerMark("PPSTACK_PHOT")); -
branches/cnb_branches/cnb_branch_20090301/ppStack/src/ppStackSetup.c
r23594 r24244 13 13 #define BUFFER 16 // Buffer for name array 14 14 15 // Generate an array of input filenames16 static psArray *stackNameArray(const ppStackOptions *options, // Stack options17 pmConfig *config, // Configuration18 const char *name // Name of file19 )20 {21 psAssert(config, "Require configuration");22 psAssert(config, "Require file name");23 24 psArray *array = psArrayAllocEmpty(options->num); // Array with filenames25 pmFPAview *view = pmFPAviewAlloc(0);// View to readout26 view->chip = view->cell = view->readout = -1;27 28 for (int i = 0; i < options->num; i++) {29 pmFPAfile *file = pmFPAfileSelectSingle(config->files, name, i); // File of interest30 31 psString filename = pmFPAfileName(file, view, config); // Filename of interest32 psAssert(filename, "Can't determine filename");33 psArrayAdd(array, array->n, filename);34 psFree(filename); // Drop reference35 }36 37 return array;38 }39 40 15 41 16 bool ppStackSetup(ppStackOptions *options, pmConfig *config) … … 47 22 psAssert(recipe, "We've thrown an error on this before."); 48 23 49 options->convolve = psMetadataLookupBool(NULL, config->arguments, "CONVOLVE"); // Convolve images?24 options->convolve = psMetadataLookupBool(NULL, recipe, "CONVOLVE"); // Convolve images? 50 25 if (!psMetadataLookupBool(NULL, config->arguments, "HAVE.PSF")) { 51 26 psWarning("No PSFs provided --- unable to convolve to common PSF."); … … 68 43 psFree(resolved); 69 44 options->stats = psMetadataAlloc(); 45 psMetadataAddS32(options->stats, PS_LIST_TAIL, "QUALITY", 0, "No problems", 0); 70 46 } 71 47 72 48 // Generate temporary names for convolved images 73 if (options->convolve) { 74 const char *tempDir = psMetadataLookupStr(NULL, recipe, "TEMP.DIR"); // Directory for temporary images 75 if (!tempDir) { 76 psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Unable to find TEMP.DIR in recipe"); 77 return false; 78 } 49 const char *tempDir = psMetadataLookupStr(NULL, recipe, "TEMP.DIR"); // Directory for temporary images 50 if (!tempDir) { 51 psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Unable to find TEMP.DIR in recipe"); 52 return false; 53 } 79 54 80 psString outputName = psStringCopy(psMetadataLookupStr(NULL, config->arguments,81 "OUTPUT")); // Name for temporary files82 const char *tempName = basename(outputName);83 if (!tempName) {84 psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Unable to construct basename for temporary files.");85 psFree(outputName);86 return false;87 }55 psString outputName = psStringCopy(psMetadataLookupStr(NULL, config->arguments, 56 "OUTPUT")); // Name for temporary files 57 const char *tempName = basename(outputName); 58 if (!tempName) { 59 psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Unable to construct basename for temporary files."); 60 psFree(outputName); 61 return false; 62 } 88 63 89 const char *tempImage = psMetadataLookupStr(NULL, recipe, "TEMP.IMAGE"); // Suffix for images90 const char *tempMask = psMetadataLookupStr(NULL, recipe, "TEMP.MASK"); // Suffix for masks91 const char *tempVariance = psMetadataLookupStr(NULL, recipe, "TEMP.VARIANCE"); // Suffix for var maps92 if (!tempImage || !tempMask || !tempVariance) {93 psError(PS_ERR_BAD_PARAMETER_VALUE, false,94 "Unable to find TEMP.IMAGE, TEMP.MASK and TEMP.VARIANCE in recipe");95 psFree(outputName);96 return false;97 }64 const char *tempImage = psMetadataLookupStr(NULL, recipe, "TEMP.IMAGE"); // Suffix for images 65 const char *tempMask = psMetadataLookupStr(NULL, recipe, "TEMP.MASK"); // Suffix for masks 66 const char *tempVariance = psMetadataLookupStr(NULL, recipe, "TEMP.VARIANCE"); // Suffix for var maps 67 if (!tempImage || !tempMask || !tempVariance) { 68 psError(PS_ERR_BAD_PARAMETER_VALUE, false, 69 "Unable to find TEMP.IMAGE, TEMP.MASK and TEMP.VARIANCE in recipe"); 70 psFree(outputName); 71 return false; 72 } 98 73 99 options->imageNames = psArrayAlloc(num); 100 options->maskNames = psArrayAlloc(num); 101 options->varianceNames = psArrayAlloc(num); 102 for (int i = 0; i < num; i++) { 103 psString imageName = NULL, maskName = NULL, varianceName = NULL; // Names for convolved images 104 psStringAppend(&imageName, "%s/%s.%d.%s", tempDir, tempName, i, tempImage); 105 psStringAppend(&maskName, "%s/%s.%d.%s", tempDir, tempName, i, tempMask); 106 psStringAppend(&varianceName, "%s/%s.%d.%s", tempDir, tempName, i, tempVariance); 107 psTrace("ppStack", 5, "Temporary files: %s %s %s\n", imageName, maskName, varianceName); 108 options->imageNames->data[i] = imageName; 109 options->maskNames->data[i] = maskName; 110 options->varianceNames->data[i] = varianceName; 111 } 112 psFree(outputName); 113 } else { 114 options->imageNames = stackNameArray(options, config, "PPSTACK.INPUT"); 115 options->maskNames = stackNameArray(options, config, "PPSTACK.INPUT.MASK"); 116 options->varianceNames = stackNameArray(options, config, "PPSTACK.INPUT.VARIANCE"); 74 options->imageNames = psArrayAlloc(num); 75 options->maskNames = psArrayAlloc(num); 76 options->varianceNames = psArrayAlloc(num); 77 for (int i = 0; i < num; i++) { 78 psString imageName = NULL, maskName = NULL, varianceName = NULL; // Names for convolved images 79 psStringAppend(&imageName, "%s/%s.%d.%s", tempDir, tempName, i, tempImage); 80 psStringAppend(&maskName, "%s/%s.%d.%s", tempDir, tempName, i, tempMask); 81 psStringAppend(&varianceName, "%s/%s.%d.%s", tempDir, tempName, i, tempVariance); 82 psTrace("ppStack", 5, "Temporary files: %s %s %s\n", imageName, maskName, varianceName); 83 options->imageNames->data[i] = imageName; 84 options->maskNames->data[i] = maskName; 85 options->varianceNames->data[i] = varianceName; 117 86 } 87 psFree(outputName); 118 88 119 89 if (!pmConfigMaskSetBits(NULL, NULL, config)) { -
branches/cnb_branches/cnb_branch_20090301/ppStack/src/ppStackVersion.c
r23352 r24244 10 10 11 11 #include "ppStack.h" 12 #include "ppStackVersionDefinitions.h" 12 13 13 14 #ifndef PPSTACK_VERSION … … 21 22 #endif 22 23 23 #define xstr(s) str(s)24 #define str(s) #s25 26 24 psString ppStackVersion(void) 27 25 { 28 26 char *value = NULL; 29 psStringAppend(&value, "%s@%s", xstr(PPSTACK_BRANCH), xstr(PPSTACK_VERSION));27 psStringAppend(&value, "%s@%s", PPSTACK_BRANCH, PPSTACK_VERSION); 30 28 return value; 31 29 } … … 33 31 psString ppStackSource(void) 34 32 { 35 return psStringCopy( xstr(PPSTACK_SOURCE));33 return psStringCopy(PPSTACK_SOURCE); 36 34 } 37 35
Note:
See TracChangeset
for help on using the changeset viewer.
