Changeset 31384
- Timestamp:
- Apr 26, 2011, 5:54:39 PM (15 years ago)
- Location:
- branches/eam_branches/ipp-20110404
- Files:
-
- 13 edited
-
psModules/src/objects/pmGrowthCurve.c (modified) (1 diff)
-
psModules/src/objects/pmPSF.c (modified) (3 diffs)
-
psModules/src/objects/pmPSF.h (modified) (4 diffs)
-
psModules/src/objects/pmPeaks.c (modified) (3 diffs)
-
psModules/src/objects/pmPeaks.h (modified) (2 diffs)
-
psModules/src/objects/pmSource.c (modified) (7 diffs)
-
psModules/src/objects/pmSource.h (modified) (2 diffs)
-
psModules/src/objects/pmSourceIO_CMF_PS1_SV1.c (modified) (1 diff)
-
psphot/src/psphotBlendFit.c (modified) (1 diff)
-
psphot/src/psphotFitSourcesLinear.c (modified) (2 diffs)
-
psphot/src/psphotGuessModels.c (modified) (4 diffs)
-
psphot/src/psphotMakeGrowthCurve.c (modified) (1 diff)
-
psphot/src/psphotRadialApertures.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20110404/psModules/src/objects/pmGrowthCurve.c
r31361 r31384 96 96 growth->refRadius = refRadius; 97 97 growth->maxRadius = maxRadius; 98 growth->apLoss = 0.0; 99 growth->fitMag = 0.0; 98 growth->fitMag = NAN; 99 growth->apRef = NAN; 100 growth->apLoss = NAN; 101 100 102 return growth; 101 103 } -
branches/eam_branches/ipp-20110404/psModules/src/objects/pmPSF.c
r31153 r31384 73 73 74 74 options->type = 0; 75 76 75 options->stats = NULL; 77 options->fitOptions = NULL; // XXX this has to be set before calling pmPSF fit functions78 76 79 77 options->psfTrendMode = PM_TREND_NONE; … … 90 88 91 89 options->chiFluxTrend = true; 92 90 options->fitOptions = NULL; // XXX this has to be set before calling pmPSF fit functions 91 92 options->fitRadius = NAN; 93 options->apRadius = NAN; 93 94 return options; 94 95 } … … 141 142 142 143 psf->type = options->type; 144 143 145 psf->chisq = 0.0; 144 146 psf->ApResid = 0.0; -
branches/eam_branches/ipp-20110404/psModules/src/objects/pmPSF.h
r31361 r31384 31 31 struct pmPSF { 32 32 pmModelType type; ///< PSF Model in use 33 psArray *params; ///< Model parameters (psPolynomial2D) 34 psStats *psfTrendStats; ///< psf parameter trend clipping stats 35 pmTrend2DMode psfTrendMode; 36 psPolynomial1D *ChiTrend; ///< Chisq vs flux fit (correction for systematic errors) 37 pmTrend2D *ApTrend; ///< ApResid vs (x,y) 38 pmTrend2D *FluxScale; ///< Flux for PSF at (x,y) for normalization = 1.0 33 34 float chisq; ///< PSF goodness statistic (unused??) 39 35 float ApResid; ///< apMag - psfMag (for PSF stars) 40 36 float dApResid; ///< scatter of ApResid 41 37 float skyBias; ///< implied residual sky offset from ApResid fit 42 38 float skySat; ///< roll-over of ApResid fit 43 float chisq; ///< PSF goodness statistic (unused??)44 39 int nPSFstars; ///< number of stars used to measure PSF 45 40 int nApResid; ///< number of stars used to measure ApResid 41 42 bool poissonErrorsPhotLMM; ///< use poission errors for non-linear model fitting 43 bool poissonErrorsPhotLin; ///< use poission errors for linear model fitting 44 bool poissonErrorsParams; ///< use poission errors for model parameter fitting 45 46 pmTrend2D *ApTrend; ///< ApResid vs (x,y) 47 pmTrend2D *FluxScale; ///< Flux for PSF at (x,y) for normalization = 1.0 48 psPolynomial1D *ChiTrend; ///< Chisq vs flux fit (correction for systematic errors) 49 50 pmGrowthCurve *growth; ///< apMag vs Radius 51 pmResiduals *residuals; ///< normalized residual image (no spatial variation) 52 53 psArray *params; ///< Model parameters (psPolynomial2D) 54 psStats *psfTrendStats; ///< psf parameter trend clipping stats 55 56 pmTrend2DMode psfTrendMode; 46 57 int trendNx; 47 58 int trendNy; … … 50 61 int fieldXo; 51 62 int fieldYo; 52 bool poissonErrorsPhotLMM; ///< use poission errors for non-linear model fitting53 bool poissonErrorsPhotLin; ///< use poission errors for linear model fitting54 bool poissonErrorsParams; ///< use poission errors for model parameter fitting55 pmGrowthCurve *growth; ///< apMag vs Radius56 pmResiduals *residuals; ///< normalized residual image (no spatial variation)57 63 }; 58 64 … … 60 66 pmModelType type; 61 67 psStats *stats; // psfTrend clipping stats 68 62 69 pmTrend2DMode psfTrendMode; 63 70 int psfTrendNx; … … 67 74 int psfFieldXo; 68 75 int psfFieldYo; 76 69 77 bool poissonErrorsPhotLMM; ///< use poission errors for non-linear model fitting 70 78 bool poissonErrorsPhotLin; ///< use poission errors for linear model fitting 71 79 bool poissonErrorsParams; ///< use poission errors for model parameter fitting 80 81 bool chiFluxTrend; // Fit a trend in Chi2 as a function of flux? 82 pmSourceFitOptions *fitOptions; 83 72 84 float fitRadius; 73 85 float apRadius; 74 bool chiFluxTrend; // Fit a trend in Chi2 as a function of flux?75 pmSourceFitOptions *fitOptions;76 86 } pmPSFOptions; 77 87 -
branches/eam_branches/ipp-20110404/psModules/src/objects/pmPeaks.c
r31153 r31384 150 150 tmp->x = x; 151 151 tmp->y = y; 152 tmp->xf = x; 153 tmp->yf = y; 154 tmp->dx = NAN; 155 tmp->dy = NAN; 152 156 tmp->detValue = value; 153 157 tmp->rawFlux = value; // set this by default: it is up to the user to supply a better value … … 155 159 tmp->smoothFlux = value; // set this by default: it is up to the user to supply a better value 156 160 tmp->smoothFluxStdev = NAN; 157 // tmp->SN = 0;158 tmp->xf = x;159 tmp->yf = y;160 161 tmp->assigned = false; 161 162 tmp->type = type; … … 166 167 psTrace("psModules.objects", 10, "---- %s() end ----\n", __func__); 167 168 return(tmp); 169 } 170 171 // copy to an already allocated peak 172 bool pmPeakCopy(pmPeak *out, pmPeak *in) 173 { 174 out->x = in->x; 175 out->y = in->y; 176 out->xf = in->xf; 177 out->yf = in->yf; 178 out->dx = in->dx; 179 out->dy = in->dy; 180 out->detValue = in->detValue; 181 out->rawFlux = in->rawFlux; 182 out->rawFluxStdev = in->rawFluxStdev; 183 out->smoothFlux = in->smoothFlux; 184 out->smoothFluxStdev = in->smoothFluxStdev; 185 out->assigned = in->assigned; 186 out->type = in->type; 187 188 return true; 168 189 } 169 190 -
branches/eam_branches/ipp-20110404/psModules/src/objects/pmPeaks.h
r31153 r31384 69 69 float smoothFlux; ///< peak flux in smoothed signal image 70 70 float smoothFluxStdev; ///< peak stdev in smoothed signal image 71 // float SNestimated; ///< S/N estimated from the detection image72 71 bool assigned; ///< is peak assigned to a source? 73 72 pmPeakType type; ///< Description of peak. … … 89 88 90 89 bool psMemCheckPeak(psPtr ptr); 90 91 bool pmPeakCopy(pmPeak *out, pmPeak *in); 91 92 92 93 /** pmPeaksInVector() -
branches/eam_branches/ipp-20110404/psModules/src/objects/pmSource.c
r31360 r31384 116 116 source->psfImage = NULL; 117 117 source->moments = NULL; 118 source->blends = NULL;119 118 source->modelPSF = NULL; 120 119 source->modelEXT = NULL; … … 124 123 source->mode2 = PM_SOURCE_MODE_DEFAULT; 125 124 source->tmpFlags = 0; 126 source->extpars = NULL;127 source->diffStats = NULL;128 source->radialAper = NULL;129 source->parent = NULL;130 131 source->region = psRegionSet(NAN, NAN, NAN, NAN);132 psMemSetDeallocator(source, (psFreeFunc) sourceFree);133 125 134 126 // default values are NAN 135 127 source->psfMag = NAN; 128 source->psfMagErr = NAN; 136 129 source->psfFlux = NAN; 137 130 source->psfFluxErr = NAN; 138 131 source->extMag = NAN; 139 source->psfMagErr = NAN;140 132 source->apMag = NAN; 141 133 source->apMagRaw = NAN; … … 143 135 source->apFlux = NAN; 144 136 source->apFluxErr = NAN; 145 source->sky = NAN; 146 source->skyErr = NAN; 137 147 138 source->pixWeightNotBad = NAN; 148 139 source->pixWeightNotPoor = NAN; … … 151 142 source->crNsigma = NAN; 152 143 source->extNsigma = NAN; 144 source->sky = NAN; 145 source->skyErr = NAN; 146 147 source->region = psRegionSet(NAN, NAN, NAN, NAN); 148 source->blends = NULL; 149 source->extpars = NULL; 150 source->diffStats = NULL; 151 source->radialAper = NULL; 152 source->parent = NULL; 153 source->imageID = -1; 154 155 psMemSetDeallocator(source, (psFreeFunc) sourceFree); 153 156 154 157 psTrace("psModules.objects", 10, "---- end ----\n"); … … 172 175 if (in->peak != NULL) { 173 176 source->peak = pmPeakAlloc (in->peak->x, in->peak->y, in->peak->detValue, in->peak->type); 174 source->peak->xf = in->peak->xf; 175 source->peak->yf = in->peak->yf; 176 source->peak->rawFlux = in->peak->rawFlux; 177 source->peak->rawFluxStdev = in->peak->rawFluxStdev; 178 source->peak->smoothFlux = in->peak->smoothFlux; 179 source->peak->smoothFluxStdev = in->peak->smoothFluxStdev; 180 // source->peak->SN = in->peak->SN; 177 pmPeakCopy(source->peak, in->peak); 181 178 } 182 179 … … 195 192 196 193 // the maskObj is a unique mask array; create a new mask image 197 source->maskObj = in->maskObj ? psImageCopy (NULL, in->maskObj, PS_TYPE_IMAGE_MASK) : NULL; 198 199 source->type = in->type; 200 source->mode = in->mode; 201 source->mode2 = in->mode2; 202 source->tmpFlags = in->tmpFlags; 203 source->imageID = in->imageID; 204 205 source->psfMag = in->psfMag; 206 source->psfFlux = in->psfFlux; 207 source->psfFluxErr = in->psfFluxErr; 208 source->extMag = in->extMag; 209 source->psfMagErr = in->psfMagErr; 210 source->apMag = in->apMag; 211 source->apMagRaw = in->apMagRaw; 212 source->apRadius = in->apRadius; 213 source->apFlux = in->apFlux; 214 source->apFluxErr = in->apFluxErr; 215 source->pixWeightNotBad = in->pixWeightNotBad; 216 source->pixWeightNotPoor = in->pixWeightNotPoor; 217 source->psfChisq = in->psfChisq; 218 source->crNsigma = in->crNsigma; 219 source->extNsigma = in->extNsigma; 220 source->sky = in->sky; 221 source->skyErr = in->skyErr; 194 source->maskObj = in->maskObj ? psImageCopy (NULL, in->maskObj, PS_TYPE_IMAGE_MASK) : NULL; 195 196 // NOTE : because of the const id element, we cannot just assign *source = *in 197 198 source->type = in->type; 199 source->mode = in->mode; 200 source->mode2 = in->mode2; 201 source->tmpFlags = in->tmpFlags; 202 source->psfMag = in->psfMag; 203 source->psfMagErr = in->psfMagErr; 204 source->psfFlux = in->psfFlux; 205 source->psfFluxErr = in->psfFluxErr; 206 source->extMag = in->extMag; 207 source->apMag = in->apMag; 208 source->apMagRaw = in->apMagRaw; 209 source->apRadius = in->apRadius; 210 source->apFlux = in->apFlux; 211 source->apFluxErr = in->apFluxErr; 212 source->pixWeightNotBad = in->pixWeightNotBad; 213 source->pixWeightNotPoor = in->pixWeightNotPoor; 214 source->psfChisq = in->psfChisq; 215 source->crNsigma = in->crNsigma; 216 source->extNsigma = in->extNsigma; 217 source->sky = in->sky; 218 source->skyErr = in->skyErr; 219 220 source->region = in->region; 222 221 223 222 return(source); … … 1195 1194 if (!source->moments) return false; // can't if there are no moments 1196 1195 if (!source->moments->nPixels) return false; // can't if the moments were not measured 1197 if (source->mode & &PM_SOURCE_MODE_MOMENTS_FAILURE) return false; // can't if the moments failed...1196 if (source->mode & PM_SOURCE_MODE_MOMENTS_FAILURE) return false; // can't if the moments failed... 1198 1197 1199 1198 if (source->mode & PM_SOURCE_MODE_SATSTAR) return true; // moments are best for SATSTARs -
branches/eam_branches/ipp-20110404/psModules/src/objects/pmSource.h
r31361 r31384 80 80 pmSourceMode2 mode2; ///< analysis flags set for object. 81 81 pmSourceTmpF tmpFlags; ///< internal-only flags 82 psArray *blends; ///< collection of sources thought to be confused with object 82 83 83 float psfMag; ///< calculated from flux in modelPSF 84 84 float psfMagErr; ///< error in psfMag … … 98 98 float crNsigma; ///< Nsigma deviation from PSF to CR 99 99 float extNsigma; ///< Nsigma deviation from PSF to EXT 100 float sky, skyErr; ///< The sky and its error at the center of the object 100 float sky; ///< The sky at the center of the object 101 float skyErr; ///< The sky error at the center of the object 102 101 103 psRegion region; ///< area on image covered by selected pixels 104 psArray *blends; ///< collection of sources thought to be confused with object 102 105 pmSourceExtendedPars *extpars; ///< extended source parameters 103 106 pmSourceDiffStats *diffStats; ///< extra parameters for difference detections -
branches/eam_branches/ipp-20110404/psModules/src/objects/pmSourceIO_CMF_PS1_SV1.c
r31360 r31384 720 720 sprintf (keyword1, "RMIN_%02d", i); 721 721 sprintf (keyword2, "RMAX_%02d", i); 722 psMetadataAddF32 ( imageHeader, PS_LIST_TAIL, keyword1, PS_META_REPLACE, "min radius for SB profile", radMin->data.F32[i]);723 psMetadataAddF32 ( imageHeader, PS_LIST_TAIL, keyword2, PS_META_REPLACE, "min radius for SB profile", radMax->data.F32[i]);722 psMetadataAddF32 (outhead, PS_LIST_TAIL, keyword1, PS_META_REPLACE, "min radius for SB profile", radMin->data.F32[i]); 723 psMetadataAddF32 (outhead, PS_LIST_TAIL, keyword2, PS_META_REPLACE, "min radius for SB profile", radMax->data.F32[i]); 724 724 } 725 725 -
branches/eam_branches/ipp-20110404/psphot/src/psphotBlendFit.c
r31313 r31384 242 242 if (source->mode & PM_SOURCE_MODE_PAIR) continue; 243 243 244 // do not include MOMENTS_FAILURES in the fit 245 if (source->mode & PM_SOURCE_MODE_MOMENTS_FAILURE) continue; 246 244 247 // limit selection to some SN limit 245 248 if (sqrt(source->peak->detValue) < FIT_SN_LIM) continue; -
branches/eam_branches/ipp-20110404/psphot/src/psphotFitSourcesLinear.c
r31381 r31384 137 137 if (source->mode & PM_SOURCE_MODE_CR_LIMIT) continue; 138 138 139 // do not include MOMENTS_FAILURES in the fit 140 if (source->mode & PM_SOURCE_MODE_MOMENTS_FAILURE) continue; 141 139 142 // XXX count saturated stars 140 143 if (source->mode & PM_SOURCE_MODE_SATSTAR) { … … 166 169 // apply mask? 167 170 float modelSum = 0.0; 171 float maskedSum = 0.0; 168 172 for (int iy = 0; iy < source->modelFlux->numRows; iy++) { 169 173 for (int ix = 0; ix < source->modelFlux->numCols; ix++) { 170 174 modelSum += source->modelFlux->data.F32[iy][ix]; 175 if (source->maskObj->data.PS_TYPE_IMAGE_MASK_DATA[iy][ix] & maskVal) continue; 176 maskedSum += source->modelFlux->data.F32[iy][ix]; 171 177 } 172 178 } 173 179 if (modelSum < 0.5) continue; // skip sources with no model constraint (somewhat arbitrary limit) 174 180 if (modelSum < 0.8) { 175 fprintf (stderr, "low-sig model @ %f, %f (%f sum, %f peak)\n", 176 source->peak->xf, source->peak->yf, modelSum, source->peak->rawFlux); 181 fprintf (stderr, "low-sig model @ %f, %f (%f masked sum, %f sum, %f peak)\n", 182 source->peak->xf, source->peak->yf, maskedSum, modelSum, source->peak->rawFlux); 183 } 184 if (maskedSum < 0.5) { 185 fprintf (stderr, "worrying model @ %f, %f (%f masked sum, %f sum, %f peak)\n", 186 source->peak->xf, source->peak->yf, maskedSum, modelSum, source->peak->rawFlux); 177 187 } 178 188 -
branches/eam_branches/ipp-20110404/psphot/src/psphotGuessModels.c
r31154 r31384 160 160 pmSource *source = sources->data[i]; 161 161 162 if (source->mode & PM_SOURCE_MODE_MOMENTS_FAILURE) {163 fprintf (stderr, "moment failure\n");164 }165 166 162 // this is used to mark sources for which the model is measured. We check later that 167 163 // all are used. … … 169 165 170 166 // skip non-astronomical objects (very likely defects) 167 if (source->mode & PM_SOURCE_MODE_MOMENTS_FAILURE) continue; 171 168 if (source->type == PM_SOURCE_TYPE_DEFECT) continue; 172 169 if (source->type == PM_SOURCE_TYPE_SATURATED) continue; … … 196 193 } 197 194 195 # if (0) 198 196 if (source->mode & PM_SOURCE_MODE_SATSTAR) { 199 197 fprintf (stderr, "satstar: %f,%f vs %f,%f : %c\n", … … 202 200 (useMoments ? 'T' : 'F')); 203 201 } 202 # endif 204 203 205 204 // set PSF parameters for this model (apply 2D shape model to coordinates Xo, Yo) -
branches/eam_branches/ipp-20110404/psphot/src/psphotMakeGrowthCurve.c
r31362 r31384 50 50 # endif 51 51 52 psLogMsg ("psphot", PS_LOG_MINUTIA, "built growth curve: %f sec\n", psTimerMark ("psphot.growth")); 53 52 54 float offset = pmGrowthCurveCorrect (psf->growth, PSF_APERTURE); 53 fprintf (stderr, "correction from %f to %f: %f mags\n", PSF_APERTURE, REF_RADIUS, offset); 54 55 psLogMsg ("psphot", PS_LOG_MINUTIA, "built growth curve: %f sec\n", psTimerMark ("psphot.growth")); 55 psLogMsg ("psphot", PS_LOG_DETAIL, "correction from %f to %f: %f mags\n", PSF_APERTURE, REF_RADIUS, offset); 56 56 57 57 return true; -
branches/eam_branches/ipp-20110404/psphot/src/psphotRadialApertures.c
r31154 r31384 95 95 if (source->type == PM_SOURCE_TYPE_SATURATED) continue; 96 96 if (source->mode & PM_SOURCE_MODE_DEFECT) continue; 97 if (source->mode & PM_SOURCE_MODE_SATSTAR) continue; 97 98 // XXX measure radial apertures even for saturated stars 99 // if (source->mode & PM_SOURCE_MODE_SATSTAR) continue; 98 100 99 101 // limit selection to some SN limit … … 257 259 float SBstdv = sqrt((fluxStd->data.F32[i] / nPix) - PS_SQR(SBmean)); 258 260 261 // XXX report the total flux or the mask-corrected flux? 259 262 // flux->data.F32[i] = SBmean * Area; 263 // fluxErr->data.F32[i] = sqrt(fluxErr->data.F32[i]) * Area / nPix; 264 265 fluxErr->data.F32[i] = sqrt(fluxErr->data.F32[i]); 260 266 fluxStd->data.F32[i] = SBstdv * Area; 261 fluxErr->data.F32[i] = sqrt(fluxErr->data.F32[i]) * Area / nPix; 262 263 // fill->data.F32[i] /= Area; 267 fill->data.F32[i] /= Area; 268 264 269 psTrace ("psphot", 5, "radial bins: %3d %5.1f : %8.1f +/- %7.2f : %8.1f +/- %8.1f : %4.2f %6.1f\n", 265 270 i, aperRadii->data.F32[i], flux->data.F32[i], fluxErr->data.F32[i], SBmean, SBstdv, fill->data.F32[i], Area);
Note:
See TracChangeset
for help on using the changeset viewer.
