Changeset 29148
- Timestamp:
- Sep 12, 2010, 12:38:23 PM (16 years ago)
- Location:
- branches/eam_branches/ipp-20100823/psModules/src/imcombine
- Files:
-
- 8 edited
-
pmSubtraction.c (modified) (1 diff)
-
pmSubtractionAnalysis.c (modified) (1 diff)
-
pmSubtractionAnalysis.h (modified) (1 diff)
-
pmSubtractionEquation.c (modified) (11 diffs)
-
pmSubtractionKernels.c (modified) (4 diffs)
-
pmSubtractionKernels.h (modified) (1 diff)
-
pmSubtractionStamps.c (modified) (1 diff)
-
pmSubtractionVisual.c (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20100823/psModules/src/imcombine/pmSubtraction.c
r29004 r29148 540 540 541 541 psImage *conv = psImageConvolveFFT(NULL, image->image, NULL, 0, kernel); // Convolved image 542 543 // note: do not attempt to renormalize kernels here: cannot have different stars with 544 // different kernel ratios 545 542 546 int x0 = - image->xMin, y0 = - image->yMin; // Position of centre of convolved image 543 547 psKernel *convolved = psKernelAllocFromImage(conv, x0, y0); // Kernel version -
branches/eam_branches/ipp-20100823/psModules/src/imcombine/pmSubtractionAnalysis.c
r27086 r29148 299 299 kernels->rms); 300 300 301 psMetadataAddF32(analysis, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_F SIGMA_RES_MEAN, 0, "Mean Fractional Sigma of Residuals", kernels->fSigResMean);302 psMetadataAddF32(analysis, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_F SIGMA_RES_STDEV, 0, "Mean Fractional Sigma of Residuals", kernels->fSigResStdev);303 psMetadataAddF32(analysis, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_F MIN_RES_MEAN, 0, "Mean Fractional Sigma of Residuals", kernels->fSigResMean);304 psMetadataAddF32(analysis, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_F MIN_RES_STDEV, 0, "Mean Fractional Sigma of Residuals", kernels->fSigResStdev);305 psMetadataAddF32(analysis, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_F MAX_RES_MEAN, 0, "Mean Fractional Sigma of Residuals", kernels->fSigResMean);306 psMetadataAddF32(analysis, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_F MAX_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);301 psMetadataAddF32(analysis, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_FRES_SIGMA_MEAN, 0, "Fractional Sigma of Residuals (Mean)", kernels->fResSigmaMean); 302 psMetadataAddF32(analysis, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_FRES_SIGMA_STDEV, 0, "Fractional Sigma of Residuals (Stdev)", kernels->fResSigmaStdev); 303 psMetadataAddF32(analysis, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_FRES_OUTER_MEAN, 0, "Fractional Residual Flux (Mean, R > 2 pix)", kernels->fResOuterMean); 304 psMetadataAddF32(analysis, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_FRES_OUTER_STDEV, 0, "Fractional Residual Flux (Stdev, R > 2 pix)", kernels->fResOuterStdev); 305 psMetadataAddF32(analysis, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_FRES_TOTAL_MEAN, 0, "Fractional Residual Flux (Mean, R > 0 pix)", kernels->fResTotalMean); 306 psMetadataAddF32(analysis, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_FRES_TOTAL_STDEV, 0, "Fractional Residual Flux (Stdev, R > 0 pix)", kernels->fResTotalStdev); 307 308 psMetadataAddF32(header, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_FRES_SIGMA_MEAN, 0, "Fractional Sigma of Residuals (Mean)", kernels->fResSigmaMean); 309 psMetadataAddF32(header, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_FRES_SIGMA_STDEV, 0, "Fractional Sigma of Residuals (Stdev)", kernels->fResSigmaStdev); 310 psMetadataAddF32(header, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_FRES_OUTER_MEAN, 0, "Fractional Residual Flux (Mean, R > 2 pix)", kernels->fResOuterMean); 311 psMetadataAddF32(header, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_FRES_OUTER_STDEV, 0, "Fractional Residual Flux (Stdev, R > 2 pix)", kernels->fResOuterStdev); 312 psMetadataAddF32(header, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_FRES_TOTAL_MEAN, 0, "Fractional Residual Flux (Mean, R > 0 pix)", kernels->fResTotalMean); 313 psMetadataAddF32(header, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_FRES_TOTAL_STDEV, 0, "Fractional Residual Flux (Stdev, R > 0 pix)", kernels->fResTotalStdev); 314 314 } 315 315 -
branches/eam_branches/ipp-20100823/psModules/src/imcombine/pmSubtractionAnalysis.h
r26893 r29148 24 24 #define PM_SUBTRACTION_ANALYSIS_DECONV_MAX "SUBTRACTION.DECONV.MAX" // Maximum deconvolution fraction 25 25 26 #define PM_SUBTRACTION_ANALYSIS_F SIGMA_RES_MEAN "SUBTRACTION.RES.FSIGMA.MEAN"// RMS stamp deviation27 #define PM_SUBTRACTION_ANALYSIS_F SIGMA_RES_STDEV "SUBTRACTION.RES.FSIGMA.STDEV"// RMS stamp deviation28 #define PM_SUBTRACTION_ANALYSIS_F MIN_RES_MEAN "SUBTRACTION.RES.FMIN.MEAN"// RMS stamp deviation29 #define PM_SUBTRACTION_ANALYSIS_F MIN_RES_STDEV "SUBTRACTION.RES.FMIN.STDEV"// RMS stamp deviation30 #define PM_SUBTRACTION_ANALYSIS_F MAX_RES_MEAN "SUBTRACTION.RES.FMAX.MEAN"// RMS stamp deviation31 #define PM_SUBTRACTION_ANALYSIS_F MAX_RES_STDEV "SUBTRACTION.RES.FMAX.STDEV"// RMS stamp deviation26 #define PM_SUBTRACTION_ANALYSIS_FRES_SIGMA_MEAN "SUBTRACTION.FRES.MEAN" // RMS stamp deviation 27 #define PM_SUBTRACTION_ANALYSIS_FRES_SIGMA_STDEV "SUBTRACTION.FRES.STDEV" // RMS stamp deviation 28 #define PM_SUBTRACTION_ANALYSIS_FRES_OUTER_MEAN "SUBTRACTION.FRES.OUTER.MEAN" // RMS stamp deviation 29 #define PM_SUBTRACTION_ANALYSIS_FRES_OUTER_STDEV "SUBTRACTION.FRES.OUTER.STDEV" // RMS stamp deviation 30 #define PM_SUBTRACTION_ANALYSIS_FRES_TOTAL_MEAN "SUBTRACTION.FRES.TOTAL.MEAN" // RMS stamp deviation 31 #define PM_SUBTRACTION_ANALYSIS_FRES_TOTAL_STDEV "SUBTRACTION.FRES.TOTAL.STDEV" // RMS stamp deviation 32 32 33 33 // Derive QA information about the subtraction -
branches/eam_branches/ipp-20100823/psModules/src/imcombine/pmSubtractionEquation.c
r29126 r29148 972 972 pmSubtractionStamp *stamp = stamps->stamps->data[i]; // Stamp of interest 973 973 if (stamp->status == PM_SUBTRACTION_STAMP_USED) { 974 974 975 (void)psBinaryOp(sumMatrix, sumMatrix, "+", stamp->matrix); 975 976 (void)psBinaryOp(sumVector, sumVector, "+", stamp->vector); 977 976 978 psVectorAppend(norms, stamp->norm); 979 977 980 pmSubtractionStampPrint(ds9, stamp->x, stamp->y, stamps->footprint, "green"); 978 981 numStamps++; … … 1107 1110 } 1108 1111 1109 #ifdef TESTING 1110 psFitsWriteImageSimple ("sumMatrix.fits", sumMatrix, NULL); 1112 #if 0 1113 psImage *save = psImageCopy(NULL, sumMatrix, PS_TYPE_F32); 1114 psFitsWriteImageSimple ("sumMatrix.fits", save, NULL); 1111 1115 psVectorWriteFile("sumVector.dat", sumVector); 1116 psFree (save); 1112 1117 #endif 1113 1118 … … 1191 1196 sumVector->data.F64[normIndex] = 0.0; 1192 1197 1193 solution = psMatrixSolveSVD(solution, sumMatrix, sumVector, NAN); 1194 1198 // save the matrix and vector after the NULLs have been set 1199 #if 0 1200 psImage *save = psImageCopy(NULL, sumMatrix, PS_TYPE_F32); 1201 psFitsWriteImageSimple ("sumMatrix.fits", save, NULL); 1202 psVectorWriteFile("sumVector.dat", sumVector); 1203 psFree (save); 1204 #endif 1205 1206 solution = psMatrixSolveSVD(solution, sumMatrix, sumVector, 1e-6); 1207 // solution = psMatrixSolveSVD(solution, sumMatrix, sumVector, 3e-4); 1208 // psVectorCopy (solution, sumVector, PS_TYPE_F64); 1209 // psMatrixGJSolve(sumMatrix, solution); 1195 1210 solution->data.F64[normIndex] = normValue; 1196 1211 } … … 1265 1280 } 1266 1281 1267 bool pmSubtractionResidualStats(psVector *fSigRes, psVector *fMaxRes, psVector *fMinRes, psKernel *target, psKernel *source, psKernel *residual, double norm, int footprint) { 1268 1269 // XXX measure some useful stats on the residuals 1282 // measure some useful stats on the stamp residuals: 1283 // fResSigma : the residual stdev / total flux 1284 // fResOuter : the residual fabs / total flux for R > 2 pix 1285 // fResTotal : the residual fabs / total flux for R > 0 pix 1286 bool pmSubtractionResidualStats(psVector *fResSigma, psVector *fResOuter, psVector *fResTotal, psKernel *target, psKernel *source, psKernel *residual, double norm, int footprint) { 1287 1270 1288 float sum = 0.0; 1271 1289 float peak = 0.0; … … 1277 1295 } 1278 1296 1279 // only count pixels with more than X% of the source flux1280 // calculate stdev(dflux)1297 // init counters 1298 int npix = 0; 1281 1299 float dflux1 = 0.0; 1282 1300 float dflux2 = 0.0; 1283 int npix = 0; 1284 1285 float dmax = 0.0; 1286 float dmin = 0.0; 1287 1288 // XXX update these with a bit more rigour 1301 float dOuter = 0.0; 1302 float dTotal = 0.0; 1303 1289 1304 for (int y = - footprint; y <= footprint; y++) { 1290 1305 for (int x = - footprint; x <= footprint; x++) { 1291 // float dflux = 0.5*(target->kernel[y][x] + source->kernel[y][x] * norm);1292 // if (dflux < 0.02*sum) continue;1293 1306 dflux1 += residual->kernel[y][x]; 1294 1307 dflux2 += PS_SQR(residual->kernel[y][x]); 1295 // dmax = PS_MAX(residual->kernel[y][x], dmax); 1296 // dmin = PS_MIN(residual->kernel[y][x], dmin); 1297 dmax += fabs(residual->kernel[y][x]); 1298 1308 dTotal += fabs(residual->kernel[y][x]); 1299 1309 if (hypot(x,y) > 2.0) { 1300 d min+= fabs(residual->kernel[y][x]);1310 dOuter += fabs(residual->kernel[y][x]); 1301 1311 } 1302 1312 npix ++; … … 1305 1315 float sigma = sqrt(dflux2 / npix - PS_SQR(dflux1/npix)); 1306 1316 if (!isfinite(sum)) return false; 1307 if (!isfinite(dmax)) return false;1308 if (!isfinite(dmin)) return false;1309 1317 if (!isfinite(peak)) return false; 1310 1311 fprintf (stderr, "sum: %f, peak: %f, sigma: %f, fsigma: %f, fmax: %f, fmin: %f\n", sum, peak, sigma, sigma/sum, dmax/sum, dmin/sum); 1312 psVectorAppend(fSigRes, sigma/sum); 1313 psVectorAppend(fMaxRes, dmax/sum); 1314 psVectorAppend(fMinRes, dmin/sum); 1318 if (!isfinite(dOuter)) return false; 1319 if (!isfinite(dTotal)) return false; 1320 1321 fprintf (stderr, "sum: %f, peak: %f, sigma: %f, fsigma: %f, fmax: %f, fmin: %f\n", sum, peak, sigma, sigma/sum, dOuter/sum, dTotal/sum); 1322 psVectorAppend(fResSigma, sigma/sum); 1323 psVectorAppend(fResOuter, dOuter/sum); 1324 psVectorAppend(fResTotal, dTotal/sum); 1315 1325 return true; 1316 1326 } … … 1335 1345 pmSubtractionVisualShowFitInit (stamps); 1336 1346 1337 psVector *f SigRes= psVectorAllocEmpty(stamps->num, PS_TYPE_F32);1338 psVector *f MinRes= psVectorAllocEmpty(stamps->num, PS_TYPE_F32);1339 psVector *f MaxRes= psVectorAllocEmpty(stamps->num, PS_TYPE_F32);1347 psVector *fResSigma = psVectorAllocEmpty(stamps->num, PS_TYPE_F32); 1348 psVector *fResOuter = psVectorAllocEmpty(stamps->num, PS_TYPE_F32); 1349 psVector *fResTotal = psVectorAllocEmpty(stamps->num, PS_TYPE_F32); 1340 1350 1341 1351 // we want to save the residual images for the 9 brightest stamps. … … 1449 1459 } 1450 1460 1451 pmSubtractionResidualStats(f SigRes, fMaxRes, fMinRes, target, source, residual, norm, footprint);1461 pmSubtractionResidualStats(fResSigma, fResOuter, fResTotal, target, source, residual, norm, footprint); 1452 1462 1453 1463 } else { … … 1485 1495 } 1486 1496 1487 pmSubtractionResidualStats(f SigRes, fMaxRes, fMinRes, image1, image2, residual, norm, footprint);1497 pmSubtractionResidualStats(fResSigma, fResOuter, fResTotal, image1, image2, residual, norm, footprint); 1488 1498 } 1489 1499 … … 1564 1574 1565 1575 psStats *stats = psStatsAlloc(PS_STAT_ROBUST_MEDIAN | PS_STAT_ROBUST_STDEV); 1566 psVectorStats (stats, f SigRes, NULL, NULL, 0);1567 kernels->f SigResMean= stats->robustMedian;1568 kernels->f SigResStdev = stats->robustStdev;1576 psVectorStats (stats, fResSigma, NULL, NULL, 0); 1577 kernels->fResSigmaMean = stats->robustMedian; 1578 kernels->fResSigmaStdev = stats->robustStdev; 1569 1579 1570 1580 psStatsInit (stats); 1571 psVectorStats (stats, f MaxRes, NULL, NULL, 0);1572 kernels->f MaxResMean= stats->robustMedian;1573 kernels->f MaxResStdev = stats->robustStdev;1581 psVectorStats (stats, fResOuter, NULL, NULL, 0); 1582 kernels->fResOuterMean = stats->robustMedian; 1583 kernels->fResOuterStdev = stats->robustStdev; 1574 1584 1575 1585 psStatsInit (stats); 1576 psVectorStats (stats, f MinRes, NULL, NULL, 0);1577 kernels->f MinResMean= stats->robustMedian;1578 kernels->f MinResStdev = stats->robustStdev;1586 psVectorStats (stats, fResTotal, NULL, NULL, 0); 1587 kernels->fResTotalMean = stats->robustMedian; 1588 kernels->fResTotalStdev = stats->robustStdev; 1579 1589 1580 1590 // XXX save these values somewhere 1581 psLogMsg("psModules.imcombine", PS_LOG_INFO, "f Sigma: %f +/- %f, fMaxRes: %f +/- %f, fMinRes: %f +/- %f",1582 kernels->f SigResMean, kernels->fSigResStdev,1583 kernels->f MaxResMean, kernels->fMaxResStdev,1584 kernels->f MinResMean, kernels->fMinResStdev);1585 1586 psFree (f SigRes);1587 psFree (f MaxRes);1588 psFree (f MinRes);1591 psLogMsg("psModules.imcombine", PS_LOG_INFO, "fResSigma: %f +/- %f, fResOuter: %f +/- %f, fResTotal: %f +/- %f", 1592 kernels->fResSigmaMean, kernels->fResSigmaStdev, 1593 kernels->fResOuterMean, kernels->fResOuterStdev, 1594 kernels->fResTotalMean, kernels->fResTotalStdev); 1595 1596 psFree (fResSigma); 1597 psFree (fResOuter); 1598 psFree (fResTotal); 1589 1599 psFree (stats); 1590 1600 } … … 1592 1602 psFree(residual); 1593 1603 psFree(polyValues); 1594 1595 1604 1596 1605 return deviations; -
branches/eam_branches/ipp-20100823/psModules/src/imcombine/pmSubtractionKernels.c
r29004 r29148 220 220 // Re-normalize 221 221 // scale2D = 1.0 / fabs(sum); 222 scale2D = 1.0 / sqrt(sum2) ;222 scale2D = 1.0 / sqrt(sum2) / PS_SQR(fwhm); 223 223 zeroNull = true; 224 224 } else { 225 225 // Odd functions: choose normalisation so that parameters have about the same strength as for even 226 226 // functions, no subtraction of null pixel because the sum is already (near) zero 227 scale2D = 1.0 / sqrt(sum2) ;227 scale2D = 1.0 / sqrt(sum2) / PS_SQR(fwhm); 228 228 zeroNull = false; 229 229 } … … 235 235 if (forceZeroNull) { 236 236 // Force rescaling and subtraction of null pixel even though the order doesn't indicate it's even 237 scale2D = 1.0 / fabs(sum) ;237 scale2D = 1.0 / fabs(sum) / PS_SQR(fwhm); 238 238 zeroNull = true; 239 239 } 240 240 if (!forceZeroNull && ((uOrder % 2) || (vOrder % 2))) { 241 241 // Odd function 242 scale2D = 1.0 / sqrt(sum2) ;242 scale2D = 1.0 / sqrt(sum2) / PS_SQR(fwhm); 243 243 } 244 244 … … 255 255 if (zeroNull) { 256 256 // preCalc->kernel->kernel[0][0] -= 1.0; 257 preCalc->kernel->kernel[0][0] -= sum / sqrt (sum2);257 preCalc->kernel->kernel[0][0] -= sum * scale2D; 258 258 } 259 259 … … 603 603 kernels->sampleStamps = NULL; 604 604 605 kernels->f SigResMean = NAN;606 kernels->f SigResStdev = NAN;607 kernels->f MaxResMean = NAN;608 kernels->f MaxResStdev = NAN;609 kernels->f MinResMean = NAN;610 kernels->f MinResStdev = NAN;605 kernels->fResSigmaMean = NAN; 606 kernels->fResSigmaStdev = NAN; 607 kernels->fResOuterMean = NAN; 608 kernels->fResOuterStdev = NAN; 609 kernels->fResTotalMean = NAN; 610 kernels->fResTotalStdev = NAN; 611 611 612 612 return kernels; -
branches/eam_branches/ipp-20100823/psModules/src/imcombine/pmSubtractionKernels.h
r29004 r29148 51 51 float mean, rms; ///< Mean and RMS of chi^2 from stamps 52 52 int numStamps; ///< Number of good stamps 53 float f SigResMean;///< mean fractional stdev of residuals54 float f SigResStdev;///< stdev of fractional stdev of residuals55 float f MaxResMean;///< mean fractional positive swing in residuals56 float f MaxResStdev;///< stdev of fractional positive swing in residuals57 float f MinResMean;///< mean fractional negative swing in residuals58 float f MinResStdev;///< stdev of fractional negative swing in residuals53 float fResSigmaMean; ///< mean fractional stdev of residuals 54 float fResSigmaStdev; ///< stdev of fractional stdev of residuals 55 float fResOuterMean; ///< mean fractional positive swing in residuals 56 float fResOuterStdev; ///< stdev of fractional positive swing in residuals 57 float fResTotalMean; ///< mean fractional negative swing in residuals 58 float fResTotalStdev; ///< stdev of fractional negative swing in residuals 59 59 psArray *sampleStamps; ///< array of brightest set of stamps for output visualizations 60 60 } pmSubtractionKernels; -
branches/eam_branches/ipp-20100823/psModules/src/imcombine/pmSubtractionStamps.c
r29126 r29148 919 919 float M2 = pmSubtractionKernelPenaltySingle(kernel->kernel, zeroNull); 920 920 921 penalty1 = M2 + PS_SQR(fwhm1 / 2.35); // rescale the unconvolved second-moment by the image second moment 922 penalty2 = M2 + PS_SQR(fwhm2 / 2.35); // rescale the unconvolved second-moment by the image second moment 921 if (1) { 922 penalty1 = M2 * PS_SQR(fwhm1 / 2.35); // rescale the unconvolved second-moment by the image second moment 923 penalty2 = M2 * PS_SQR(fwhm2 / 2.35); // rescale the unconvolved second-moment by the image second moment 924 // penalty1 = M2 + PS_SQR(fwhm1 / 2.35); // rescale the unconvolved second-moment by the image second moment 925 // penalty2 = M2 + PS_SQR(fwhm2 / 2.35); // rescale the unconvolved second-moment by the image second moment 926 } else { 927 penalty1 = PS_SQR(fwhm1 / 2.35); // rescale the unconvolved second-moment by the image second moment 928 penalty2 = PS_SQR(fwhm2 / 2.35); // rescale the unconvolved second-moment by the image second moment 929 } 923 930 } 924 931 kernels->penalties1->data.F32[index] = kernels->penalty * penalty1; -
branches/eam_branches/ipp-20100823/psModules/src/imcombine/pmSubtractionVisual.c
r29126 r29148 152 152 153 153 /** Plot the least-squares matrix of each stamp */ 154 bool pmSubtractionVisualPlotLeastSquares (pmSubtractionStampList *stamps , bool dual) {154 bool pmSubtractionVisualPlotLeastSquares (pmSubtractionStampList *stamps) { 155 155 156 156 if (!pmVisualTestLevel("ppsub.chisq", 1)) return true; … … 209 209 pmVisualScaleImage(kapa1, canvas32, "Least_Squares", 0, true); 210 210 211 if (0) { 212 static int count = 0; 213 char filename[64]; 214 sprintf (filename, "chisq.%02d.fits", count); 215 count ++; 216 psFits *fits = psFitsOpen (filename, "w"); 217 psFitsWriteImage (fits, NULL, canvas32, 0, NULL); 218 psFitsClose (fits); 219 } 220 211 221 pmVisualAskUser(&plotLeastSquares); 212 222 psFree(canvas); … … 299 309 if (!isfinite(stamp->flux)) continue; 300 310 if (!stamp->convolutions1 && !stamp->convolutions2) continue; 311 fprintf (stderr, "flux: %f, maxFlux: %f ", stamp->flux, maxFlux); 301 312 if (!maxStamp) { 302 313 maxFlux = stamp->flux; 303 314 maxStamp = stamp; 315 fprintf (stderr, "maxStamp %d\n", i); 304 316 continue; 317 } else { 318 fprintf (stderr, "\n"); 305 319 } 306 320 if (stamp->flux > maxFlux) { … … 339 353 340 354 double sum = 0.0; 355 double sum2 = 0.0; 341 356 for (int y = -footprint; y <= footprint; y++) { 342 357 for (int x = -footprint; x <= footprint; x++) { 343 358 output->data.F32[y + yPix][x + xPix] = kernel->kernel[y][x]; 344 359 sum += kernel->kernel[y][x]; 360 sum2 += PS_SQR(kernel->kernel[y][x]); 345 361 } 346 362 } 347 fprintf (stderr, "kernel %d, sum %f \n", i, sum);363 fprintf (stderr, "kernel %d, sum %f, sum2: %e\n", i, sum, sum2); 348 364 } 349 365 pmVisualScaleImage(kapa2, output, "Image", 0, true); 350 } 366 367 if (0) { 368 psFits *fits = psFitsOpen("basis.1.fits", "w"); 369 psFitsWriteImage(fits, NULL, output, 0, NULL); 370 psFitsClose(fits); 371 } 372 } 351 373 352 374 if (maxStamp->convolutions2) { … … 373 395 374 396 double sum = 0.0; 397 double sum2 = 0.0; 375 398 for (int y = -footprint; y <= footprint; y++) { 376 399 for (int x = -footprint; x <= footprint; x++) { 377 400 output->data.F32[y + yPix][x + xPix] = kernel->kernel[y][x]; 378 401 sum += kernel->kernel[y][x]; 402 sum2 += PS_SQR(kernel->kernel[y][x]); 379 403 } 380 404 } 381 fprintf (stderr, "kernel %d, sum %f \n", i, sum);405 fprintf (stderr, "kernel %d, sum %f, sum2: %e\n", i, sum, sum2); 382 406 } 383 407 pmVisualScaleImage(kapa2, output, "Image", 1, true); 408 409 if (0) { 410 psFits *fits = psFitsOpen("basis.2.fits", "w"); 411 psFitsWriteImage(fits, NULL, output, 0, NULL); 412 psFitsClose(fits); 413 } 384 414 } 385 415
Note:
See TracChangeset
for help on using the changeset viewer.
