Changeset 21183 for trunk/psphot/src
- Timestamp:
- Jan 26, 2009, 8:40:07 PM (17 years ago)
- Location:
- trunk/psphot/src
- Files:
-
- 43 edited
-
psphot.h (modified) (8 diffs)
-
psphotAddNoise.c (modified) (1 diff)
-
psphotAnnuli.c (modified) (1 diff)
-
psphotApResid.c (modified) (8 diffs)
-
psphotBlendFit.c (modified) (1 diff)
-
psphotChoosePSF.c (modified) (2 diffs)
-
psphotExtendedSourceAnalysis.c (modified) (1 diff)
-
psphotExtendedSourceFits.c (modified) (1 diff)
-
psphotExtendedSources.c (modified) (1 diff)
-
psphotFindDetections.c (modified) (1 diff)
-
psphotFindFootprints.c (modified) (1 diff)
-
psphotFitSet.c (modified) (1 diff)
-
psphotFitSourcesLinear.c (modified) (6 diffs)
-
psphotGuessModels.c (modified) (3 diffs)
-
psphotIsophotal.c (modified) (1 diff)
-
psphotKron.c (modified) (1 diff)
-
psphotMagnitudes.c (modified) (1 diff)
-
psphotMakeGrowthCurve.c (modified) (1 diff)
-
psphotMakeResiduals.c (modified) (13 diffs)
-
psphotMaskReadout.c (modified) (1 diff)
-
psphotModelBackground.c (modified) (1 diff)
-
psphotModelTest.c (modified) (1 diff)
-
psphotModelWithPSF.c (modified) (9 diffs)
-
psphotMosaicChip.c (modified) (1 diff)
-
psphotOutput.c (modified) (6 diffs)
-
psphotPSFConvModel.c (modified) (4 diffs)
-
psphotPetrosian.c (modified) (1 diff)
-
psphotRadialPlot.c (modified) (1 diff)
-
psphotRadialProfile.c (modified) (2 diffs)
-
psphotRadiusChecks.c (modified) (3 diffs)
-
psphotReplaceUnfit.c (modified) (6 diffs)
-
psphotRoughClass.c (modified) (1 diff)
-
psphotSetMaskBits.c (modified) (2 diffs)
-
psphotSignificanceImage.c (modified) (2 diffs)
-
psphotSkyReplace.c (modified) (1 diff)
-
psphotSourceFits.c (modified) (5 diffs)
-
psphotSourcePlots.c (modified) (1 diff)
-
psphotSourceSize.c (modified) (13 diffs)
-
psphotSourceStats.c (modified) (2 diffs)
-
psphotSubtractBackground.c (modified) (1 diff)
-
psphotTestPSF.c (modified) (1 diff)
-
psphotTestSourceOutput.c (modified) (1 diff)
-
psphotVisual.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psphot/src/psphot.h
r21166 r21183 40 40 bool psphotMomentsStats (pmReadout *readout, psMetadata *recipe, psArray *sources); 41 41 bool psphotFitSourcesLinear (pmReadout *readout, psArray *sources, psMetadata *recipe, pmPSF *psf, bool final); 42 bool psphotReplaceUnfitSources (psArray *sources, psMaskType maskVal); 42 bool psphotReplaceUnfitSources (psArray *sources, psImageMaskType maskVal); 43 43 44 bool psphotReplaceAllSources (psArray *sources, psMetadata *recipe); 44 45 bool psphotRemoveAllSources (psArray *sources, psMetadata *recipe); … … 70 71 71 72 // used by psphotFindDetections 72 psImage *psphotSignificanceImage (pmReadout *readout, psMetadata *recipe, const int pass, ps MaskType maskVal);73 psImage *psphotSignificanceImage (pmReadout *readout, psMetadata *recipe, const int pass, psImageMaskType maskVal); 73 74 psArray *psphotFindPeaks (psImage *significance, pmReadout *readout, psMetadata *recipe, const float threshold, const int nMax); 74 bool psphotFindFootprints (pmDetections *detections, psImage *significance, pmReadout *readout, psMetadata *recipe, const int pass, ps MaskType maskVal);75 bool psphotFindFootprints (pmDetections *detections, psImage *significance, pmReadout *readout, psMetadata *recipe, const int pass, psImageMaskType maskVal); 75 76 psErrorCode psphotCullPeaks(const psImage *img, const psImage *weight, const psMetadata *recipe, psArray *footprints); 76 77 … … 81 82 // basic support functions 82 83 void psphotModelClassInit (void); 83 bool psphotGrowthCurve (pmReadout *readout, pmPSF *psf, bool ignore, ps MaskType maskVal);84 bool psphotGrowthCurve (pmReadout *readout, pmPSF *psf, bool ignore, psImageMaskType maskVal); 84 85 bool psphotSetMaskAndWeight (pmConfig *config, pmReadout *readout, psMetadata *recipe); 85 86 void psphotSourceFreePixels (psArray *sources); … … 87 88 // functions to set the correct source pixels 88 89 bool psphotInitRadiusPSF (const psMetadata *recipe, const pmModelType type); 89 bool psphotCheckRadiusPSF (pmReadout *readout, pmSource *source, pmModel *model, ps MaskType markVal);90 bool psphotCheckRadiusPSFBlend (pmReadout *readout, pmSource *source, pmModel *model, ps MaskType markVal, float dR);90 bool psphotCheckRadiusPSF (pmReadout *readout, pmSource *source, pmModel *model, psImageMaskType markVal); 91 bool psphotCheckRadiusPSFBlend (pmReadout *readout, pmSource *source, pmModel *model, psImageMaskType markVal, float dR); 91 92 bool psphotInitRadiusEXT (psMetadata *recipe, pmModelType type); 92 bool psphotCheckRadiusEXT (pmReadout *readout, pmSource *source, pmModel *model, ps MaskType markVal);93 bool psphotCheckRadiusEXT (pmReadout *readout, pmSource *source, pmModel *model, psImageMaskType markVal); 93 94 94 95 // output functions … … 109 110 bool psphotInitLimitsPSF (psMetadata *recipe, pmReadout *readout); 110 111 bool psphotInitLimitsEXT (psMetadata *recipe); 111 bool psphotFitBlend (pmReadout *readout, pmSource *source, pmPSF *psf, ps MaskType maskVal, psMaskType markVal);112 bool psphotFitBlob (pmReadout *readout, pmSource *source, psArray *sources, pmPSF *psf, ps MaskType maskVal, psMaskType markVal);113 bool psphotFitPSF (pmReadout *readout, pmSource *source, pmPSF *psf, ps MaskType maskVal, psMaskType markVal);114 pmModel *psphotFitEXT (pmReadout *readout, pmSource *source, pmModelType modelType, ps MaskType maskVal, psMaskType markVal);115 psArray *psphotFitDBL (pmReadout *readout, pmSource *source, ps MaskType maskVal, psMaskType markVal);112 bool psphotFitBlend (pmReadout *readout, pmSource *source, pmPSF *psf, psImageMaskType maskVal, psImageMaskType markVal); 113 bool psphotFitBlob (pmReadout *readout, pmSource *source, psArray *sources, pmPSF *psf, psImageMaskType maskVal, psImageMaskType markVal); 114 bool psphotFitPSF (pmReadout *readout, pmSource *source, pmPSF *psf, psImageMaskType maskVal, psImageMaskType markVal); 115 pmModel *psphotFitEXT (pmReadout *readout, pmSource *source, pmModelType modelType, psImageMaskType maskVal, psImageMaskType markVal); 116 psArray *psphotFitDBL (pmReadout *readout, pmSource *source, psImageMaskType maskVal, psImageMaskType markVal); 116 117 117 118 // functions to support simultaneous multi-source fitting 118 bool psphotFitSet (pmSource *oneSrc, pmModel *oneModel, char *fitset, pmSourceFitMode mode, ps MaskType maskVal);119 bool psphotFitSet (pmSource *oneSrc, pmModel *oneModel, char *fitset, pmSourceFitMode mode, psImageMaskType maskVal); 119 120 120 121 // plotting functions (available if libkapa is installed) … … 137 138 bool psphotMosaicSubimage (psImage *outImage, pmSource *source, int Xo, int Yo, int DX, int DY, bool normalize); 138 139 139 bool psphotAddWithTest (pmSource *source, bool useState, ps MaskType maskVal);140 bool psphotSubWithTest (pmSource *source, bool useState, ps MaskType maskVal);141 bool psphotSetState (pmSource *source, bool curState, ps MaskType maskVal);140 bool psphotAddWithTest (pmSource *source, bool useState, psImageMaskType maskVal); 141 bool psphotSubWithTest (pmSource *source, bool useState, psImageMaskType maskVal); 142 bool psphotSetState (pmSource *source, bool curState, psImageMaskType maskVal); 142 143 bool psphotDeblendSatstars (psArray *sources, psMetadata *recipe); 143 144 bool psphotSourceSize (pmConfig *config, pmReadout *readout, psArray *sources, psMetadata *recipe, long first); 144 145 145 bool psphotMakeResiduals (psArray *sources, psMetadata *recipe, pmPSF *psf, ps MaskType maskVal);146 147 pmModel *psphotPSFConvModel (pmReadout *readout, pmSource *source, pmModelType modelType, ps MaskType maskVal, psMaskType markVal, int psfSize);146 bool psphotMakeResiduals (psArray *sources, psMetadata *recipe, pmPSF *psf, psImageMaskType maskVal); 147 148 pmModel *psphotPSFConvModel (pmReadout *readout, pmSource *source, pmModelType modelType, psImageMaskType maskVal, psImageMaskType markVal, int psfSize); 148 149 149 150 psKernel *psphotKernelFromPSF (pmSource *source, int nPix); 150 151 151 bool psphotRadialProfile (pmSource *source, psMetadata *recipe, ps MaskType maskVal);152 bool psphotPetrosian (pmSource *source, psMetadata *recipe, ps MaskType maskVal);153 bool psphotIsophotal (pmSource *source, psMetadata *recipe, ps MaskType maskVal);154 bool psphotAnnuli (pmSource *source, psMetadata *recipe, ps MaskType maskVal);155 bool psphotKron (pmSource *source, psMetadata *recipe, ps MaskType maskVal);152 bool psphotRadialProfile (pmSource *source, psMetadata *recipe, psImageMaskType maskVal); 153 bool psphotPetrosian (pmSource *source, psMetadata *recipe, psImageMaskType maskVal); 154 bool psphotIsophotal (pmSource *source, psMetadata *recipe, psImageMaskType maskVal); 155 bool psphotAnnuli (pmSource *source, psMetadata *recipe, psImageMaskType maskVal); 156 bool psphotKron (pmSource *source, psMetadata *recipe, psImageMaskType maskVal); 156 157 157 158 // psphotVisual functions … … 168 169 bool psphotVisualShowSatStars (psMetadata *recipe, pmPSF *psf, psArray *sources); 169 170 bool psphotVisualShowPSFModel (pmReadout *readout, pmPSF *psf); 170 bool psphotVisualPlotRadialProfile (int myKapa, pmSource *source, ps MaskType maskVal);171 bool psphotVisualPlotRadialProfile (int myKapa, pmSource *source, psImageMaskType maskVal); 171 172 bool psphotVisualPlotRadialProfiles (psMetadata *recipe, psArray *sources); 172 173 bool psphotVisualShowFlags (psArray *sources); … … 223 224 bool psphotMakeFluxScale (psImage *image, psMetadata *recipe, pmPSF *psf); 224 225 bool psphotMakeGrowthCurve (pmReadout *readout, psMetadata *recipe, pmPSF *psf); 225 bool psphotDumpPSFStars (pmReadout *readout, pmPSFtry *try, float radius, ps MaskType maskVal, psMaskType markVal);226 bool psphotDumpPSFStars (pmReadout *readout, pmPSFtry *try, float radius, psImageMaskType maskVal, psImageMaskType markVal); 226 227 227 228 bool psphotCheckStarDistribution (psArray *sources, psArray *stars, pmPSFOptions *options); -
trunk/psphot/src/psphotAddNoise.c
r20593 r21183 23 23 24 24 // user-defined masks to test for good/bad pixels (build from recipe list if not yet set) 25 ps MaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels25 psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels 26 26 assert (maskVal); 27 27 -
trunk/psphot/src/psphotAnnuli.c
r17396 r21183 1 1 # include "psphotInternal.h" 2 2 3 bool psphotAnnuli (pmSource *source, psMetadata *recipe, ps MaskType maskVal) {3 bool psphotAnnuli (pmSource *source, psMetadata *recipe, psImageMaskType maskVal) { 4 4 5 5 assert (source->extpars); -
trunk/psphot/src/psphotApResid.c
r21175 r21183 44 44 45 45 // bit-masks to test for good/bad pixels 46 ps MaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT");46 psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT"); 47 47 assert (maskVal); 48 48 49 49 // bit-mask to mark pixels not used in analysis 50 ps MaskType markVal = psMetadataLookupU8(&status, recipe, "MARK.PSPHOT");50 psImageMaskType markVal = psMetadataLookupImageMask(&status, recipe, "MARK.PSPHOT"); 51 51 assert (markVal); 52 52 … … 100 100 psArrayAdd(job->args, 1, psf); 101 101 PS_ARRAY_ADD_SCALAR(job->args, photMode, PS_TYPE_S32); 102 PS_ARRAY_ADD_SCALAR(job->args, maskVal, PS_TYPE_ U8); // XXX change this to use abstract mask type info102 PS_ARRAY_ADD_SCALAR(job->args, maskVal, PS_TYPE_IMAGE_MASK); 103 103 104 104 PS_ARRAY_ADD_SCALAR(job->args, 0, PS_TYPE_S32); // this is used as a return value for Nskip … … 139 139 140 140 // gather the stats to assess the aperture residuals 141 psVector *mask = psVectorAllocEmpty (300, PS_TYPE_ U8);141 psVector *mask = psVectorAllocEmpty (300, PS_TYPE_VECTOR_MASK); 142 142 psVector *mag = psVectorAllocEmpty (300, PS_TYPE_F32); 143 143 psVector *xPos = psVectorAllocEmpty (300, PS_TYPE_F32); … … 176 176 yPos->data.F32[Npsf] = model->params->data.F32[PM_PAR_YPOS]; 177 177 178 mask->data. U8[Npsf] = 0;178 mask->data.PS_TYPE_VECTOR_MASK_DATA[Npsf] = 0; 179 179 180 180 dMag->data.F32[Npsf] = model->dparams->data.F32[PM_PAR_I0] / model->params->data.F32[PM_PAR_I0]; … … 242 242 mag->data.F32[i], dMag->data.F32[i], dMagSys->data.F32[i], 243 243 apResid->data.F32[i], apResidRes->data.F32[i], 244 mask->data. U8[i]);244 mask->data.PS_TYPE_VECTOR_MASK_DATA[i]); 245 245 } 246 246 fclose (dumpFile); … … 325 325 psVector *dMSubset = psVectorAllocEmpty (nGroup, PS_TYPE_F32); 326 326 psVector *dASubset = psVectorAllocEmpty (nGroup, PS_TYPE_F32); 327 psVector *mkSubset = psVectorAllocEmpty (nGroup, PS_TYPE_ U8);327 psVector *mkSubset = psVectorAllocEmpty (nGroup, PS_TYPE_VECTOR_MASK); 328 328 329 329 int n = 0; … … 334 334 dMSubset->data.F32[j] = dMag->data.F32[N]; 335 335 dASubset->data.F32[j] = dap->data.F32[N]; 336 mkSubset->data. U8[j] = mask->data.U8[N];336 mkSubset->data.PS_TYPE_VECTOR_MASK_DATA[j] = mask->data.PS_TYPE_VECTOR_MASK_DATA[N]; 337 337 } 338 338 dMSubset->n = j; … … 460 460 pmPSF *psf = job->args->data[1]; 461 461 pmSourcePhotometryMode photMode = PS_SCALAR_VALUE(job->args->data[2],S32); 462 ps MaskType maskVal = PS_SCALAR_VALUE(job->args->data[3],U8);462 psImageMaskType maskVal = PS_SCALAR_VALUE(job->args->data[3],PS_TYPE_IMAGE_MASK_DATA); 463 463 464 464 for (int i = 0; i < sources->n; i++) { -
trunk/psphot/src/psphotBlendFit.c
r21166 r21183 133 133 134 134 // bit-masks to test for good/bad pixels 135 ps MaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT");135 psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT"); 136 136 assert (maskVal); 137 137 138 138 // bit-mask to mark pixels not used in analysis 139 ps MaskType markVal = psMetadataLookupU8(&status, recipe, "MARK.PSPHOT");139 psImageMaskType markVal = psMetadataLookupImageMask(&status, recipe, "MARK.PSPHOT"); 140 140 assert (markVal); 141 141 -
trunk/psphot/src/psphotChoosePSF.c
r21082 r21183 24 24 25 25 // bit-masks to test for good/bad pixels 26 ps MaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT");26 psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT"); 27 27 assert (maskVal); 28 28 29 29 // bit-mask to mark pixels not used in analysis 30 ps MaskType markVal = psMetadataLookupU8(&status, recipe, "MARK.PSPHOT");30 psImageMaskType markVal = psMetadataLookupImageMask(&status, recipe, "MARK.PSPHOT"); 31 31 assert (markVal); 32 32 … … 258 258 for (int i = 0; i < try->sources->n; i++) { 259 259 pmSource *source = try->sources->data[i]; 260 if (try->mask->data. U8[i]) {260 if (try->mask->data.PS_TYPE_VECTOR_MASK_DATA[i]) { 261 261 source->mode &= ~PM_SOURCE_MODE_PSFSTAR; 262 262 } -
trunk/psphot/src/psphotExtendedSourceAnalysis.c
r19881 r21183 12 12 13 13 // user-defined masks to test for good/bad pixels (build from recipe list if not yet set) 14 ps MaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels14 psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels 15 15 assert (maskVal); 16 16 -
trunk/psphot/src/psphotExtendedSourceFits.c
r19881 r21183 13 13 14 14 // user-defined masks to test for good/bad pixels (build from recipe list if not yet set) 15 ps MaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels15 psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels 16 16 assert (maskVal); 17 17 18 ps MaskType markVal = psMetadataLookupU8(&status, recipe, "MARK.PSPHOT"); // Mask value for bad pixels18 psImageMaskType markVal = psMetadataLookupImageMask(&status, recipe, "MARK.PSPHOT"); // Mask value for bad pixels 19 19 assert (markVal); 20 20 -
trunk/psphot/src/psphotExtendedSources.c
r17111 r21183 12 12 13 13 // user-defined masks to test for good/bad pixels (build from recipe list if not yet set) 14 ps MaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels14 psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels 15 15 assert (maskVal); 16 16 -
trunk/psphot/src/psphotFindDetections.c
r20453 r21183 10 10 11 11 // user-defined masks to test for good/bad pixels (build from recipe list if not yet set) 12 ps MaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels12 psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels 13 13 assert (maskVal); 14 14 -
trunk/psphot/src/psphotFindFootprints.c
r20831 r21183 1 1 # include "psphotInternal.h" 2 2 3 bool psphotFindFootprints (pmDetections *detections, psImage *significance, pmReadout *readout, psMetadata *recipe, const int pass, ps MaskType maskVal) {3 bool psphotFindFootprints (pmDetections *detections, psImage *significance, pmReadout *readout, psMetadata *recipe, const int pass, psImageMaskType maskVal) { 4 4 5 5 bool status; -
trunk/psphot/src/psphotFitSet.c
r14337 r21183 2 2 3 3 // This is only used by psphotModelTest.c 4 bool psphotFitSet (pmSource *source, pmModel *oneModel, char *fitset, pmSourceFitMode mode, ps MaskType maskVal) {4 bool psphotFitSet (pmSource *source, pmModel *oneModel, char *fitset, pmSourceFitMode mode, psImageMaskType maskVal) { 5 5 6 6 double x, y, Io; -
trunk/psphot/src/psphotFitSourcesLinear.c
r20938 r21183 10 10 // the analysis is performed wrt the simulated pixel values 11 11 12 static bool SetBorderMatrixElements (psSparseBorder *border, pmReadout *readout, psArray *sources, bool constant_weights, int SKY_FIT_ORDER, ps MaskType markVal);12 static bool SetBorderMatrixElements (psSparseBorder *border, pmReadout *readout, psArray *sources, bool constant_weights, int SKY_FIT_ORDER, psImageMaskType markVal); 13 13 14 14 bool psphotFitSourcesLinear (pmReadout *readout, psArray *sources, psMetadata *recipe, pmPSF *psf, bool final) { … … 23 23 24 24 // bit-masks to test for good/bad pixels 25 ps MaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT");25 psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT"); 26 26 assert (maskVal); 27 27 28 28 // bit-mask to mark pixels not used in analysis 29 ps MaskType markVal = psMetadataLookupU8(&status, recipe, "MARK.PSPHOT");29 psImageMaskType markVal = psMetadataLookupImageMask(&status, recipe, "MARK.PSPHOT"); 30 30 assert (markVal); 31 31 … … 233 233 // on the pixels which correspond to all of the sources of interest. These elements fill in 234 234 // the border matrix components in the sparse matrix equation. 235 static bool SetBorderMatrixElements (psSparseBorder *border, pmReadout *readout, psArray *sources, bool constant_weights, int SKY_FIT_ORDER, ps MaskType markVal) {235 static bool SetBorderMatrixElements (psSparseBorder *border, pmReadout *readout, psArray *sources, bool constant_weights, int SKY_FIT_ORDER, psImageMaskType markVal) { 236 236 237 237 // generate the image-wide weight terms … … 248 248 float x = model->params->data.F32[PM_PAR_XPOS]; 249 249 float y = model->params->data.F32[PM_PAR_YPOS]; 250 psImageMaskCircle (source->maskView, x, y, model->radiusFit, "AND", PS_NOT_ U8(markVal));250 psImageMaskCircle (source->maskView, x, y, model->radiusFit, "AND", PS_NOT_IMAGE_MASK(markVal)); 251 251 } 252 252 … … 254 254 psF32 **image = readout->image->data.F32; 255 255 psF32 **weight = readout->weight->data.F32; 256 ps U8 **mask = readout->mask->data.U8;256 psImageMaskType **mask = readout->mask->data.PS_TYPE_IMAGE_MASK_DATA; 257 257 258 258 double w, x, y, x2, xy, y2, xc, yc, wt, f, fo, fx, fy; … … 288 288 289 289 // turn off MARK for all image pixels 290 psImageMaskRegion (readout->mask, fullArray, "AND", PS_NOT_ U8(markVal));290 psImageMaskRegion (readout->mask, fullArray, "AND", PS_NOT_IMAGE_MASK(markVal)); 291 291 292 292 // set the Border T elements -
trunk/psphot/src/psphotGuessModels.c
r21166 r21183 41 41 42 42 // bit-masks to test for good/bad pixels 43 ps MaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT");43 psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT"); 44 44 assert (maskVal); 45 45 46 46 // bit-mask to mark pixels not used in analysis 47 ps MaskType markVal = psMetadataLookupU8(&status, recipe, "MARK.PSPHOT");47 psImageMaskType markVal = psMetadataLookupImageMask(&status, recipe, "MARK.PSPHOT"); 48 48 assert (markVal); 49 49 … … 73 73 74 74 // XXX change these to use abstract mask type info 75 PS_ARRAY_ADD_SCALAR(job->args, maskVal, PS_TYPE_ U8);76 PS_ARRAY_ADD_SCALAR(job->args, markVal, PS_TYPE_ U8);75 PS_ARRAY_ADD_SCALAR(job->args, maskVal, PS_TYPE_IMAGE_MASK); 76 PS_ARRAY_ADD_SCALAR(job->args, markVal, PS_TYPE_IMAGE_MASK); 77 77 78 78 if (!psThreadJobAddPending(job)) { … … 130 130 pmPSF *psf = job->args->data[2]; 131 131 132 ps MaskType maskVal = PS_SCALAR_VALUE(job->args->data[3],U8);133 ps MaskType markVal = PS_SCALAR_VALUE(job->args->data[4],U8);132 psImageMaskType maskVal = PS_SCALAR_VALUE(job->args->data[3],PS_TYPE_IMAGE_MASK_DATA); 133 psImageMaskType markVal = PS_SCALAR_VALUE(job->args->data[4],PS_TYPE_IMAGE_MASK_DATA); 134 134 135 135 int nSrc = 0; -
trunk/psphot/src/psphotIsophotal.c
r17561 r21183 1 1 # include "psphotInternal.h" 2 2 3 bool psphotIsophotal (pmSource *source, psMetadata *recipe, ps MaskType maskVal) {3 bool psphotIsophotal (pmSource *source, psMetadata *recipe, psImageMaskType maskVal) { 4 4 5 5 assert (source->extpars); -
trunk/psphot/src/psphotKron.c
r17396 r21183 1 1 # include "psphotInternal.h" 2 2 3 bool psphotKron (pmSource *source, psMetadata *recipe, ps MaskType maskVal) {3 bool psphotKron (pmSource *source, psMetadata *recipe, psImageMaskType maskVal) { 4 4 5 5 psLogMsg ("psphot", PS_LOG_INFO, "not implemented\n"); -
trunk/psphot/src/psphotMagnitudes.c
r21166 r21183 28 28 29 29 // bit-masks to test for good/bad pixels 30 ps MaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT");30 psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT"); 31 31 assert (maskVal); 32 32 33 33 // bit-mask to mark pixels not used in analysis 34 ps MaskType markVal = psMetadataLookupU8(&status, recipe, "MARK.PSPHOT");34 psImageMaskType markVal = psMetadataLookupImageMask(&status, recipe, "MARK.PSPHOT"); 35 35 assert (markVal); 36 36 -
trunk/psphot/src/psphotMakeGrowthCurve.c
r20453 r21183 11 11 12 12 // bit-masks to test for good/bad pixels 13 ps MaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT");13 psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT"); 14 14 assert (maskVal); 15 15 16 16 // bit-mask to mark pixels not used in analysis 17 ps MaskType markVal = psMetadataLookupU8(&status, recipe, "MARK.PSPHOT");17 psImageMaskType markVal = psMetadataLookupImageMask(&status, recipe, "MARK.PSPHOT"); 18 18 assert (markVal); 19 19 -
trunk/psphot/src/psphotMakeResiduals.c
r20453 r21183 1 1 # include "psphotInternal.h" 2 2 3 bool psphotMakeResiduals (psArray *sources, psMetadata *recipe, pmPSF *psf, ps MaskType maskVal) {3 bool psphotMakeResiduals (psArray *sources, psMetadata *recipe, pmPSF *psf, psImageMaskType maskVal) { 4 4 5 5 bool status, isPSF; 6 6 double flux, dflux; 7 ps U8mflux;7 psImageMaskType mflux; 8 8 9 9 psTimerStart ("psphot.residuals"); … … 69 69 // - set output pixel, weight, and mask 70 70 71 // XXX need to set these correctly!! 72 const int badMask = 1; // mask bits 73 const int poorMask = 2; // from psImageInterpolate 74 const int clippedMask = 4; // mask bit set for clipped values 71 // these mask values do not correspond to the recipe values: they 72 // are not propagated to images: they just need to fit in an 8-bit 73 // value. they are supplied to psImageInterpolate, which takes a 74 // psImageMaskType; the mask portion of the result from 75 // psImageInterpolate is supplied to fmasks, which is then used by 76 // psVectorStats 77 78 const psImageMaskType badMask = 0x01; // mask bits 79 const psImageMaskType poorMask = 0x02; // from psImageInterpolate 80 const psImageMaskType clippedMask = 0x04; // mask bit set for clipped values 81 const psVectorMaskType fmaskVal = badMask | poorMask | clippedMask; 75 82 76 83 // determine the maximum image size from the input sources … … 95 102 psImage *image = psImageCopy (NULL, source->pixels, PS_TYPE_F32); 96 103 psImage *weight = psImageCopy (NULL, source->weight, PS_TYPE_F32); 97 psImage *mask = psImageCopy (NULL, source->maskView, PS_TYPE_ U8);104 psImage *mask = psImageCopy (NULL, source->maskView, PS_TYPE_IMAGE_MASK); 98 105 pmModelSub (image, mask, model, PM_MODEL_OP_FUNC, maskVal); 99 106 … … 103 110 psBinaryOp (weight, weight, "/", psScalarAlloc(Io*Io, PS_TYPE_F32)); 104 111 105 // we willinterpolate the image and weight - include the mask or not?106 // XXX consider better values for the mask bits 107 psImageInterpolation *interp =108 psImageInterpolationAlloc(mode, image, weight, NULL, 0xff, 0.0, 0.0, badMask, poorMask, 0.0, 0);109 psArrayAdd (input, 100, interp);112 // we interpolate the image and weight - include the mask or not? 113 // XXX why not the mask? 114 // psImageInterpolation *interp = psImageInterpolationAlloc(mode, image, weight, mask, maskVal, 0.0, 0.0, badMask, poorMask, 0.0, 0); 115 psImageInterpolation *interp = psImageInterpolationAlloc(mode, image, weight, NULL, 0xff, 0.0, 0.0, badMask, poorMask, 0.0, 0); 116 psArrayAdd (input, 100, interp); 110 117 111 118 // save the X,Y position for future reference … … 131 138 psVector *fluxes = psVectorAlloc (input->n, PS_TYPE_F32); 132 139 psVector *dfluxes = psVectorAlloc (input->n, PS_TYPE_F32); 133 psVector *fmasks = psVectorAlloc (input->n, PS_TYPE_ U8);140 psVector *fmasks = psVectorAlloc (input->n, PS_TYPE_VECTOR_MASK); 134 141 135 142 // statistic to use to determine baseline for clipping … … 164 171 bool offImage = false; 165 172 if (psImageInterpolate (&flux, &dflux, &mflux, ix, iy, interp) == PS_INTERPOLATE_STATUS_OFF) { 173 // fprintf (stderr, "off image: %f %f : %f %f\n", ix, iy, flux, dflux); 166 174 // This pixel is off the image 167 175 offImage = true; 168 fmasks->data. U8[i] = 1;169 // fprintf (stderr, "off image: %f %f : %f %f\n", ix, iy, flux, dflux);170 } 171 fluxes->data.F32[i] = flux; 172 dfluxes->data.F32[i] = dflux;173 fmasks->data.U8[i] = mflux;176 fmasks->data.PS_TYPE_VECTOR_MASK_DATA[i] = badMask; 177 } else { 178 fmasks->data.PS_TYPE_VECTOR_MASK_DATA[i] = mflux; // XXX is mflux IMAGE or VECTOR type? 179 } 180 fluxes->data.F32[i] = flux; 181 dfluxes->data.F32[i] = dflux; 174 182 if (isnan(flux)) { 175 fmasks->data. U8[i] = 1;176 } 177 if (fmasks->data. U8[i] == 0) {183 fmasks->data.PS_TYPE_VECTOR_MASK_DATA[i] = badMask; 184 } 185 if (fmasks->data.PS_TYPE_VECTOR_MASK_DATA[i] == 0) { 178 186 nGoodPixel ++; 179 187 } 180 188 } 181 189 182 // skip pixels w hich are off the image...190 // skip pixels with insufficient data 183 191 bool validPixel = (SPATIAL_ORDER == 0) ? (nGoodPixel > 1) : (nGoodPixel > 3); 184 192 if (!validPixel) { … … 186 194 resid->Rx->data.F32[oy][ox] = 0.0; 187 195 resid->Ry->data.F32[oy][ox] = 0.0; 188 resid->mask->data. U8[oy][ox] = 1;196 resid->mask->data.PM_TYPE_RESID_MASK_DATA[oy][ox] = badMask; 189 197 continue; 190 198 } … … 192 200 // measure the robust median to determine a baseline reference value 193 201 *fluxClip = *fluxClipDef; 194 psVectorStats (fluxClip, fluxes, NULL, fmasks, 0xff);202 psVectorStats (fluxClip, fluxes, NULL, fmasks, fmaskVal); 195 203 psErrorClear(); // clear (ignore) any outstanding errors 196 204 … … 202 210 float swing = fabs(delta) / sigma; 203 211 204 // make this a user option 212 // mask pixels which are out of range 205 213 if (swing > nSigma) { 206 fmasks->data. U8[i] = clippedMask;207 } 208 if (!fmasks->data. U8[i]) nKeep++;214 fmasks->data.PS_TYPE_VECTOR_MASK_DATA[i] = clippedMask; 215 } 216 if (!fmasks->data.PS_TYPE_VECTOR_MASK_DATA[i]) nKeep++; 209 217 } 210 218 … … 212 220 // measure the desired statistic on the unclipped pixels 213 221 *fluxStats = *fluxStatsDef; 214 psVectorStats (fluxStats, fluxes, NULL, fmasks, 0xff);222 psVectorStats (fluxStats, fluxes, NULL, fmasks, fmaskVal); 215 223 psErrorClear(); // clear (ignore) any outstanding errors 216 224 … … 220 228 221 229 if (fabs(resid->Ro->data.F32[oy][ox]) < pixelSN*fluxStats->sampleStdev/sqrt(nKeep)) { 222 resid->mask->data. U8[oy][ox] = 1;223 } 224 225 // fprintf (stderr, "res: %2d %2d : %6.4f %6.4f %6.4f %3d %1d\n", ox, oy, resid->Ro->data.F32[oy][ox], fluxStats->sampleStdev, fluxStats->sampleStdev/sqrt(nKeep), nKeep, resid->mask->data. U8[oy][ox]);230 resid->mask->data.PM_TYPE_RESID_MASK_DATA[oy][ox] = 1; 231 } 232 233 // fprintf (stderr, "res: %2d %2d : %6.4f %6.4f %6.4f %3d %1d\n", ox, oy, resid->Ro->data.F32[oy][ox], fluxStats->sampleStdev, fluxStats->sampleStdev/sqrt(nKeep), nKeep, resid->mask->data.PM_TYPE_RESID_MASK_DATA[oy][ox]); 226 234 227 235 } else { … … 230 238 psVectorInit(B, 0.0); 231 239 for (int i = 0; i < fluxes->n; i++) { 232 if (fmasks->data. U8[i]) continue;240 if (fmasks->data.PS_TYPE_VECTOR_MASK_DATA[i]) continue; 233 241 B->data.F64[0] += fluxes->data.F32[i]/dfluxes->data.F32[i]; 234 242 B->data.F64[1] += fluxes->data.F32[i]*xC->data.F32[i]/dfluxes->data.F32[i]; … … 260 268 261 269 float dRo = sqrt(A->data.F32[0][0]); 262 // fprintf (stderr, "res: %2d %2d : %6.4f %6.4f %6.4f %3d %1d\n", ox, oy, resid->Ro->data.F32[oy][ox], dRo, dRo/sqrt(nKeep), nKeep, resid->mask->data.U8[oy][ox]); 270 // fprintf (stderr, "res: %2d %2d : %6.4f %6.4f %6.4f %3d %1d\n", 271 // ox, oy, resid->Ro->data.F32[oy][ox], dRo, dRo/sqrt(nKeep), nKeep, resid->mask->data.PM_TYPE_RESID_MASK_DATA[oy][ox]); 263 272 264 273 if (fabs(resid->Ro->data.F32[oy][ox]) < pixelSN*dRo/sqrt(nKeep)) { 265 resid->mask->data. U8[oy][ox] = 1;274 resid->mask->data.PM_TYPE_RESID_MASK_DATA[oy][ox] = 1; 266 275 } 267 276 //resid->weight->data.F32[oy][ox] = XXX; -
trunk/psphot/src/psphotMaskReadout.c
r18832 r21183 9 9 // XXX drop the write to recipe and move config into psphotRoughClass? 10 10 // XXX alternatively, define a function to set the psphot recipe masks 11 ps MaskType maskSat = pmConfigMaskGet("SAT", config); // Mask value for saturated pixels12 psMetadataAdd U8(recipe, PS_LIST_TAIL, "MASK.SAT", PS_META_REPLACE, "user-defined mask", maskSat);11 psImageMaskType maskSat = pmConfigMaskGet("SAT", config); // Mask value for saturated pixels 12 psMetadataAddImageMask (recipe, PS_LIST_TAIL, "MASK.SAT", PS_META_REPLACE, "user-defined mask", maskSat); 13 13 14 ps MaskType maskBad = pmConfigMaskGet("BAD", config); // Mask value for bad pixels15 psMetadataAdd U8(recipe, PS_LIST_TAIL, "MASK.BAD", PS_META_REPLACE, "user-defined mask", maskBad);14 psImageMaskType maskBad = pmConfigMaskGet("BAD", config); // Mask value for bad pixels 15 psMetadataAddImageMask (recipe, PS_LIST_TAIL, "MASK.BAD", PS_META_REPLACE, "user-defined mask", maskBad); 16 16 17 17 // generate mask & weight images if they don't already exit -
trunk/psphot/src/psphotModelBackground.c
r21108 r21183 46 46 47 47 // user-defined masks to test for good/bad pixels (build from recipe list if not yet set) 48 ps MaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels48 psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels 49 49 assert (maskVal); 50 50 -
trunk/psphot/src/psphotModelTest.c
r19881 r21183 13 13 14 14 // bit-masks to test for good/bad pixels 15 ps MaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT");15 psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT"); 16 16 assert (maskVal); 17 17 18 18 // bit-mask to mark pixels not used in analysis 19 ps MaskType markVal = psMetadataLookupU8(&status, recipe, "MARK.PSPHOT");19 psImageMaskType markVal = psMetadataLookupImageMask(&status, recipe, "MARK.PSPHOT"); 20 20 assert (markVal); 21 21 -
trunk/psphot/src/psphotModelWithPSF.c
r17396 r21183 20 20 paramMask = constraint->paramMask; 21 21 if (paramMask != NULL) { 22 PS_ASSERT_VECTOR_TYPE(paramMask, PS_TYPE_U8, false);22 PS_ASSERT_VECTOR_TYPE(paramMask, PS_TYPE_VECTOR_MASK, false); 23 23 PS_ASSERT_VECTORS_SIZE_EQUAL(params, paramMask, false); 24 24 } … … 145 145 psImageInit (covar, 0.0); 146 146 for (int j = 0, J = 0; j < params->n; j++) { 147 if (paramMask && (paramMask->data. U8[j])) {147 if (paramMask && (paramMask->data.PS_TYPE_VECTOR_MASK_DATA[j])) { 148 148 covar->data.F32[j][j] = 1.0; 149 149 continue; 150 150 } 151 151 for (int k = 0, K = 0; k < params->n; k++) { 152 if (paramMask && (paramMask->data. U8[k])) continue;152 if (paramMask && (paramMask->data.PS_TYPE_VECTOR_MASK_DATA[k])) continue; 153 153 covar->data.F32[j][k] = Alpha->data.F32[J][K]; 154 154 K++; … … 197 197 PS_ASSERT_VECTOR_TYPE(params, PS_TYPE_F32, false); 198 198 if (paramMask) { 199 PS_ASSERT_VECTOR_TYPE(paramMask, PS_TYPE_ MASK, false);199 PS_ASSERT_VECTOR_TYPE(paramMask, PS_TYPE_VECTOR_MASK, false); 200 200 } 201 201 … … 224 224 // XXX probably should not skipped masked points: 225 225 // XXX skip if convolution of unmasked pixels will not see this pixel 226 // if (source->maskObj->data. U8[i][j]) {226 // if (source->maskObj->data.PS_TYPE_IMAGE_MASK_DATA[i][j]) { 227 227 // continue; 228 228 // } … … 246 246 247 247 for (int n = 0; n < params->n; n++) { 248 if ((paramMask != NULL) && (paramMask->data. U8[n])) { continue; }248 if ((paramMask != NULL) && (paramMask->data.PS_TYPE_VECTOR_MASK_DATA[n])) { continue; } 249 249 psImage *dmodel = pcm->dmodels->data[n]; 250 250 dmodel->data.F32[i][j] = deriv->data.F32[n]; … … 285 285 // XXX are we doing the right thing with the mask? 286 286 // skip masked points 287 if (source->maskObj->data. U8[i][j]) {287 if (source->maskObj->data.PS_TYPE_IMAGE_MASK_DATA[i][j]) { 288 288 continue; 289 289 } … … 308 308 // alpha & beta only contain unmasked elements 309 309 for (int n1 = 0, N1 = 0; n1 < params->n; n1++) { 310 if ((paramMask != NULL) && (paramMask->data. U8[n1])) continue;310 if ((paramMask != NULL) && (paramMask->data.PS_TYPE_VECTOR_MASK_DATA[n1])) continue; 311 311 psImage *dmodel = pcm->dmodelsConv->data[n1]; 312 312 float weight = dmodel->data.F32[i][j] * yweight; 313 313 for (int n2 = 0, N2 = 0; n2 <= n1; n2++) { 314 if ((paramMask != NULL) && (paramMask->data. U8[n2])) continue;314 if ((paramMask != NULL) && (paramMask->data.PS_TYPE_VECTOR_MASK_DATA[n2])) continue; 315 315 dmodel = pcm->dmodelsConv->data[n2]; 316 316 alpha->data.F32[N1][N2] += weight * dmodel->data.F32[i][j]; … … 357 357 for (psS32 n = 0; n < params->n; n++) { 358 358 pcm->dmodels->data[n] = NULL; 359 if ((paramMask != NULL) && (paramMask->data. U8[n])) { continue; }359 if ((paramMask != NULL) && (paramMask->data.PS_TYPE_VECTOR_MASK_DATA[n])) { continue; } 360 360 pcm->dmodels->data[n] = psImageCopy (NULL, source->pixels, PS_TYPE_F32); 361 361 } … … 366 366 for (psS32 n = 0; n < params->n; n++) { 367 367 pcm->dmodelsConv->data[n] = NULL; 368 if ((paramMask != NULL) && (paramMask->data. U8[n])) { continue; }368 if ((paramMask != NULL) && (paramMask->data.PS_TYPE_VECTOR_MASK_DATA[n])) { continue; } 369 369 pcm->dmodelsConv->data[n] = psImageCopy (NULL, source->pixels, PS_TYPE_F32); 370 370 } -
trunk/psphot/src/psphotMosaicChip.c
r18712 r21183 25 25 } 26 26 27 ps MaskType blankMask = pmConfigMaskGet("BLANK", config);27 psImageMaskType blankMask = pmConfigMaskGet("BLANK", config); 28 28 29 29 // mosaic the chip, forcing a deep copy (resulting images are not subimages) -
trunk/psphot/src/psphotOutput.c
r20237 r21183 74 74 for (int j = 0; j < source->pixels->numCols; j++) { 75 75 // skip masked points 76 if (source->maskObj->data. U8[i][j]) {76 if (source->maskObj->data.PS_TYPE_IMAGE_MASK_DATA[i][j]) { 77 77 continue; 78 78 } … … 87 87 source->pixels->data.F32[i][j], 88 88 1.0 / source->weight->data.F32[i][j], 89 source->maskObj->data. U8[i][j]);89 source->maskObj->data.PS_TYPE_IMAGE_MASK_DATA[i][j]); 90 90 } 91 91 } … … 237 237 238 238 // XXX add args as needed 239 bool psphotDumpPSFStars (pmReadout *readout, pmPSFtry *try, float radius, ps MaskType maskVal, psMaskType markVal) {239 bool psphotDumpPSFStars (pmReadout *readout, pmPSFtry *try, float radius, psImageMaskType maskVal, psImageMaskType markVal) { 240 240 241 241 psphotSaveImage (NULL, readout->image, "rawstars.fits"); … … 243 243 for (int i = 0; i < try->sources->n; i++) { 244 244 // masked for: bad model fit, outlier in parameters 245 if (try->mask->data. U8[i] & PSFTRY_MASK_ALL)245 if (try->mask->data.PS_TYPE_VECTOR_MASK_DATA[i] & PSFTRY_MASK_ALL) 246 246 continue; 247 247 … … 256 256 psImageKeepCircle (source->maskObj, x, y, radius, "OR", markVal); 257 257 pmModelSub (source->pixels, source->maskObj, source->modelPSF, PM_MODEL_OP_FULL, maskVal); 258 psImageKeepCircle (source->maskObj, x, y, radius, "AND", PS_NOT_ U8(markVal));258 psImageKeepCircle (source->maskObj, x, y, radius, "AND", PS_NOT_IMAGE_MASK(markVal)); 259 259 } 260 260 … … 264 264 265 265 // masked for: bad model fit, outlier in parameters 266 if (try->mask->data. U8[i] & PSFTRY_MASK_ALL) continue;266 if (try->mask->data.PS_TYPE_VECTOR_MASK_DATA[i] & PSFTRY_MASK_ALL) continue; 267 267 268 268 pmSource *source = try->sources->data[i]; -
trunk/psphot/src/psphotPSFConvModel.c
r18555 r21183 9 9 // modelConv to contain the fitted parameters, and the modelFlux to contain the 10 10 // convolved model image. 11 pmModel *psphotPSFConvModel (pmReadout *readout, pmSource *source, pmModelType modelType, ps MaskType maskVal, psMaskType markVal, int psfSize) {11 pmModel *psphotPSFConvModel (pmReadout *readout, pmSource *source, pmModelType modelType, psImageMaskType maskVal, psImageMaskType markVal, int psfSize) { 12 12 13 13 // maskVal is used to test for rejected pixels, and must include markVal … … 72 72 // create the minimization constraints 73 73 psMinConstraint *constraint = psMinConstraintAlloc(); 74 constraint->paramMask = psVectorAlloc (params->n, PS_TYPE_ U8);74 constraint->paramMask = psVectorAlloc (params->n, PS_TYPE_VECTOR_MASK); 75 75 constraint->checkLimits = modelConv->modelLimits; 76 76 … … 79 79 int nParams = params->n - 1; 80 80 psVectorInit (constraint->paramMask, 0); 81 constraint->paramMask->data. U8[PM_PAR_SKY] = 1;81 constraint->paramMask->data.PS_TYPE_VECTOR_MASK_DATA[PM_PAR_SKY] = 1; 82 82 83 83 // force the floating parameters to fall within the contraint ranges … … 97 97 fprintf (stderr, "%f ", params->data.F32[i]); 98 98 } 99 if ((constraint->paramMask != NULL) && constraint->paramMask->data. U8[i])99 if ((constraint->paramMask != NULL) && constraint->paramMask->data.PS_TYPE_VECTOR_MASK_DATA[i]) 100 100 continue; 101 101 dparams->data.F32[i] = sqrt(covar->data.F32[i][i]); -
trunk/psphot/src/psphotPetrosian.c
r17561 r21183 1 1 # include "psphotInternal.h" 2 2 3 bool psphotPetrosian (pmSource *source, psMetadata *recipe, ps MaskType maskVal) {3 bool psphotPetrosian (pmSource *source, psMetadata *recipe, psImageMaskType maskVal) { 4 4 5 5 bool status; -
trunk/psphot/src/psphotRadialPlot.c
r15017 r21183 60 60 for (int iy = 0; iy < source->pixels->numRows; iy++) { 61 61 for (int ix = 0; ix < source->pixels->numCols; ix++) { 62 if (source->maskObj->data. U8[iy][ix]) {62 if (source->maskObj->data.PS_TYPE_IMAGE_MASK_DATA[iy][ix]) { 63 63 rb->data.F32[nb] = hypot (ix - Xo, iy - Yo) ; 64 64 fb->data.F32[nb] = log10(source->pixels->data.F32[iy][ix]); -
trunk/psphot/src/psphotRadialProfile.c
r17396 r21183 17 17 } 18 18 19 bool psphotRadialProfile (pmSource *source, psMetadata *recipe, ps MaskType maskVal) {19 bool psphotRadialProfile (pmSource *source, psMetadata *recipe, psImageMaskType maskVal) { 20 20 21 21 // allocate pmSourceExtendedParameters, if not already defined … … 54 54 for (int iy = 0; iy < source->pixels->numRows; iy++) { 55 55 for (int ix = 0; ix < source->pixels->numCols; ix++) { 56 if (source->maskObj->data. U8[iy][ix]) continue;56 if (source->maskObj->data.PS_TYPE_IMAGE_MASK_DATA[iy][ix]) continue; 57 57 radius->data.F32[n] = hypot (ix - Xo, iy - Yo) ; 58 58 flux->data.F32[n] = source->pixels->data.F32[iy][ix]; -
trunk/psphot/src/psphotRadiusChecks.c
r19308 r21183 19 19 20 20 // call this function whenever you (re)-define the PSF model 21 bool psphotCheckRadiusPSF (pmReadout *readout, pmSource *source, pmModel *model, ps MaskType markVal)21 bool psphotCheckRadiusPSF (pmReadout *readout, pmSource *source, pmModel *model, psImageMaskType markVal) 22 22 { 23 23 psF32 *PAR = model->params->data.F32; … … 50 50 } 51 51 52 bool psphotCheckRadiusPSFBlend (pmReadout *readout, pmSource *source, pmModel *model, ps MaskType markVal, float dR) {52 bool psphotCheckRadiusPSFBlend (pmReadout *readout, pmSource *source, pmModel *model, psImageMaskType markVal, float dR) { 53 53 54 54 psF32 *PAR = model->params->data.F32; … … 86 86 87 87 // call this function whenever you (re)-define the EXT model 88 bool psphotCheckRadiusEXT (pmReadout *readout, pmSource *source, pmModel *model, ps MaskType markVal) {88 bool psphotCheckRadiusEXT (pmReadout *readout, pmSource *source, pmModel *model, psImageMaskType markVal) { 89 89 90 90 psF32 *PAR = model->params->data.F32; -
trunk/psphot/src/psphotReplaceUnfit.c
r20453 r21183 2 2 3 3 // replace the flux for sources which failed 4 bool psphotReplaceUnfitSources (psArray *sources, ps MaskType maskVal) {4 bool psphotReplaceUnfitSources (psArray *sources, psImageMaskType maskVal) { 5 5 6 6 pmSource *source; … … 31 31 32 32 // user-defined masks to test for good/bad pixels (build from recipe list if not yet set) 33 ps MaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels33 psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels 34 34 assert (maskVal); 35 35 … … 55 55 56 56 // user-defined masks to test for good/bad pixels (build from recipe list if not yet set) 57 ps MaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels57 psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels 58 58 assert (maskVal); 59 59 … … 72 72 73 73 // add source, if the source has been subtracted; do not modify state 74 bool psphotAddWithTest (pmSource *source, bool useState, ps MaskType maskVal) {74 bool psphotAddWithTest (pmSource *source, bool useState, psImageMaskType maskVal) { 75 75 76 76 // what is current state? (true : add; false : sub) … … 83 83 84 84 // sub source, if the source has been added; do not modify state 85 bool psphotSubWithTest (pmSource *source, bool useState, ps MaskType maskVal) {85 bool psphotSubWithTest (pmSource *source, bool useState, psImageMaskType maskVal) { 86 86 87 87 // what is current state? (true : sub; false : add) … … 94 94 95 95 // add or sub source to match recorded state: supply current state as true (add) or false (sub) 96 bool psphotSetState (pmSource *source, bool curState, ps MaskType maskVal) {96 bool psphotSetState (pmSource *source, bool curState, psImageMaskType maskVal) { 97 97 98 98 // what is desired state? (true : add; false : sub) -
trunk/psphot/src/psphotRoughClass.c
r20453 r21183 57 57 58 58 // user-defined masks to test for good/bad pixels (build from recipe list if not yet set) 59 ps MaskType maskSat = psMetadataLookupU8(&status, recipe, "MASK.SAT"); // Mask value for bad pixels59 psImageMaskType maskSat = psMetadataLookupImageMask(&status, recipe, "MASK.SAT"); // Mask value for bad pixels 60 60 assert (maskSat); 61 61 -
trunk/psphot/src/psphotSetMaskBits.c
r18469 r21183 10 10 bool psphotSetMaskBits (pmConfig *config) { 11 11 12 ps MaskType maskValue;13 ps MaskType markValue;12 psImageMaskType maskValue; 13 psImageMaskType markValue; 14 14 15 15 if (!pmConfigMaskSetBits (&maskValue, &markValue, config)) { … … 26 26 27 27 // set maskValue and markValue in the psphot recipe 28 psMetadataAdd U8(recipe, PS_LIST_TAIL, "MARK.PSPHOT", PS_META_REPLACE, "user-defined mask", markValue);29 psMetadataAdd U8(recipe, PS_LIST_TAIL, "MASK.PSPHOT", PS_META_REPLACE, "user-defined mask", maskValue);28 psMetadataAddImageMask (recipe, PS_LIST_TAIL, "MARK.PSPHOT", PS_META_REPLACE, "user-defined mask", markValue); 29 psMetadataAddImageMask (recipe, PS_LIST_TAIL, "MASK.PSPHOT", PS_META_REPLACE, "user-defined mask", maskValue); 30 30 31 31 return true; -
trunk/psphot/src/psphotSignificanceImage.c
r20829 r21183 4 4 // (S/N)^2. If FWMH_X,Y have been recorded, use them, otherwise use PEAKS_SMOOTH_SIGMA for the 5 5 // smoothing kernel. 6 psImage *psphotSignificanceImage (pmReadout *readout, psMetadata *recipe, const int pass, ps MaskType maskVal) {6 psImage *psphotSignificanceImage (pmReadout *readout, psMetadata *recipe, const int pass, psImageMaskType maskVal) { 7 7 8 8 float SIGMA_SMTH, NSIGMA_SMTH; … … 110 110 for (int i = 0; i < smooth_im->numCols; i++) { 111 111 float value = smooth_im->data.F32[j][i]; 112 if (value < 0 || smooth_wt->data.F32[j][i] <= 0 || (mask->data. U8[j][i] & maskVal)) {112 if (value < 0 || smooth_wt->data.F32[j][i] <= 0 || (mask->data.PS_TYPE_IMAGE_MASK_DATA[j][i] & maskVal)) { 113 113 smooth_im->data.F32[j][i] = 0.0; 114 114 } else { -
trunk/psphot/src/psphotSkyReplace.c
r20453 r21183 17 17 // select the corresponding images 18 18 psF32 **image = readout->image->data.F32; 19 ps U8 **mask = readout->mask->data.U8;19 psImageMaskType **mask = readout->mask->data.PS_TYPE_IMAGE_MASK_DATA; 20 20 psF32 **back = background->image->data.F32; 21 21 -
trunk/psphot/src/psphotSourceFits.c
r21166 r21183 22 22 } 23 23 24 bool psphotFitBlend (pmReadout *readout, pmSource *source, pmPSF *psf, ps MaskType maskVal, psMaskType markVal) {24 bool psphotFitBlend (pmReadout *readout, pmSource *source, pmPSF *psf, psImageMaskType maskVal, psImageMaskType markVal) { 25 25 26 26 float x, y, dR; … … 147 147 } 148 148 149 bool psphotFitPSF (pmReadout *readout, pmSource *source, pmPSF *psf, ps MaskType maskVal, psMaskType markVal) {149 bool psphotFitPSF (pmReadout *readout, pmSource *source, pmPSF *psf, psImageMaskType maskVal, psImageMaskType markVal) { 150 150 151 151 double chiTrend; … … 208 208 } 209 209 210 bool psphotFitBlob (pmReadout *readout, pmSource *source, psArray *newSources, pmPSF *psf, ps MaskType maskVal, psMaskType markVal) {210 bool psphotFitBlob (pmReadout *readout, pmSource *source, psArray *newSources, pmPSF *psf, psImageMaskType maskVal, psImageMaskType markVal) { 211 211 212 212 bool okEXT, okDBL; … … 318 318 319 319 // fit a double PSF source to an extended blob 320 psArray *psphotFitDBL (pmReadout *readout, pmSource *source, ps MaskType maskVal, psMaskType markVal) {320 psArray *psphotFitDBL (pmReadout *readout, pmSource *source, psImageMaskType maskVal, psImageMaskType markVal) { 321 321 322 322 float dx, dy; … … 370 370 } 371 371 372 pmModel *psphotFitEXT (pmReadout *readout, pmSource *source, pmModelType modelType, ps MaskType maskVal, psMaskType markVal) {372 pmModel *psphotFitEXT (pmReadout *readout, pmSource *source, pmModelType modelType, psImageMaskType maskVal, psImageMaskType markVal) { 373 373 374 374 NfitEXT ++; -
trunk/psphot/src/psphotSourcePlots.c
r19869 r21183 7 7 8 8 // user-defined masks to test for good/bad pixels (build from recipe list if not yet set) 9 ps MaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels9 psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels 10 10 assert (maskVal); 11 11 -
trunk/psphot/src/psphotSourceSize.c
r20938 r21183 3 3 4 4 static float psphotModelContour(const psImage *image, const psImage *weight, const psImage *mask, 5 ps MaskType maskVal, const pmModel *model, float Ro);6 7 bool psphotMaskCosmicRay_Old (pmSource *source, ps MaskType maskVal, psMaskType crMask);8 bool psphotMaskCosmicRay_New (psImage *mask, pmSource *source, ps MaskType maskVal, psMaskType crMask);5 psImageMaskType maskVal, const pmModel *model, float Ro); 6 7 bool psphotMaskCosmicRay_Old (pmSource *source, psImageMaskType maskVal, psImageMaskType crMask); 8 bool psphotMaskCosmicRay_New (psImage *mask, pmSource *source, psImageMaskType maskVal, psImageMaskType crMask); 9 9 10 10 // we need to call this function after sources have been fitted to the PSF model and … … 21 21 22 22 // user-defined masks to test for good/bad pixels (build from recipe list if not yet set) 23 ps MaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels23 psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels 24 24 assert (maskVal); 25 25 26 26 // bit to mask the cosmic-ray pixels 27 ps MaskType crMask = pmConfigMaskGet("CR", config); // Mask value for cosmic rays27 psImageMaskType crMask = pmConfigMaskGet("CR", config); // Mask value for cosmic rays 28 28 29 29 float CR_NSIGMA_LIMIT = psMetadataLookupF32 (&status, recipe, "PSPHOT.CR.NSIGMA.LIMIT"); … … 63 63 psF32 **resid = source->pixels->data.F32; 64 64 psF32 **weight = source->weight->data.F32; 65 ps U8 **mask = source->maskObj->data.U8;65 psImageMaskType **mask = source->maskObj->data.PS_TYPE_IMAGE_MASK_DATA; 66 66 67 67 // check for extendedness: measure the delta flux significance at the 1 sigma contour … … 191 191 // deviations? 192 192 static float psphotModelContour(const psImage *image, const psImage *weight, const psImage *mask, 193 ps MaskType maskVal, const pmModel *model, float Ro)193 psImageMaskType maskVal, const pmModel *model, float Ro) 194 194 { 195 195 psF32 *PAR = model->params->data.F32; // Model parameters … … 239 239 240 240 if (yPixM >= 0 && yPixM < image->numRows && 241 !(mask && (mask->data.PS_TYPE_ MASK_DATA[yPixM][xPix] & maskVal))) {241 !(mask && (mask->data.PS_TYPE_IMAGE_MASK_DATA[yPixM][xPix] & maskVal))) { 242 242 float dSigma = image->data.F32[yPixM][xPix] / sqrtf(weight->data.F32[yPixM][xPix]); 243 243 nSigma += dSigma; … … 250 250 251 251 if (yPixP >= 0 && yPixP < image->numRows && 252 !(mask && (mask->data.PS_TYPE_ MASK_DATA[yPixP][xPix] & maskVal))) {252 !(mask && (mask->data.PS_TYPE_IMAGE_MASK_DATA[yPixP][xPix] & maskVal))) { 253 253 float dSigma = image->data.F32[yPixP][xPix] / sqrtf(weight->data.F32[yPixP][xPix]); 254 254 nSigma += dSigma; … … 260 260 } 261 261 262 bool psphotMaskCosmicRay_New (psImage *mask, pmSource *source, ps MaskType maskVal, psMaskType crMask) {262 bool psphotMaskCosmicRay_New (psImage *mask, pmSource *source, psImageMaskType maskVal, psImageMaskType crMask) { 263 263 264 264 // replace the source flux … … 294 294 295 295 for (int ix = xs; ix < xe; ix++) { 296 mask->data. U8[iy][ix] |= crMask;296 mask->data.PS_TYPE_IMAGE_MASK_DATA[iy][ix] |= crMask; 297 297 } 298 298 } … … 300 300 } 301 301 302 bool psphotMaskCosmicRay_Old (pmSource *source, ps MaskType maskVal, psMaskType crMask) {302 bool psphotMaskCosmicRay_Old (pmSource *source, psImageMaskType maskVal, psImageMaskType crMask) { 303 303 304 304 source->mode |= PM_SOURCE_MODE_CR_LIMIT; … … 320 320 float SN = pixels->data.F32[yo][ix] / sqrt(weight->data.F32[yo][ix]); 321 321 if (SN > SN_LIMIT) { 322 mask->data. U8[yo][ix] |= crMask;322 mask->data.PS_TYPE_IMAGE_MASK_DATA[yo][ix] |= crMask; 323 323 } 324 324 } … … 326 326 float SN = pixels->data.F32[yo][ix] / sqrt(weight->data.F32[yo][ix]); 327 327 if (SN > SN_LIMIT) { 328 mask->data. U8[yo][ix] |= crMask;328 mask->data.PS_TYPE_IMAGE_MASK_DATA[yo][ix] |= crMask; 329 329 } 330 330 } … … 339 339 340 340 bool valid = false; 341 valid |= (mask->data. U8[iy+1][ix] & crMask);342 valid |= (ix > 0) ? (mask->data. U8[iy+1][ix-1] & crMask) : 0;343 valid |= (ix <= mask->numCols) ? (mask->data. U8[iy+1][ix+1] & crMask) : 0;341 valid |= (mask->data.PS_TYPE_IMAGE_MASK_DATA[iy+1][ix] & crMask); 342 valid |= (ix > 0) ? (mask->data.PS_TYPE_IMAGE_MASK_DATA[iy+1][ix-1] & crMask) : 0; 343 valid |= (ix <= mask->numCols) ? (mask->data.PS_TYPE_IMAGE_MASK_DATA[iy+1][ix+1] & crMask) : 0; 344 344 345 345 if (!valid) continue; 346 mask->data. U8[iy][ix] |= crMask;346 mask->data.PS_TYPE_IMAGE_MASK_DATA[iy][ix] |= crMask; 347 347 } 348 348 } … … 355 355 356 356 bool valid = false; 357 valid |= (mask->data. U8[iy-1][ix] & crMask);358 valid |= (ix > 0) ? (mask->data. U8[iy-1][ix-1] & crMask) : 0;359 valid |= (ix <= mask->numCols) ? (mask->data. U8[iy-1][ix+1] & crMask) : 0;357 valid |= (mask->data.PS_TYPE_IMAGE_MASK_DATA[iy-1][ix] & crMask); 358 valid |= (ix > 0) ? (mask->data.PS_TYPE_IMAGE_MASK_DATA[iy-1][ix-1] & crMask) : 0; 359 valid |= (ix <= mask->numCols) ? (mask->data.PS_TYPE_IMAGE_MASK_DATA[iy-1][ix+1] & crMask) : 0; 360 360 361 361 if (!valid) continue; 362 mask->data. U8[iy][ix] |= crMask;362 mask->data.PS_TYPE_IMAGE_MASK_DATA[iy][ix] |= crMask; 363 363 } 364 364 } -
trunk/psphot/src/psphotSourceStats.c
r21166 r21183 17 17 nThreads = 0; 18 18 } 19 // nThreads = 0; // XXX until testing is complete, do not thread this function20 19 21 20 // determine properties (sky, moments) of initial sources … … 144 143 145 144 // bit-masks to test for good/bad pixels 146 ps MaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT");145 psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT"); 147 146 assert (maskVal); 148 147 149 148 // bit-mask to mark pixels not used in analysis 150 ps MaskType markVal = psMetadataLookupU8(&status, recipe, "MARK.PSPHOT");149 psImageMaskType markVal = psMetadataLookupImageMask(&status, recipe, "MARK.PSPHOT"); 151 150 assert (markVal); 152 151 -
trunk/psphot/src/psphotSubtractBackground.c
r20453 r21183 28 28 29 29 // user-defined masks to test for good/bad pixels (build from recipe list if not yet set) 30 ps MaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels30 psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels 31 31 assert (maskVal); 32 32 -
trunk/psphot/src/psphotTestPSF.c
r18555 r21183 111 111 psImageKeepCircle (source->mask, x, y, RADIUS, "OR", markVal); 112 112 status = pmSourceFitModel (source, model, PM_SOURCE_FIT_EXT); 113 psImageKeepCircle (source->mask, x, y, RADIUS, "AND", PS_NOT_ U8(markVal));113 psImageKeepCircle (source->mask, x, y, RADIUS, "AND", PS_NOT_IMAGE_MASK(markVal)); 114 114 115 115 // write fitted parameters to file -
trunk/psphot/src/psphotTestSourceOutput.c
r14655 r21183 80 80 float oy = yBin*(iy + 0.5 + image->row0 - yCenter) + yResidCenter; 81 81 82 ps U8mflux = 0;82 psImageMaskType mflux = 0; 83 83 double Fo = 0.0; 84 84 double Fx = 0.0; -
trunk/psphot/src/psphotVisual.c
r20938 r21183 51 51 ALLOCATE (image.data2d[iy], float, image.Nx); 52 52 for (int ix = 0; ix < image.Nx; ix++) { 53 image.data2d[iy][ix] = inImage->data. U8[iy][ix];53 image.data2d[iy][ix] = inImage->data.PS_TYPE_IMAGE_MASK_DATA[iy][ix]; 54 54 } 55 55 } … … 813 813 814 814 // user-defined masks to test for good/bad pixels (build from recipe list if not yet set) 815 ps MaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels815 psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels 816 816 assert (maskVal); 817 817 … … 973 973 974 974 // user-defined masks to test for good/bad pixels (build from recipe list if not yet set) 975 ps MaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels975 psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels 976 976 assert (maskVal); 977 977 … … 1097 1097 } 1098 1098 1099 bool psphotVisualPlotRadialProfile (int myKapa, pmSource *source, ps MaskType maskVal) {1099 bool psphotVisualPlotRadialProfile (int myKapa, pmSource *source, psImageMaskType maskVal) { 1100 1100 1101 1101 Graphdata graphdata; … … 1118 1118 for (int iy = 0; iy < source->pixels->numRows; iy++) { 1119 1119 for (int ix = 0; ix < source->pixels->numCols; ix++) { 1120 if (source->maskObj->data. U8[iy][ix]) {1120 if (source->maskObj->data.PS_TYPE_IMAGE_MASK_DATA[iy][ix]) { 1121 1121 // rb->data.F32[nb] = hypot (ix + 0.5 - Xo, iy + 0.5 - Yo) ; 1122 1122 rb->data.F32[nb] = hypot (ix - Xo, iy - Yo) ; … … 1227 1227 // user-defined masks to test for good/bad pixels (build from recipe list if not yet set) 1228 1228 bool status; 1229 ps MaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels1229 psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels 1230 1230 assert (maskVal); 1231 1231
Note:
See TracChangeset
for help on using the changeset viewer.
