Changeset 28796
- Timestamp:
- Jul 30, 2010, 9:38:40 AM (16 years ago)
- Location:
- branches/eam_branches/ipp-20100621/psModules
- Files:
-
- 9 edited
-
. (modified) (1 prop)
-
src/concepts/pmConcepts.c (modified) (1 diff)
-
src/concepts/pmConceptsStandard.c (modified) (2 diffs)
-
src/extras/ippStages.c (modified) (1 diff)
-
src/extras/ippStages.h (modified) (1 diff)
-
src/imcombine/pmSubtraction.c (modified) (8 diffs)
-
src/objects/pmPSF_IO.c (modified) (7 diffs)
-
src/objects/pmSourceMatch.c (modified) (1 diff)
-
src/objects/pmSourcePhotometry.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20100621/psModules
- Property svn:mergeinfo changed
/branches/pap/psModules merged: 28179,28484-28485,28499,28534-28535
- Property svn:mergeinfo changed
-
branches/eam_branches/ipp-20100621/psModules/src/concepts/pmConcepts.c
r26971 r28796 350 350 conceptRegisterS32("CHIP.YSIZE", "Size of chip (pixels)", NULL, NULL, NULL, true, PM_FPA_LEVEL_CHIP); 351 351 conceptRegisterF32("CHIP.TEMP", "Temperature of chip", NULL, NULL, NULL, false, PM_FPA_LEVEL_CHIP); 352 conceptRegisterF32("CHIP.TEMPERATURE", "Temperature of chip", NULL, NULL, NULL, false, PM_FPA_LEVEL_CHIP); 352 353 conceptRegisterStr("CHIP.ID", "Chip identifier", NULL, NULL, NULL, false, PM_FPA_LEVEL_CHIP); 353 354 conceptRegisterF32("CHIP.SEEING", "Seeing FWHM (pixels)", NULL, NULL, NULL, false, PM_FPA_LEVEL_CHIP); -
branches/eam_branches/ipp-20100621/psModules/src/concepts/pmConceptsStandard.c
r25930 r28796 449 449 int big, medium; 450 450 float small; 451 bool negative = *((char *)concept->data.V) == '-'; // check for sign explicitly since -0 is not less than 0 452 451 453 // XXX: Upgrade path is to allow dd:mm.mmm 452 454 if (sscanf(concept->data.V, "%d:%d:%f", &big, &medium, &small) != 3 && … … 457 459 } 458 460 coords = abs(big) + (float)medium/60.0 + small/3600.0; 459 if ( big < 0)461 if (negative) 460 462 { 461 463 coords *= -1.0; -
branches/eam_branches/ipp-20100621/psModules/src/extras/ippStages.c
r24881 r28796 15 15 } else if (!strcmp(stageString, "chip")) { 16 16 return IPP_STAGE_CHIP; 17 } else if (!strcmp(stageString, "chip_bg")) { 18 return IPP_STAGE_CHIP_BG; 17 19 } else if (!strcmp(stageString, "camera")) { 18 20 return IPP_STAGE_CAMERA; 19 21 } else if (!strcmp(stageString, "warp")) { 20 22 return IPP_STAGE_WARP; 23 } else if (!strcmp(stageString, "warp_bg")) { 24 return IPP_STAGE_WARP_BG; 21 25 } else if (!strcmp(stageString, "fake")) { 22 26 return IPP_STAGE_FAKE; -
branches/eam_branches/ipp-20100621/psModules/src/extras/ippStages.h
r27750 r28796 13 13 IPP_STAGE_RAW = 0, 14 14 IPP_STAGE_CHIP, 15 IPP_STAGE_CHIP_BG, 15 16 IPP_STAGE_CAMERA, 16 17 IPP_STAGE_FAKE, 17 18 IPP_STAGE_WARP, 19 IPP_STAGE_WARP_BG, 18 20 IPP_STAGE_DIFF, 19 21 IPP_STAGE_STACK, -
branches/eam_branches/ipp-20100621/psModules/src/imcombine/pmSubtraction.c
r28405 r28796 52 52 53 53 // Take the square of the normal kernel 54 double sumVariance = 0.0; // Sum of the variance kernels55 54 for (int v = yMin; v <= yMax; v++) { 56 55 for (int u = xMin; u <= xMax; u++) { 57 sumVariance += out->kernel[v][u] = PS_SQR(normalKernel->kernel[v][u]); 58 } 59 } 60 61 // Normalise so that the sum of the variance kernel is the square of the sum of the normal kernel 62 // This is required to keep the relative scaling between the image and the variance map 63 psBinaryOp(out->image, out->image, "*", psScalarAlloc(1.0 / sumVariance, PS_TYPE_F32)); 64 56 out->kernel[v][u] = PS_SQR(normalKernel->kernel[v][u]); 57 } 58 } 65 59 return out; 66 60 } … … 271 265 // Convolve an image using FFT 272 266 static void convolveVarianceFFT(psImage *target,// Place the result in here 273 psImage *variance, // Variance map to convolve274 psImage *kernelErr, // Kernel error image275 psImage *mask, // Mask image276 psImageMaskType maskVal, // Value to mask277 const psKernel *kernel, // Kernel by which to convolve278 psRegion region,// Region of interest279 int size // Size of (square) kernel280 )267 psImage *variance, // Variance map to convolve 268 psImage *kernelErr, // Kernel error image 269 psImage *mask, // Mask image 270 psImageMaskType maskVal, // Value to mask 271 const psKernel *kernel, // Kernel by which to convolve 272 psRegion region,// Region of interest 273 int size // Size of (square) kernel 274 ) 281 275 { 282 276 psRegion border = psRegionSet(region.x0 - size, region.x1 + size, … … 348 342 psImage *image, // Image to convolve 349 343 psImage *variance, // Variance map to convolve, or NULL 344 const psKernel *covar, // Covariance, or NULL 350 345 psImage *kernelErr, // Kernel error image, or NULL 351 346 psImage *subMask, // Subtraction mask … … 393 388 if (variance) { 394 389 convolveDirect(convVariance, variance, *kernelVariance, region, 0.0, kernels->size); 390 } 391 } 392 393 if (variance && covar) { 394 // Apply covariance factor to variance map, to allow for spatial variation 395 float factor = psImageCovarianceCalculateFactor(*kernelImage, covar); // Factor to apply 396 for (int y = region.y0; y < region.y1; y++) { 397 for (int x = region.x0; x < region.x1; x++) { 398 convVariance->data.F32[y][x] *= factor; 399 } 395 400 } 396 401 } … … 1085 1090 if (kernels->mode == PM_SUBTRACTION_MODE_1 || kernels->mode == PM_SUBTRACTION_MODE_DUAL) { 1086 1091 convolveRegion(out1->image, out1->variance, out1->mask, &kernelImage, &kernelVariance, 1087 ro1->image, ro1->variance, kernelErr1, subMask, kernels, polyValues, background,1088 *region, maskBad, maskPoor, poorFrac, useFFT, false);1092 ro1->image, ro1->variance, ro1->covariance, kernelErr1, subMask, kernels, 1093 polyValues, background, *region, maskBad, maskPoor, poorFrac, useFFT, false); 1089 1094 } 1090 1095 if (kernels->mode == PM_SUBTRACTION_MODE_2 || kernels->mode == PM_SUBTRACTION_MODE_DUAL) { 1091 1096 convolveRegion(out2->image, out2->variance, out2->mask, &kernelImage, &kernelVariance, 1092 ro2->image, ro2->variance, kernelErr2, subMask, kernels, polyValues, background,1093 *region, maskBad, maskPoor, poorFrac, useFFT,1097 ro2->image, ro2->variance, ro2->covariance, kernelErr2, subMask, kernels, 1098 polyValues, background, *region, maskBad, maskPoor, poorFrac, useFFT, 1094 1099 kernels->mode == PM_SUBTRACTION_MODE_DUAL); 1095 1100 } … … 1325 1330 1326 1331 // Calculate covariances 1327 // This can be fairly involved, so we only do it for a single instance 1328 // Enable threads for covariance calculation, since we're not threading on top of it. 1332 // This can be fairly involved, so we only do it for a small number of instances 1329 1333 float position[NUM_COVAR_POS] = { -1.0, -0.5, 0.0, +0.5, +1.0 }; // Positions for covariance calculations 1334 // Enable threads for covariance calculation, since we're not threading on top of it 1330 1335 oldThreads = psImageCovarianceSetThreads(true); 1331 1336 if (kernels->mode == PM_SUBTRACTION_MODE_1 || kernels->mode == PM_SUBTRACTION_MODE_DUAL) { … … 1342 1347 out1->covariance = psImageCovarianceAverage(covars); 1343 1348 psFree(covars); 1349 // Remove covariance factor from covariance, since we've put it in the variance map already 1350 float factor = psImageCovarianceFactor(out1->covariance); 1351 psBinaryOp(out1->covariance->image, out1->covariance->image, "/", psScalarAlloc(factor, PS_TYPE_F32)); 1344 1352 } 1345 1353 if (kernels->mode == PM_SUBTRACTION_MODE_2 || kernels->mode == PM_SUBTRACTION_MODE_DUAL) { … … 1356 1364 out2->covariance = psImageCovarianceAverage(covars); 1357 1365 psFree(covars); 1366 // Remove covariance factor from covariance, since we've put it in the variance map already 1367 float factor = psImageCovarianceFactor(out2->covariance); 1368 psBinaryOp(out2->covariance->image, out2->covariance->image, "/", psScalarAlloc(factor, PS_TYPE_F32)); 1358 1369 } 1359 1370 psImageCovarianceSetThreads(oldThreads); -
branches/eam_branches/ipp-20100621/psModules/src/objects/pmPSF_IO.c
r28643 r28796 191 191 pmReadout *ro = pmFPAviewThisReadout(roView, chip->parent); // Readout with analysis data 192 192 psFree(roView); 193 PM_ASSERT_READOUT_NON_NULL(ro, false); 194 195 if (!pmPSFmodelWrite(chip->analysis, ro->analysis, view, file, config)) { 193 194 if (!pmPSFmodelWrite(chip->analysis, ro ? ro->analysis : NULL, view, file, config)) { 196 195 psError(psErrorCodeLast(), false, "Failed to write PSF for chip"); 197 196 return false; … … 222 221 } 223 222 if (!roAnalysis) { 224 psError(PM_ERR_PROG, true, "No analysis metadata for readout."); 225 return false; 223 psWarning("No analysis metadata for PSF, clump parameters cannot be saved."); 226 224 } 227 225 … … 369 367 370 368 // we now save clump parameters for each region : need to save all of those 371 int nRegions = psMetadataLookupS32 (&status, roAnalysis, "PSF.CLUMP.NREGIONS"); 372 psMetadataAddS32 (header, PS_LIST_TAIL, "PSF_CLN", PS_META_REPLACE, "number of psf clump regions", nRegions); 373 for (int i = 0; i < nRegions; i++) { 374 char regionName[64]; 375 snprintf (regionName, 64, "PSF.CLUMP.REGION.%03d", i); 376 psMetadata *regionMD = psMetadataLookupPtr (&status, roAnalysis, regionName); 377 378 psfClump.X = psMetadataLookupF32 (&status, regionMD, "PSF.CLUMP.X"); assert (status); 379 psfClump.Y = psMetadataLookupF32 (&status, regionMD, "PSF.CLUMP.Y"); assert (status); 380 psfClump.dX = psMetadataLookupF32 (&status, regionMD, "PSF.CLUMP.DX"); assert (status); 381 psfClump.dY = psMetadataLookupF32 (&status, regionMD, "PSF.CLUMP.DY"); assert (status); 382 383 char key[16]; 384 snprintf (key, 9, "CLX_%03d", i); 385 psMetadataAddF32 (header, PS_LIST_TAIL, key, PS_META_REPLACE, "psf clump center", psfClump.X); 386 snprintf (key, 9, "CLY_%03d", i); 387 psMetadataAddF32 (header, PS_LIST_TAIL, key, PS_META_REPLACE, "psf clump center", psfClump.Y); 388 snprintf (key, 9, "CLDX_%03d", i); 389 psMetadataAddF32 (header, PS_LIST_TAIL, key, PS_META_REPLACE, "psf clump size", psfClump.dX); 390 snprintf (key, 9, "CLDY_%03d", i); 391 psMetadataAddF32 (header, PS_LIST_TAIL, key, PS_META_REPLACE, "psf clump size", psfClump.dY); 369 if (roAnalysis) { 370 int nRegions = psMetadataLookupS32 (&status, roAnalysis, "PSF.CLUMP.NREGIONS"); 371 psMetadataAddS32 (header, PS_LIST_TAIL, "PSF_CLN", PS_META_REPLACE, "number of psf clump regions", nRegions); 372 for (int i = 0; i < nRegions; i++) { 373 char regionName[64]; 374 snprintf (regionName, 64, "PSF.CLUMP.REGION.%03d", i); 375 psMetadata *regionMD = psMetadataLookupPtr (&status, roAnalysis, regionName); 376 377 psfClump.X = psMetadataLookupF32 (&status, regionMD, "PSF.CLUMP.X"); assert (status); 378 psfClump.Y = psMetadataLookupF32 (&status, regionMD, "PSF.CLUMP.Y"); assert (status); 379 psfClump.dX = psMetadataLookupF32 (&status, regionMD, "PSF.CLUMP.DX"); assert (status); 380 psfClump.dY = psMetadataLookupF32 (&status, regionMD, "PSF.CLUMP.DY"); assert (status); 381 382 char key[16]; 383 snprintf (key, 9, "CLX_%03d", i); 384 psMetadataAddF32 (header, PS_LIST_TAIL, key, PS_META_REPLACE, "psf clump center", psfClump.X); 385 snprintf (key, 9, "CLY_%03d", i); 386 psMetadataAddF32 (header, PS_LIST_TAIL, key, PS_META_REPLACE, "psf clump center", psfClump.Y); 387 snprintf (key, 9, "CLDX_%03d", i); 388 psMetadataAddF32 (header, PS_LIST_TAIL, key, PS_META_REPLACE, "psf clump size", psfClump.dX); 389 snprintf (key, 9, "CLDY_%03d", i); 390 psMetadataAddF32 (header, PS_LIST_TAIL, key, PS_META_REPLACE, "psf clump size", psfClump.dY); 391 } 392 392 } 393 393 … … 787 787 { 788 788 PS_ASSERT_METADATA_NON_NULL(chipAnalysis, false); 789 PS_ASSERT_METADATA_NON_NULL(roAnalysis, false);790 789 PS_ASSERT_PTR_NON_NULL(view, false); 791 790 PS_ASSERT_PTR_NON_NULL(file, false); … … 852 851 853 852 // read the psf clump data for each region 854 int nRegions = psMetadataLookupS32 (&status, header, "PSF_CLN"); 855 if (!status) { 856 // read old-style psf clump data 857 858 char regionName[64]; 859 snprintf (regionName, 64, "PSF.CLUMP.REGION.000"); 860 psMetadataAddS32 (roAnalysis, PS_LIST_TAIL, "PSF.CLUMP.NREGIONS", PS_META_REPLACE, "psf clump regions", 1); 861 862 psMetadata *regionMD = psMetadataLookupPtr (&status, roAnalysis, regionName); 863 if (!regionMD) { 864 regionMD = psMetadataAlloc(); 865 psMetadataAddMetadata (roAnalysis, PS_LIST_TAIL, regionName, PS_META_REPLACE, "psf clump region", regionMD); 866 psFree (regionMD); 867 } 868 869 // psf clump data 870 pmPSFClump psfClump; 871 872 psfClump.X = psMetadataLookupF32 (&status, header, "PSF_CLX" ); assert(status); 873 psfClump.Y = psMetadataLookupF32 (&status, header, "PSF_CLY" ); assert(status); 874 psfClump.dX = psMetadataLookupF32 (&status, header, "PSF_CLDX"); assert(status); 875 psfClump.dY = psMetadataLookupF32 (&status, header, "PSF_CLDY"); assert(status); 876 877 psMetadataAddF32 (regionMD, PS_LIST_TAIL, "PSF.CLUMP.X", PS_META_REPLACE, "psf clump center", psfClump.X); 878 psMetadataAddF32 (regionMD, PS_LIST_TAIL, "PSF.CLUMP.Y", PS_META_REPLACE, "psf clump center", psfClump.Y); 879 psMetadataAddF32 (regionMD, PS_LIST_TAIL, "PSF.CLUMP.DX", PS_META_REPLACE, "psf clump center", psfClump.dX); 880 psMetadataAddF32 (regionMD, PS_LIST_TAIL, "PSF.CLUMP.DY", PS_META_REPLACE, "psf clump center", psfClump.dY); 881 } else { 882 psMetadataAddS32 (roAnalysis, PS_LIST_TAIL, "PSF.CLUMP.NREGIONS", PS_META_REPLACE, "psf clump regions", nRegions); 883 884 for (int i = 0; i < nRegions; i++) { 885 char key[10]; 853 if (roAnalysis) { 854 int nRegions = psMetadataLookupS32 (&status, header, "PSF_CLN"); 855 if (!status) { 856 // read old-style psf clump data 857 886 858 char regionName[64]; 887 snprintf (regionName, 64, "PSF.CLUMP.REGION.%03d", i); 859 snprintf (regionName, 64, "PSF.CLUMP.REGION.000"); 860 psMetadataAddS32 (roAnalysis, PS_LIST_TAIL, "PSF.CLUMP.NREGIONS", PS_META_REPLACE, "psf clump regions", 1); 888 861 889 862 psMetadata *regionMD = psMetadataLookupPtr (&status, roAnalysis, regionName); … … 897 870 pmPSFClump psfClump; 898 871 899 snprintf (key, 9, "CLX_%03d", i); 900 psfClump.X = psMetadataLookupF32 (&status, header, key); assert(status); 901 snprintf (key, 9, "CLY_%03d", i); 902 psfClump.Y = psMetadataLookupF32 (&status, header, key); assert(status); 903 snprintf (key, 9, "CLDX_%03d", i); 904 psfClump.dX = psMetadataLookupF32 (&status, header, key); assert(status); 905 snprintf (key, 9, "CLDY_%03d", i); 906 psfClump.dY = psMetadataLookupF32 (&status, header, key); assert(status); 872 psfClump.X = psMetadataLookupF32 (&status, header, "PSF_CLX" ); assert(status); 873 psfClump.Y = psMetadataLookupF32 (&status, header, "PSF_CLY" ); assert(status); 874 psfClump.dX = psMetadataLookupF32 (&status, header, "PSF_CLDX"); assert(status); 875 psfClump.dY = psMetadataLookupF32 (&status, header, "PSF_CLDY"); assert(status); 907 876 908 877 psMetadataAddF32 (regionMD, PS_LIST_TAIL, "PSF.CLUMP.X", PS_META_REPLACE, "psf clump center", psfClump.X); … … 910 879 psMetadataAddF32 (regionMD, PS_LIST_TAIL, "PSF.CLUMP.DX", PS_META_REPLACE, "psf clump center", psfClump.dX); 911 880 psMetadataAddF32 (regionMD, PS_LIST_TAIL, "PSF.CLUMP.DY", PS_META_REPLACE, "psf clump center", psfClump.dY); 881 } else { 882 psMetadataAddS32 (roAnalysis, PS_LIST_TAIL, "PSF.CLUMP.NREGIONS", PS_META_REPLACE, "psf clump regions", nRegions); 883 884 for (int i = 0; i < nRegions; i++) { 885 char key[10]; 886 char regionName[64]; 887 snprintf (regionName, 64, "PSF.CLUMP.REGION.%03d", i); 888 889 psMetadata *regionMD = psMetadataLookupPtr (&status, roAnalysis, regionName); 890 if (!regionMD) { 891 regionMD = psMetadataAlloc(); 892 psMetadataAddMetadata (roAnalysis, PS_LIST_TAIL, regionName, PS_META_REPLACE, "psf clump region", regionMD); 893 psFree (regionMD); 894 } 895 896 // psf clump data 897 pmPSFClump psfClump; 898 899 snprintf (key, 9, "CLX_%03d", i); 900 psfClump.X = psMetadataLookupF32 (&status, header, key); assert(status); 901 snprintf (key, 9, "CLY_%03d", i); 902 psfClump.Y = psMetadataLookupF32 (&status, header, key); assert(status); 903 snprintf (key, 9, "CLDX_%03d", i); 904 psfClump.dX = psMetadataLookupF32 (&status, header, key); assert(status); 905 snprintf (key, 9, "CLDY_%03d", i); 906 psfClump.dY = psMetadataLookupF32 (&status, header, key); assert(status); 907 908 psMetadataAddF32 (regionMD, PS_LIST_TAIL, "PSF.CLUMP.X", PS_META_REPLACE, "psf clump center", psfClump.X); 909 psMetadataAddF32 (regionMD, PS_LIST_TAIL, "PSF.CLUMP.Y", PS_META_REPLACE, "psf clump center", psfClump.Y); 910 psMetadataAddF32 (regionMD, PS_LIST_TAIL, "PSF.CLUMP.DX", PS_META_REPLACE, "psf clump center", psfClump.dX); 911 psMetadataAddF32 (regionMD, PS_LIST_TAIL, "PSF.CLUMP.DY", PS_META_REPLACE, "psf clump center", psfClump.dY); 912 } 912 913 } 913 914 } -
branches/eam_branches/ipp-20100621/psModules/src/objects/pmSourceMatch.c
r28643 r28796 249 249 } 250 250 251 numMaster = size; 251 252 xMaster->n = size; 252 253 yMaster->n = size; -
branches/eam_branches/ipp-20100621/psModules/src/objects/pmSourcePhotometry.c
r28692 r28796 409 409 psImage *mask = source->maskObj; 410 410 411 if (!flux || !variance || !mask) { 412 return false; 413 } 414 411 415 for (int iy = 0; iy < flux->numRows; iy++) { 412 416 for (int ix = 0; ix < flux->numCols; ix++) {
Note:
See TracChangeset
for help on using the changeset viewer.
