Changeset 16407
- Timestamp:
- Feb 11, 2008, 6:47:44 PM (18 years ago)
- Location:
- branches/pap_branch_080207/ppStack/src
- Files:
-
- 3 edited
-
ppStack.h (modified) (1 diff)
-
ppStackLoop.c (modified) (8 diffs)
-
ppStackReadout.c (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/pap_branch_080207/ppStack/src/ppStack.h
r16382 r16407 28 28 bool ppStackReadout(const pmConfig *config, // Configuration 29 29 pmReadout *outRO, // Output readout 30 const psArray *readouts // Input readouts 30 const psArray *readouts, // Input readouts 31 const psArray *regions, // Array with array of regions used in each PSF matching 32 const psArray *kernels // Array with array of kernels used in each PSF matching 31 33 ); 32 34 -
branches/pap_branch_080207/ppStack/src/ppStackLoop.c
r16404 r16407 10 10 11 11 #include "ppStack.h" 12 13 #define ARRAY_BUFFER 16 // Number to add to array at a time 12 14 13 15 // Here follows lists of files for activation/deactivation at various stages. Each must be NULL-terminated. … … 39 41 "PSPHOT.INPUT.CMF", 0 }; 40 42 41 #define CONVOLVED_ALREADY // Already have the convolution products --- testing43 //#define CONVOLVED_ALREADY // Already have the convolution products --- testing 42 44 43 45 … … 308 310 // Generate convolutions and write them to disk 309 311 psArray *cells = psArrayAlloc(num); // Cells for convolved images --- a handle for reading again 310 psArray *kernels = psArrayAlloc(num); // Subtraction kernels --- required in the stacking 312 psArray *subKernels = psArrayAlloc(num); // Subtraction kernels --- required in the stacking 313 psArray *subRegions = psArrayAlloc(num); // Subtraction regions --- required in the stacking 311 314 for (int i = 0; i < num; i++) { 312 315 pmFPAfileActivate(config->files, false, NULL); … … 339 342 #endif 340 343 344 // Extract the regions and solutions used in the image matching 345 // This stops them from being freed when we iterate back up the FPA 346 psArray *regions = psArrayAllocEmpty(ARRAY_BUFFER); // Array of regions 347 { 348 psMetadataIterator *iter = psMetadataIteratorAlloc(readout->analysis, PS_LIST_HEAD, 349 PM_SUBTRACTION_ANALYSIS_REGION); // Iterator 350 psMetadataItem *item = NULL;// Item from iteration 351 while ((item = psMetadataGetAndIncrement(iter))) { 352 assert(item->type == PS_DATA_REGION); 353 regions = psArrayAdd(regions, ARRAY_BUFFER, item->data.V); 354 } 355 psFree(iter); 356 } 357 psArray *kernels = psArrayAllocEmpty(ARRAY_BUFFER); // Array of kernels 358 { 359 psMetadataIterator *iter = psMetadataIteratorAlloc(readout->analysis, PS_LIST_HEAD, 360 PM_SUBTRACTION_ANALYSIS_KERNEL); // Iterator 361 psMetadataItem *item = NULL;// Item from iteration 362 while ((item = psMetadataGetAndIncrement(iter))) { 363 assert(item->type == PS_DATA_VECTOR); 364 kernels = psArrayAdd(kernels, ARRAY_BUFFER, item->data.V); 365 } 366 psFree(iter); 367 } 368 assert(regions->n == kernels->n); 369 370 subRegions->data[i] = regions; 371 subKernels->data[i] = kernels; 341 372 cells->data[i] = psMemIncrRefCounter(readout->parent); 342 kernels->data[i] = psMemIncrRefCounter(psMetadataLookupPtr(NULL, readout->analysis, 343 PM_SUBTRACTION_ANALYSIS_KERNEL)); 373 344 374 filesIterateUp(config); 345 375 } … … 357 387 if (!view) { 358 388 psFree(cells); 359 psFree(kernels); 389 psFree(subKernels); 390 psFree(subRegions); 360 391 return false; 361 392 } … … 391 422 psError(PS_ERR_IO, false, "Unable to read chunk %d for file %d", numChunk, i); 392 423 psFree(readouts); 393 psFree(kernels); 424 psFree(subKernels); 425 psFree(subRegions); 394 426 psFree(outRO); 395 427 psFree(view); … … 406 438 #endif 407 439 408 if (!ppStackReadout(config, outRO, readouts )) {440 if (!ppStackReadout(config, outRO, readouts, subRegions, subKernels)) { 409 441 psError(PS_ERR_UNKNOWN, false, "Unable to stack images.\n"); 410 442 psFree(readouts); 411 psFree(kernels); 443 psFree(subKernels); 444 psFree(subRegions); 412 445 psFree(outRO); 413 446 psFree(view); … … 425 458 426 459 psFree(readouts); 427 psFree(kernels); 460 psFree(subKernels); 461 psFree(subRegions); 428 462 for (int i = 0; i < num; i++) { 429 463 psFitsClose(imageFits->data[i]); -
branches/pap_branch_080207/ppStack/src/ppStackReadout.c
r16404 r16407 11 11 12 12 13 #define ARRAY_BUFFER 16 // Number to add to array at a time14 13 #define WCS_TOLERANCE 0.001 // Tolerance for WCS 15 14 … … 17 16 //#define INSPECTION_FILES // Write inspection mask? 18 17 19 bool ppStackReadout(const pmConfig *config, pmReadout *outRO, const psArray *readouts) 18 bool ppStackReadout(const pmConfig *config, pmReadout *outRO, const psArray *readouts, 19 const psArray *regions, const psArray *kernels) 20 20 { 21 21 assert(config); 22 22 assert(outRO); 23 23 assert(readouts); 24 assert(regions); 25 assert(kernels); 26 assert(readouts->n == regions->n); 27 assert(regions->n == kernels->n); 24 28 25 29 // Get the recipe values … … 63 67 totExposure += exposure; // Total exposure time 64 68 69 #if 0 65 70 if (i == 0) { 66 71 // Copy astrometry over … … 84 89 } 85 90 } 91 #endif 86 92 87 93 // Ensure there is a mask, or pmStackCombine will complain … … 128 134 #endif 129 135 136 // Reject pixels 130 137 for (int i = 0; i < num; i++) { 131 138 pmStackData *data = stack->data[i]; // Data for this image 132 pmReadout *readout = data->readout; // Readout for this image 133 134 // Extract the regions and solutions used in the image matching 135 psArray *regions = psArrayAllocEmpty(ARRAY_BUFFER); // Array of regions 136 { 137 psMetadataIterator *iter = psMetadataIteratorAlloc(readout->analysis, PS_LIST_HEAD, 138 PM_SUBTRACTION_ANALYSIS_REGION); // Iterator 139 psMetadataItem *item = NULL;// Item from iteration 140 while ((item = psMetadataGetAndIncrement(iter))) { 141 assert(item->type == PS_DATA_REGION); 142 regions = psArrayAdd(regions, ARRAY_BUFFER, item->data.V); 143 } 144 psFree(iter); 145 } 146 psArray *kernels = psArrayAllocEmpty(ARRAY_BUFFER); // Array of kernels 147 { 148 psMetadataIterator *iter = psMetadataIteratorAlloc(readout->analysis, PS_LIST_HEAD, 149 PM_SUBTRACTION_ANALYSIS_KERNEL); // Iterator 150 psMetadataItem *item = NULL;// Item from iteration 151 while ((item = psMetadataGetAndIncrement(iter))) { 152 assert(item->type == PS_DATA_VECTOR); 153 kernels = psArrayAdd(kernels, ARRAY_BUFFER, item->data.V); 154 } 155 psFree(iter); 156 } 157 assert(regions->n == kernels->n); 158 159 psPixels *reject = pmStackReject(data->pixels, threshold, regions, kernels); // Pixels to reject 139 psPixels *reject = pmStackReject(data->pixels, threshold, regions->data[i], 140 kernels->data[i]); // Pixels to reject 160 141 psFree(data->pixels); 161 142 data->pixels = reject; 162 163 psFree(kernels);164 psFree(regions);165 143 } 166 144
Note:
See TracChangeset
for help on using the changeset viewer.
