Changeset 14362
- Timestamp:
- Jul 20, 2007, 6:50:05 PM (19 years ago)
- Location:
- trunk/ppSub/src
- Files:
-
- 2 edited
-
ppSubArguments.c (modified) (2 diffs)
-
ppSubReadout.c (modified) (13 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ppSub/src/ppSubArguments.c
r14309 r14362 185 185 psMetadataAddStr(arguments, PS_LIST_TAIL, "-isis-widths", 0, "ISIS Gaussian widths (comma-separated)", NULL); 186 186 psMetadataAddStr(arguments, PS_LIST_TAIL, "-isis-orders", 0, "ISIS polynomial orders (comma-separated)", NULL); 187 psMetadataAddS32(arguments, PS_LIST_TAIL, "-rings-order", 0, "RINGS polynomial order", -1); 187 188 psMetadataAddS32(arguments, PS_LIST_TAIL, "-inner", 0, "SPAM and FRIES inner radius", -1); 188 189 psMetadataAddS32(arguments, PS_LIST_TAIL, "-spam-binning", 0, "SPAM kernel binning", 2); … … 234 235 VALUE_ARG_RECIPE_INT("-order", "SPATIAL.ORDER", S32, -1); 235 236 VALUE_ARG_RECIPE_FLOAT("-spacing", "STAMP.SPACING", F32); 237 VALUE_ARG_RECIPE_INT("-rings-order", "RINGS.ORDER", S32, -1); 236 238 VALUE_ARG_RECIPE_INT("-inner", "INNER", S32, -1); 237 239 VALUE_ARG_RECIPE_INT("-spam-binning", "SPAM.BINNING", S32, 0); -
trunk/ppSub/src/ppSubReadout.c
r14328 r14362 12 12 #define TESTING 13 13 #define WCS_TOLERANCE 0.001 // Tolerance for WCS 14 15 #include <unistd.h> 16 static void memCheck(const char *where) 17 { 18 return; 19 psMemBlock **leaks = NULL; 20 int numLeaks = psMemCheckLeaks(0, &leaks, NULL, true); 21 size_t largestSize = 0; 22 psMemId largest = 0; 23 size_t totalSize = 0; 24 for (int i = 0; i < numLeaks; i++) { 25 psMemBlock *mb = leaks[i]; 26 totalSize += mb->userMemorySize; 27 if (mb->userMemorySize > largestSize) { 28 largestSize = mb->userMemorySize; 29 largest = mb->id; 30 } 31 } 32 psFree(leaks); 33 fprintf(stderr, "%s:\n", where); 34 fprintf(stderr, " Memory in use: %zd\n", totalSize); 35 fprintf(stderr, " Largest block: %ld\n", largest); 36 fprintf(stderr, " sbrk(): %zd\n", (unsigned long)sbrk(0)); 37 return; 38 } 14 39 15 40 bool ppSubReadout(pmConfig *config, const pmFPAview *view) … … 38 63 psVector *orders = psMetadataLookupPtr(NULL, config->arguments, "ISIS.ORDERS"); // ISIS Polynomial orders 39 64 int inner = psMetadataLookupS32(NULL, config->arguments, "INNER"); // Inner radius 65 int ringsOrder = psMetadataLookupS32(NULL, config->arguments, "RINGS.ORDER"); // RINGS polynomial order 40 66 int binning = psMetadataLookupS32(NULL, config->arguments, "SPAM.BINNING"); // Binning for SPAM kernel 41 67 psMaskType maskBad = pmConfigMask(psMetadataLookupStr(NULL, config->arguments, "MASK.BAD"), … … 62 88 } 63 89 90 memCheck("start"); 91 64 92 // Mask for subtraction 65 93 psImage *subMask = pmSubtractionMask(inRO->mask, refRO->mask, maskBad, size, footprint); 94 95 memCheck("mask"); 66 96 67 97 #if 0 … … 81 111 #endif 82 112 113 // Kernel basis functions 83 114 pmSubtractionKernels *kernels = pmSubtractionKernelsGenerate(type, size, order, widths, orders, 84 inner, binning ); // Kernel basis functions115 inner, binning, ringsOrder); 85 116 psArray *stamps = NULL; // Stamps for matching PSF 86 117 psVector *solution = NULL; // Solution to match PSF 118 119 memCheck("kernels"); 87 120 88 121 int numRejected = -1; // Number of rejected stamps in each iteration … … 94 127 } 95 128 129 memCheck(" find stamps"); 130 96 131 if (!pmSubtractionCalculateEquation(stamps, refRO->image, inRO->image, inRO->weight, 97 132 kernels, footprint)) { … … 100 135 } 101 136 137 memCheck(" calculate equation"); 138 102 139 solution = pmSubtractionSolveEquation(solution, stamps); 103 140 if (!solution) { … … 105 142 goto ERROR; 106 143 } 144 145 memCheck(" solve equation"); 107 146 108 147 numRejected = pmSubtractionRejectStamps(stamps, refRO->image, inRO->image, subMask, … … 113 152 } 114 153 psLogMsg("ppSub", PS_LOG_INFO, "%d stamps rejected on iteration %d.", numRejected, i); 154 155 memCheck(" reject stamps"); 115 156 } 116 157 … … 124 165 psFree(stamps); 125 166 stamps = NULL; 167 168 memCheck("solution"); 126 169 127 170 #ifdef TESTING … … 179 222 #endif 180 223 224 memCheck("diag outputs"); 225 181 226 psImage *convImage = NULL, *convWeight = NULL, *convMask = NULL; // Convolved images 182 227 if (!pmSubtractionConvolve(&convImage, &convWeight, &convMask, refRO->image, refRO->weight, subMask, … … 191 236 psFree(solution); 192 237 238 memCheck("convolution"); 239 193 240 // Do the subtraction 194 241 if (reverse) { … … 202 249 } 203 250 251 memCheck("subtraction"); 252 204 253 psFree(convImage); 205 254 psFree(convMask); 206 255 psFree(convWeight); 256 257 memCheck("subtraction freed"); 207 258 208 259 outRO->data_exists = true; … … 257 308 } 258 309 310 memCheck("header"); 311 259 312 psFree(outRO); 260 313
Note:
See TracChangeset
for help on using the changeset viewer.
