Changeset 27840 for branches/simtest_nebulous_branches/psModules/src/imcombine/pmSubtractionAnalysis.c
- Timestamp:
- May 3, 2010, 8:50:52 AM (16 years ago)
- Location:
- branches/simtest_nebulous_branches
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/simtest_nebulous_branches
- Property svn:mergeinfo changed
-
branches/simtest_nebulous_branches/psModules
-
Property svn:mergeinfo
set to (toggle deleted branches)
/trunk/psModules merged eligible /branches/eam_branches/stackphot.20100406/psModules 27623-27653 /branches/pap_delete/psModules 27530-27595
-
Property svn:mergeinfo
set to (toggle deleted branches)
-
branches/simtest_nebulous_branches/psModules/src/imcombine/pmSubtractionAnalysis.c
r25060 r27840 16 16 #define KERNEL_MOSAIC 2 // Half-number of kernel instances in the mosaic image 17 17 18 //#define TESTING 18 19 19 20 bool pmSubtractionAnalysis(psMetadata *analysis, psMetadata *header, … … 42 43 psFree(subRegion); 43 44 44 psMetadataAddPtr(header, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_REGION, 45 PS_DATA_REGION | PS_META_DUPLICATE_OK, 45 psMetadataAddStr(header, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_REGION, PS_META_DUPLICATE_OK, 46 46 "Region over which subtraction was performed", string); 47 47 psFree(string); … … 74 74 false); // Image of the kernel 75 75 if (!kernel) { 76 psError( PS_ERR_UNKNOWN, false, "Unable to generate kernel image.");76 psError(psErrorCodeLast(), false, "Unable to generate kernel image."); 77 77 psFree(convKernels); 78 78 return false; … … 81 81 if (psImageOverlaySection(convKernels, kernel, (i + KERNEL_MOSAIC) * fullSize, 82 82 (j + KERNEL_MOSAIC) * fullSize, "=") == 0) { 83 psError( PS_ERR_UNKNOWN, false, "Unable to overlay kernel image.");83 psError(psErrorCodeLast(), false, "Unable to overlay kernel image."); 84 84 psFree(kernel); 85 85 psFree(convKernels); … … 93 93 true); // Image of the kernel 94 94 if (!kernel) { 95 psError( PS_ERR_UNKNOWN, false, "Unable to generate kernel image.");95 psError(psErrorCodeLast(), false, "Unable to generate kernel image."); 96 96 psFree(convKernels); 97 97 return false; … … 101 101 (2 * KERNEL_MOSAIC + 1 + i + KERNEL_MOSAIC) * fullSize + 4, 102 102 (j + KERNEL_MOSAIC) * fullSize, "=") == 0) { 103 psError( PS_ERR_UNKNOWN, false, "Unable to overlay kernel image.");103 psError(psErrorCodeLast(), false, "Unable to overlay kernel image."); 104 104 psFree(kernel); 105 105 psFree(convKernels); … … 117 117 } 118 118 119 120 #if 0 119 // sample difference images 120 { 121 psMetadataAddArray(analysis, PS_LIST_TAIL, "SUBTRACTION.SAMPLE.STAMP.SET", PS_META_DUPLICATE_OK, "Sample Difference Stamps", kernels->sampleStamps); 122 } 123 124 #ifdef TESTING 121 125 // Generate images of the kernel components 122 126 { 123 127 psMetadata *header = psMetadataAlloc(); // Header 124 for (int i = 0; i < solution->n; i++) {128 for (int i = 0; i < kernels->solution1->n; i++) { 125 129 psString name = NULL; // Header keyword 126 130 psStringAppend(&name, "SOLN%04d", i); 127 psMetadataAddF64(header, PS_LIST_TAIL, name, 0, NULL, solution->data.F64[i]);131 psMetadataAddF64(header, PS_LIST_TAIL, name, 0, NULL, kernels->solution1->data.F64[i]); 128 132 psFree(name); 129 133 } 130 psArray *kernelImages = pmSubtractionKernelSolutions( solution, kernels, 0.0, 0.0);131 psFits *kernelFile = psFitsOpen("kernels .fits", "w");134 psArray *kernelImages = pmSubtractionKernelSolutions(kernels, 0.0, 0.0, false); 135 psFits *kernelFile = psFitsOpen("kernels1.fits", "w"); 132 136 (void)psFitsWriteImageCube(kernelFile, header, kernelImages, NULL); 133 137 psFitsClose(kernelFile); … … 135 139 psFree(header); 136 140 } 141 if (kernels->solution2) { 142 psMetadata *header = psMetadataAlloc(); // Header 143 for (int i = 0; i < kernels->solution2->n; i++) { 144 psString name = NULL; // Header keyword 145 psStringAppend(&name, "SOLN%04d", i); 146 psMetadataAddF64(header, PS_LIST_TAIL, name, 0, NULL, kernels->solution2->data.F64[i]); 147 psFree(name); 148 } 149 psArray *kernelImages = pmSubtractionKernelSolutions(kernels, 0.0, 0.0, true); 150 psFits *kernelFile = psFitsOpen("kernels2.fits", "w"); 151 (void)psFitsWriteImageCube(kernelFile, header, kernelImages, NULL); 152 psFitsClose(kernelFile); 153 psFree(kernelImages); 154 psFree(header); 155 } 137 156 #endif 138 157 … … 142 161 psImage *image = pmSubtractionKernelImage(kernels, 0.5, 0.5, false); // Image of the kernel 143 162 if (!image) { 144 psError( PS_ERR_UNKNOWN, false, "Unable to generate image of kernel.");163 psError(psErrorCodeLast(), false, "Unable to generate image of kernel."); 145 164 return false; 146 165 } … … 197 216 psImage *image = pmSubtractionKernelImage(kernels, 0.5, 0.5, false); // Image of the kernel 198 217 if (!image) { 199 psError( PS_ERR_UNKNOWN, false, "Unable to generate image of kernel.");218 psError(psErrorCodeLast(), false, "Unable to generate image of kernel."); 200 219 return false; 201 220 } … … 254 273 // Difference in background 255 274 { 256 psImage *polyValues = p_pmSubtractionPolynomialFromCoords(NULL, kernels, numCols, numRows, 257 numCols / 2.0, numRows / 2.0); // Polynomial 275 psImage *polyValues = p_pmSubtractionPolynomial(NULL, kernels->spatialOrder, 0.0, 0.0); // Polynomial 258 276 float bg = p_pmSubtractionSolutionBackground(kernels, polyValues); // Background difference 259 277 … … 280 298 psMetadataAddF32(header, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_DEV_RMS, 0, "RMS stamp deviation", 281 299 kernels->rms); 300 301 psMetadataAddF32(analysis, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_FSIGMA_RES_MEAN, 0, "Mean Fractional Sigma of Residuals", kernels->fSigResMean); 302 psMetadataAddF32(analysis, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_FSIGMA_RES_STDEV, 0, "Mean Fractional Sigma of Residuals", kernels->fSigResStdev); 303 psMetadataAddF32(analysis, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_FMIN_RES_MEAN, 0, "Mean Fractional Sigma of Residuals", kernels->fSigResMean); 304 psMetadataAddF32(analysis, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_FMIN_RES_STDEV, 0, "Mean Fractional Sigma of Residuals", kernels->fSigResStdev); 305 psMetadataAddF32(analysis, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_FMAX_RES_MEAN, 0, "Mean Fractional Sigma of Residuals", kernels->fSigResMean); 306 psMetadataAddF32(analysis, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_FMAX_RES_STDEV, 0, "Mean Fractional Sigma of Residuals", kernels->fSigResStdev); 307 308 psMetadataAddF32(header, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_FSIGMA_RES_MEAN, 0, "Mean Fractional Sigma of Residuals", kernels->fSigResMean); 309 psMetadataAddF32(header, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_FSIGMA_RES_STDEV, 0, "Mean Fractional Sigma of Residuals", kernels->fSigResStdev); 310 psMetadataAddF32(header, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_FMIN_RES_MEAN, 0, "Mean Fractional Sigma of Residuals", kernels->fSigResMean); 311 psMetadataAddF32(header, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_FMIN_RES_STDEV, 0, "Mean Fractional Sigma of Residuals", kernels->fSigResStdev); 312 psMetadataAddF32(header, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_FMAX_RES_MEAN, 0, "Mean Fractional Sigma of Residuals", kernels->fSigResMean); 313 psMetadataAddF32(header, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_FMAX_RES_STDEV, 0, "Mean Fractional Sigma of Residuals", kernels->fSigResStdev); 282 314 } 283 315
Note:
See TracChangeset
for help on using the changeset viewer.
