Changeset 28100
- Timestamp:
- May 25, 2010, 3:48:12 PM (16 years ago)
- Location:
- trunk/psModules/src/detrend
- Files:
-
- 2 edited
-
pmMaskStats.c (modified) (6 diffs)
-
pmMaskStats.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/detrend/pmMaskStats.c
r28043 r28100 8 8 #include <pslib.h> 9 9 #include <psmodules.h> 10 10 11 #include "pmHDU.h" 11 12 #include "pmFPA.h" … … 16 17 17 18 18 # define ESCAPE { \19 psError(PS_ERR_UNKNOWN, false, "I/O failure in pmMaskStats");\20 psFree (view);\21 return false;\22 }19 #define ESCAPE { \ 20 psError(psErrorCodeLast(), false, "I/O failure in pmMaskStats"); \ 21 psFree (view); \ 22 return false; \ 23 } 23 24 24 25 25 26 26 27 … … 30 31 31 32 bool status; 32 33 ps U16 staticMaskVal = psMetadataLookupU32(&status, config->recipes, "MASKSTAT.STATIC");34 ps U16 magicMaskVal = psMetadataLookupU32(&status, config->recipes, "MASKSTAT.MAGIC");35 ps U16 dynamicMaskVal = psMetadataLookupU32(&status, config->recipes, "MASKSTAT.DYNAMIC");36 ps U16 advisoryMaskVal = psMetadataLookupU32(&status, config->recipes, "MASKSTAT.ADVISORY");33 34 psImageMaskType staticMaskVal = psMetadataLookupImageMask(&status, config->recipes, "MASKSTAT.STATIC"); 35 psImageMaskType magicMaskVal = psMetadataLookupImageMask(&status, config->recipes, "MASKSTAT.MAGIC"); 36 psImageMaskType dynamicMaskVal = psMetadataLookupImageMask(&status, config->recipes, "MASKSTAT.DYNAMIC"); 37 psImageMaskType advisoryMaskVal = psMetadataLookupImageMask(&status, config->recipes, "MASKSTAT.ADVISORY"); 37 38 38 39 psS32 Npix_valid = 0; … … 54 55 if (!cell->process || !cell->file_exists) {continue; } 55 56 while ((readout = pmFPAviewNextReadout(view, fpa, 1)) != NULL) { 56 if (!readout->data_exists) {continue; }57 if (!readout->data_exists) {continue; } 57 58 58 psImage *mask = readout->mask;59 if (!pmSingleImageMaskStats(mask,&Npix_valid,&Npix_static,&Npix_magic,60 &Npix_dynamic,&Npix_advisory,61 staticMaskVal,magicMaskVal,62 dynamicMaskVal,advisoryMaskVal)) {63 psError(PS_ERR_UNKNOWN, false, "Unable to calculate masks for readout.");64 return(false);65 }66 psMetadataAddS32(readout->analysis, PS_LIST_TAIL,"MASKFRAC_NPIX", 0,67 "Number of valid pixels", Npix_valid);68 psMetadataAddF32(readout->analysis,PS_LIST_TAIL, "MASKFRAC_STATIC", 0,69 "Fraction of pixels statically masked", (float) Npix_static / Npix_valid);70 psMetadataAddF32(readout->analysis,PS_LIST_TAIL, "MASKFRAC_DYNAMIC", 0,71 "Fraction of pixels dynamically masked", (float) Npix_dynamic / Npix_valid);72 psMetadataAddF32(readout->analysis,PS_LIST_TAIL, "MASKFRAC_MAGIC", 0,73 "Fraction of pixels magically masked", (float) Npix_magic / Npix_valid);74 psMetadataAddF32(readout->analysis,PS_LIST_TAIL, "MASKFRAC_ADVISORY", 0,75 "Fraction of pixels masked as an advisory", (float) Npix_advisory / Npix_valid);59 psImage *mask = readout->mask; 60 if (!pmSingleImageMaskStats(mask,&Npix_valid,&Npix_static,&Npix_magic, 61 &Npix_dynamic,&Npix_advisory, 62 staticMaskVal,magicMaskVal, 63 dynamicMaskVal,advisoryMaskVal)) { 64 psError(PS_ERR_UNKNOWN, false, "Unable to calculate masks for readout."); 65 return(false); 66 } 67 psMetadataAddS32(readout->analysis, PS_LIST_TAIL,"MASKFRAC_NPIX", 0, 68 "Number of valid pixels", Npix_valid); 69 psMetadataAddF32(readout->analysis,PS_LIST_TAIL, "MASKFRAC_STATIC", 0, 70 "Fraction of pixels statically masked", (float) Npix_static / Npix_valid); 71 psMetadataAddF32(readout->analysis,PS_LIST_TAIL, "MASKFRAC_DYNAMIC", 0, 72 "Fraction of pixels dynamically masked", (float) Npix_dynamic / Npix_valid); 73 psMetadataAddF32(readout->analysis,PS_LIST_TAIL, "MASKFRAC_MAGIC", 0, 74 "Fraction of pixels magically masked", (float) Npix_magic / Npix_valid); 75 psMetadataAddF32(readout->analysis,PS_LIST_TAIL, "MASKFRAC_ADVISORY", 0, 76 "Fraction of pixels masked as an advisory", (float) Npix_advisory / Npix_valid); 76 77 } 77 78 } … … 83 84 84 85 bool pmSingleImageMaskStats(psImage *mask, 85 psS32 *Npix_valid, psS32 *Npix_static, psS32 *Npix_magic,86 psS32 *Npix_dynamic, psS32 *Npix_advisory,87 psU16 staticMaskVal, psU16magicMaskVal,88 psU16 dynamicMaskVal, psU16advisoryMaskVal) {86 psS32 *Npix_valid, psS32 *Npix_static, psS32 *Npix_magic, 87 psS32 *Npix_dynamic, psS32 *Npix_advisory, 88 psImageMaskType staticMaskVal, psImageMaskType magicMaskVal, 89 psImageMaskType dynamicMaskVal, psImageMaskType advisoryMaskVal) { 89 90 PS_ASSERT_IMAGE_NON_NULL(mask, false); 90 91 *Npix_valid = 0; … … 95 96 96 97 psImageMaskType **maskData = mask->data.PS_TYPE_IMAGE_MASK_DATA; 97 psWarning("HERE: %ld %d %d\n",(long) maskData, mask->numRows,mask->numCols); 98 for (int i = 0; i < mask->numRows - 1; i++) { 99 for (int j = 0; j < mask->numCols - 1; j++) { 98 for (int i = 0; i < mask->numRows; i++) { 99 for (int j = 0; j < mask->numCols; j++) { 100 100 *Npix_valid += 1; 101 101 if (maskData[i][j] & staticMaskVal) { 102 *Npix_static += 1;103 continue;102 *Npix_static += 1; 103 continue; 104 104 } 105 105 if (maskData[i][j] & dynamicMaskVal) { 106 *Npix_dynamic += 1;107 continue;106 *Npix_dynamic += 1; 107 continue; 108 108 } 109 109 if (maskData[i][j] & magicMaskVal) { 110 *Npix_magic += 1;111 continue;110 *Npix_magic += 1; 111 continue; 112 112 } 113 113 if (maskData[i][j] & advisoryMaskVal) { 114 *Npix_advisory += 1;115 continue;114 *Npix_advisory += 1; 115 continue; 116 116 } 117 117 } -
trunk/psModules/src/detrend/pmMaskStats.h
r28043 r28100 4 4 bool pmFPAMaskStats(pmFPA *fpa, pmConfig *config); 5 5 bool pmSingleImageMaskStats(psImage *mask, 6 psS32 *Npix_valid, psS32 *Npix_static, psS32 *Npix_magic,7 psS32 *Npix_dynamic, psS32 *Npix_advisory,8 psU16 staticMaskVal, psU16magicMaskVal,9 psU16 dynamicMaskVal, psU16advisoryMaskVal);6 psS32 *Npix_valid, psS32 *Npix_static, psS32 *Npix_magic, 7 psS32 *Npix_dynamic, psS32 *Npix_advisory, 8 psImageMaskType staticMaskVal, psImageMaskType magicMaskVal, 9 psImageMaskType dynamicMaskVal, psImageMaskType advisoryMaskVal); 10 10 11 11
Note:
See TracChangeset
for help on using the changeset viewer.
