Changeset 6715
- Timestamp:
- Mar 27, 2006, 4:31:17 PM (20 years ago)
- Location:
- trunk/psphot/src
- Files:
-
- 2 added
- 6 deleted
- 29 edited
-
Makefile.am (modified) (4 diffs)
-
psImageData.c (deleted)
-
psModulesUtils.c (deleted)
-
psModulesUtils.h (deleted)
-
psphot.c (modified) (1 diff)
-
psphot.h (modified) (7 diffs)
-
psphotApResid.c (modified) (2 diffs)
-
psphotApplyPSF.c (modified) (2 diffs)
-
psphotArguments.c (modified) (7 diffs)
-
psphotBasicDeblend.c (modified) (3 diffs)
-
psphotBlendFit.c (modified) (4 diffs)
-
psphotChoosePSF.c (modified) (2 diffs)
-
psphotCleanup.c (modified) (1 diff)
-
psphotEnsemblePSF.c (modified) (6 diffs)
-
psphotEvalFLT.c (modified) (4 diffs)
-
psphotEvalPSF.c (modified) (16 diffs)
-
psphotFakeSources.c (added)
-
psphotFitGalaxies.c (modified) (4 diffs)
-
psphotFitSet.c (modified) (1 diff)
-
psphotFullFit.c (modified) (8 diffs)
-
psphotGrowthCurve.c (modified) (2 diffs)
-
psphotImageLoop.c (modified) (1 diff)
-
psphotImageMedian.c (modified) (6 diffs)
-
psphotMagnitudes.c (modified) (1 diff)
-
psphotMaskReadout.c (added)
-
psphotModelTest.c (modified) (2 diffs)
-
psphotOutput.c (modified) (4 diffs)
-
psphotParseCamera.c (modified) (4 diffs)
-
psphotRadiusChecks.c (modified) (3 diffs)
-
psphotReadout.c (modified) (3 diffs)
-
psphotReplaceUnfit.c (modified) (1 diff)
-
psphotSkyReplace.c (modified) (2 diffs)
-
psphotSourceFits.c (modified) (16 diffs)
-
psphotSourceStats.c (modified) (1 diff)
-
testPPimageLoop.c (deleted)
-
testPSastroLoop.c (deleted)
-
testPSphotLoop.c (deleted)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psphot/src/Makefile.am
r6571 r6715 16 16 psphotArguments.c \ 17 17 psphotParseCamera.c \ 18 testPSphotLoop.c \19 psphotMask Cell.c \18 psphotImageLoop.c \ 19 psphotMaskReadout.c \ 20 20 psphotReadout.c \ 21 21 psphotImageMedian.c \ … … 33 33 psphotEvalPSF.c \ 34 34 psphotEvalFLT.c \ 35 psphotSourceFits.c 35 psphotSourceFits.c \ 36 psphotRadiusChecks.c \ 37 psphotSortBySN.c \ 38 psphotOutput.c \ 39 psphotGrowthCurve.c \ 40 psphotFakeSources.c \ 41 psphotCleanup.c 36 42 37 junk = psphotGrowthCurve.c \ 38 psphotCleanup.c \ 39 psphotSortBySN.c \ 40 psphotDefinePixels.c \ 41 psphotRadiusChecks.c \ 42 psModulesUtils.c \ 43 junk = psphotDefinePixels.c \ 43 44 pmSourceContour.c \ 44 45 pmModelFitSet.c \ … … 47 48 48 49 noinst_HEADERS = \ 49 psLibUtils.h \ 50 psModulesUtils.h \ 51 psphot.h \ 52 psSparse.h 50 psphot.h 53 51 54 52 clean-local: … … 58 56 etags `find . -name \*.[ch] -print` 59 57 60 61 58 # psphotFullFit.c 62 59 # psphotApplyPSF.c 63 60 # psphotFitGalaxies.c 64 # psphotImageStats.c65 # psphotImageBackground.c66 # psphotOutput.c67 61 # psphotLoadPixels.c -
trunk/psphot/src/psphot.c
r6571 r6715 3 3 // XXX need a better structure for handling optional sequences 4 4 int main (int argc, char **argv) { 5 6 // headtest (argc, argv); 5 7 6 8 psTimerStart ("complete"); -
trunk/psphot/src/psphot.h
r6571 r6715 3 3 # include <unistd.h> // for unlink 4 4 # include <pslib.h> 5 # include <pmObjects.h> 5 # include <psmodules.h> 6 7 # if (0) 8 # include <psLine.h> 9 # include <psSparse.h> 10 # include <psEllipse.h> 11 # include <psAdditionals.h> 12 # include <pmConfig.h> 13 # include <pmHDU.h> 14 # include <pmHDUUtils.h> 15 # include <pmFPA.h> 16 # include <pmFPAview.h> 17 # include <pmFPAfile.h> 18 # include <pmFPARead.h> 19 # include <pmFPAConstruct.h> 20 # include <pmMaskBadPixels.h> 21 # include <pmConcepts.h> 22 23 # include <pmPeaks.h> 24 # include <pmMoments.h> 25 # include <pmModel.h> 26 # include <pmSource.h> 27 # include <pmSourceIO.h> 28 # include <pmSourceSky.h> 29 # include <pmSourceFitModel.h> 30 # include <pmSourceFitSet.h> 31 # include <pmSourceContour.h> 6 32 # include <pmGrowthCurve.h> 7 # include <pmConfig.h>8 # include <pmFPARead.h>9 33 # include <pmPSF.h> 10 34 # include <pmPSFtry.h> 11 35 # include <pmModelGroup.h> 12 // # include "psLibUtils.h" 13 // # include "psModulesUtils.h" 14 // # include "psSparse.h" 15 # include "pmFPAConstruct.h" 16 # include "pmConcepts.h" 36 # include <pmSourcePhotometry.h> 37 # endif 17 38 18 39 # define PSPHOT_RECIPE "PSPHOT" … … 26 47 27 48 bool psphotModelTest (pmReadout *readout, psMetadata *arguments, psMetadata *recipe); 28 bool psphotReadout (pm Readout *readout, psMetadata *config);49 bool psphotReadout (pmConfig *config, pmFPAview *view); 29 50 void psphotCleanup (void); 30 51 31 // bool ppImageLoadPixels (ppFile *input, psDB *db, int chipNum, int cellNum); 52 psArray *psphotFakeSources (); 53 int psphotSaveImage (psMetadata *header, psImage *image, char *filename); 32 54 33 55 // psphotReadout functions 34 psStats *psphotImageStats (pmReadout *readout, psMetadata *config); 35 psPolynomial2D *psphotImageBackground (pmReadout *readout, psMetadata *config, psStats *sky); 56 bool psphotImageMedian (pmConfig *config, pmFPAview *view); 36 57 psArray *psphotFindPeaks (pmReadout *readout, psMetadata *config); 37 58 psArray *psphotSourceStats (pmReadout *readout, psMetadata *config, psArray *allpeaks); 38 59 bool psphotRoughClass (psArray *sources, psMetadata *config); 39 60 bool psphotBasicDeblend (psArray *sources, psMetadata *config); 40 pmPSF *psphotChoosePSF (psMetadata *config, psArray *sources); 41 void psphotOutput (pmReadout *readout, psMetadata *arguments); 42 psImage *psphotImageMedian (pmReadout *readout, psMetadata *config); 43 44 // optional object analysis steps 45 bool psphotEnsemblePSF (pmReadout *readout, psMetadata *config, psArray *sources, pmPSF *psf, bool final); 46 bool psphotBlendFit (pmReadout *readout, psMetadata *config, psArray *sources, pmPSF *psf); 61 pmPSF *psphotChoosePSF (psArray *sources, psMetadata *config); 62 bool psphotEnsemblePSF (pmReadout *readout, psArray *sources, psMetadata *config, pmPSF *psf, bool final); 63 bool psphotBlendFit (pmReadout *readout, psArray *sources, psMetadata *config, pmPSF *psf); 47 64 bool psphotReplaceUnfit (psArray *sources); 48 65 bool psphotApResid (pmReadout *readout, psArray *sources, psMetadata *config, pmPSF *psf); 66 bool psphotMagnitudes (psArray *sources, psMetadata *config, pmPSF *psf); 67 bool psphotSkyReplace (pmConfig *config, pmFPAview *view); 49 68 50 69 // basic support functions … … 54 73 bool psphotGrowthCurve (pmReadout *readout, pmPSF *psf); 55 74 void psphotTestArguments (int *argc, char **argv); 56 bool psphotMask Cell (pmCell *cell, psMetadata *recipe);75 bool psphotMaskReadout (pmReadout *readout, psMetadata *recipe); 57 76 bool psphotBackgroundNames (psMetadata *arguments); 58 bool psphotSkyReplace (pmReadout *readout, psImage *background);59 77 60 78 // functions to set the correct source pixels … … 66 84 67 85 // output functions 68 # if (0)69 bool pmSourcesWriteSX (psArray *sources, char *filename);70 bool pmSourcesWriteOBJ (psArray *sources, char *filename);71 bool pmSourcesWriteCMP (psArray *sources, char *filename, psMetadata *header);72 bool pmSourcesWriteCMF (psArray *sources, char *filename, psMetadata *header);73 bool pmSourcesWriteText (psArray *sources, char *filename);74 75 bool pmModelWritePSFs (psArray *sources, char *filename);76 bool pmModelWriteEXTs (psArray *sources, char *filename);77 bool pmModelWriteNULLs (psArray *sources, char *filename);78 bool pmPeaksWriteText (psArray *sources, char *filename);79 bool pmMomentsWriteText (psArray *sources, char *filename);80 81 bool psphotSamplePSFs (pmPSF *psf, psImage *image, char *output);82 86 bool psphotDumpMoments (psMetadata *config, psArray *sources); 83 int psphotSaveImage (psMetadata *header, psImage *image, char *filename);84 87 bool psphotUpdateHeader (psMetadata *header, psMetadata *config); 85 # endif86 87 // void psphotOutputPrep (ppFile *file, ppConfig *config);88 // void psphotOutputCleanup (void);89 90 bool psphotMagnitudes (psMetadata *config, psArray *sources, pmPSF *psf);91 88 92 89 // PSF / DBL / EXT evaluation functions … … 106 103 // XXX these can probably be dropped: 107 104 105 // functions to support simultaneous multi-source fitting 106 bool psphotFitSet (pmSource *oneSrc, pmModel *oneModel, char *fitset, bool PSF); 107 108 # if (0) 109 110 pmHDU *pmHDUFromReadout (pmReadout *readout); 111 bool psRegionIsNaN (psRegion region); 112 bool pmReadoutSetWeights(pmReadout *readout); 113 114 // bicubic interpolation 115 psPolynomial2D *psImageBicubeFit (psImage *image, int x, int y); 116 psPlane psImageBicubeMin (psPolynomial2D *poly); 117 118 bool psImageJpegColormap (char *name); 119 bool psImageJpeg (psImage *image, char *filename, float zero, float scale); 120 121 bool pmSourceFitSet (pmSource *source, psArray *modelSet, const bool PSF); 122 psF32 pmModelFitSet (psVector *deriv, const psVector *params, const psVector *x); 123 bool pmModelFitSetInit (pmModelType type); 124 void pmModelFitSetClear (void); 125 108 126 // optional mode for clip fit? 109 127 psPolynomial4D *psVectorChiClipFitPolynomial4D( … … 119 137 const psVector *t); 120 138 121 // functions to support simultaneous multi-source fitting 122 bool psphotFitSet (pmSource *oneSrc, pmModel *oneModel, char *fitset, bool PSF); 123 bool pmSourceFitSet (pmSource *source, psArray *modelSet, const bool PSF); 124 psF32 pmModelFitSet (psVector *deriv, const psVector *params, const psVector *x); 125 bool pmModelFitSetInit (pmModelType type); 126 void pmModelFitSetClear (void); 139 # endif 127 140 128 // bicubic interpolation 129 psPolynomial2D *psImageBicubeFit (psImage *image, int x, int y);130 psPlane psImageBicubeMin (psPolynomial2D *poly);141 # if (0) 142 bool psphotSamplePSFs (pmPSF *psf, psImage *image, char *output); 143 int psphotSaveImage (psMetadata *header, psImage *image, char *filename); 131 144 132 bool psImageJpegColormap (char *name); 133 bool psImageJpeg (psImage *image, char *filename, float zero, float scale); 145 bool pmSourcesWriteSX (psArray *sources, char *filename); 146 bool pmSourcesWriteOBJ (psArray *sources, char *filename); 147 bool pmSourcesWriteCMP (psArray *sources, char *filename, psMetadata *header); 148 bool pmSourcesWriteCMF (psArray *sources, char *filename, psMetadata *header); 149 bool pmSourcesWriteText (psArray *sources, char *filename); 150 bool pmPeaksWriteText (psArray *sources, char *filename); 134 151 152 bool pmModelWritePSFs (psArray *sources, char *filename); 153 bool pmModelWriteEXTs (psArray *sources, char *filename); 154 bool pmModelWriteNULLs (psArray *sources, char *filename); 155 bool pmMomentsWriteText (psArray *sources, char *filename); 156 # endif 135 157 136 158 // XXX deprecate … … 142 164 // float pmSourceCrossWeight (pmSource *Mi, pmSource *Mj); 143 165 // psArray *pmSourceContour_EAM (psImage *image, int x, int y, float threshold); 166 // psStats *psphotImageStats (pmReadout *readout, psMetadata *config); 167 // psPolynomial2D *psphotImageBackground (pmReadout *readout, psMetadata *config, psStats *sky); 168 // void psphotOutput (pmReadout *readout, psMetadata *arguments); 169 170 // void psphotOutputPrep (ppFile *file, ppConfig *config); 171 // void psphotOutputCleanup (void); 172 173 // bool ppImageLoadPixels (ppFile *input, psDB *db, int chipNum, int cellNum); 174 -
trunk/psphot/src/psphotApResid.c
r6495 r6715 30 30 Npsf = 0; 31 31 32 // select all good PM_SOURCE_ STAR entries32 // select all good PM_SOURCE_TYPE_STAR entries 33 33 for (int i = 0; i < sources->n; i++) { 34 34 source = sources->data[i]; 35 35 36 if (source->type != PM_SOURCE_ STAR) continue;37 if (source->mode & PM_SOURCE_ SATSTAR) continue;38 if (source->mode & PM_SOURCE_ BLEND) continue;39 if (source->mode & PM_SOURCE_ FAIL) continue;40 if (source->mode & PM_SOURCE_ POOR) continue;36 if (source->type != PM_SOURCE_TYPE_STAR) continue; 37 if (source->mode & PM_SOURCE_MODE_SATSTAR) continue; 38 if (source->mode & PM_SOURCE_MODE_BLEND) continue; 39 if (source->mode & PM_SOURCE_MODE_FAIL) continue; 40 if (source->mode & PM_SOURCE_MODE_POOR) continue; 41 41 42 42 // XXX tune independently? … … 51 51 yPos->data.F64[Npsf] = model->params->data.F32[3]; 52 52 53 flux->data.F64[Npsf] = pow(10.0, -0.4*source-> fitMag);53 flux->data.F64[Npsf] = pow(10.0, -0.4*source->psfMag); 54 54 r2rflux->data.F64[Npsf] = PS_SQR(model->radius) / flux->data.F64[Npsf]; 55 55 56 apResid->data.F64[Npsf] = source->apMag + pmGrowthCurveCorrect (psf->growth, model->radius) - source-> fitMag;56 apResid->data.F64[Npsf] = source->apMag + pmGrowthCurveCorrect (psf->growth, model->radius) - source->psfMag; 57 57 58 58 // XXX sanity clip? -
trunk/psphot/src/psphotApplyPSF.c
r6056 r6715 20 20 21 21 // skip non-astronomical objects (very likely defects) 22 if (source->mode & PM_SOURCE_ BLEND) continue;23 if (source->type == PM_SOURCE_ DEFECT) continue;24 if (source->type == PM_SOURCE_ SATURATED) continue;22 if (source->mode & PM_SOURCE_MODE_BLEND) continue; 23 if (source->type == PM_SOURCE_TYPE_DEFECT) continue; 24 if (source->type == PM_SOURCE_TYPE_SATURATED) continue; 25 25 26 26 // use the source moments, etc to guess basic model parameters … … 49 49 // check if model fit is acceptable 50 50 if (psphotEvalPSF (source, source->modelPSF)) { 51 pm SourceSubModel(source->pixels, source->mask, source->modelPSF, false, false);52 source->mode |= PM_SOURCE_ SUBTRACTED;53 source->mode &= ~PM_SOURCE_ TEMPSUB;51 pmModelSub (source->pixels, source->mask, source->modelPSF, false, false); 52 source->mode |= PM_SOURCE_MODE_SUBTRACTED; 53 source->mode &= ~PM_SOURCE_MODE_TEMPSUB; 54 54 Nsub ++; 55 55 } -
trunk/psphot/src/psphotArguments.c
r6571 r6715 2 2 # include <glob.h> 3 3 4 static void usage (void); 4 static void usage (void) { 5 fprintf (stderr, "USAGE: psphot [-file image(s)] [-list imagelist] (output)\n"); 6 exit (2); 7 } 5 8 6 9 pmConfig *psphotArguments (int *argc, char **argv) { … … 99 102 100 103 // load config data from default locations 101 pmConfig *config = pmConfigRead(argc, argv , PSPHOT_RECIPE);104 pmConfig *config = pmConfigRead(argc, argv); 102 105 103 106 // Storage for other command-line arguments … … 105 108 106 109 // save these recipe options until we have loaded the options 107 psMetadataAddPtr (config->arguments, PS_LIST_TAIL, "PSPHOT.OPTIONS", PS_META_REPLACE, "", options); 110 psMetadataAddPtr (config->arguments, PS_LIST_TAIL, "PSPHOT.OPTIONS", PS_DATA_METADATA, "", options); 111 psFree (options); 108 112 109 113 // chip selection is used to limit chips to be processed 110 114 if ((N = psArgumentGet (*argc, argv, "-chip"))) { 111 115 psArgumentRemove (N, argc, argv); 112 psMetadataAddStr (config->arguments, PS_LIST_TAIL, "CHIP_SELECTION", PS_ META_REPLACE, "", argv[N]);116 psMetadataAddStr (config->arguments, PS_LIST_TAIL, "CHIP_SELECTION", PS_DATA_STRING, "", psStringCopy(argv[N])); 113 117 psArgumentRemove (N, argc, argv); 114 118 } … … 116 120 // we load all input files onto a psArray, to be parsed later 117 121 psArray *input = psArrayAlloc (16); 122 input->n = 0; 118 123 119 124 // load the list of filenames the supplied file (may be a glob: "file*.fits") … … 126 131 char *filename = psStringCopy (globList.gl_pathv[i]); 127 132 psArrayAdd (input, 16, filename); 133 psFree (filename); 128 134 } 129 135 psArgumentRemove (N, argc, argv); … … 150 156 filename = psStringCopy (word); 151 157 psArrayAdd (input, 16, filename); 158 psFree (filename); 152 159 break; 153 160 default: … … 162 169 163 170 // input list gets places as an array on the config->arguements list 164 psMetadataAddPtr (config->arguments, PS_LIST_TAIL, "INPUT", PS_META_REPLACE, "", input); 171 psMetadataAddPtr (config->arguments, PS_LIST_TAIL, "INPUT", PS_DATA_ARRAY, "", input); 172 psFree (input); 165 173 166 174 if (*argc != 2) usage (); 167 175 168 // input and output positions arefixed169 psMetadataAddStr (config->arguments, PS_LIST_TAIL, "OUTPUT", PS_META_REPLACE, "", argv[1]);176 // output position is fixed 177 psMetadataAddStr (config->arguments, PS_LIST_TAIL, "OUTPUT", 0, "", argv[1]); 170 178 171 179 psTrace(__func__, 1, "Done with psphotArguments...\n"); 172 180 return (config); 173 181 } 174 175 static void usage (void) {176 fprintf (stderr, "USAGE: psphot [-file image(s)] [-list imagelist] (output)\n");177 exit (2);178 } -
trunk/psphot/src/psphotBasicDeblend.c
r6481 r6715 37 37 source = sources->data[N]; 38 38 39 if (source->mode & PM_SOURCE_ BLEND) continue;39 if (source->mode & PM_SOURCE_MODE_BLEND) continue; 40 40 41 41 // temporary array for overlapping objects we find … … 89 89 90 90 // generate a basic contour (set of x,y coordinates at-or-below flux level) 91 psArray *contour = pmSourceContour _EAM(source->pixels, source->peak->x, source->peak->y, threshold);91 psArray *contour = pmSourceContour (source->pixels, source->peak->x, source->peak->y, threshold); 92 92 if (contour == NULL) { 93 93 psFree (overlap); … … 110 110 if (xv->data.F32[j+1] < testSource->peak->x) break; 111 111 112 testSource->mode |= PM_SOURCE_ BLEND;112 testSource->mode |= PM_SOURCE_MODE_BLEND; 113 113 114 114 // add this to the list of source->blends -
trunk/psphot/src/psphotBlendFit.c
r6495 r6715 2 2 3 3 // XXX I don't like this name 4 bool psphotBlendFit (pmReadout *readout, ps Metadata *config, psArray *sources, pmPSF *psf) {4 bool psphotBlendFit (pmReadout *readout, psArray *sources, psMetadata *config, pmPSF *psf) { 5 5 6 6 int Nfit = 0; … … 28 28 29 29 // skip non-astronomical objects (very likely defects) 30 if (source->mode & PM_SOURCE_ BLEND) continue;31 if (source->type == PM_SOURCE_ DEFECT) continue;32 if (source->type == PM_SOURCE_ SATURATED) continue;30 if (source->mode & PM_SOURCE_MODE_BLEND) continue; 31 if (source->type == PM_SOURCE_TYPE_DEFECT) continue; 32 if (source->type == PM_SOURCE_TYPE_SATURATED) continue; 33 33 34 34 // limit selection to some SN limit … … 45 45 46 46 // replace object in image 47 pm SourceAddModel(source->pixels, source->mask, source->modelPSF, false, false);47 pmModelAdd (source->pixels, source->mask, source->modelPSF, false, false); 48 48 Nfit ++; 49 49 … … 57 57 58 58 // re-subtract PSF for object, leave local sky 59 pm SourceSubModel(source->pixels, source->mask, source->modelPSF, false, false);60 source->mode |= PM_SOURCE_ SUBTRACTED;61 source->mode |= PM_SOURCE_ TEMPSUB;59 pmModelSub (source->pixels, source->mask, source->modelPSF, false, false); 60 source->mode |= PM_SOURCE_MODE_SUBTRACTED; 61 source->mode |= PM_SOURCE_MODE_TEMPSUB; 62 62 } 63 63 -
trunk/psphot/src/psphotChoosePSF.c
r6571 r6715 34 34 for (int i = 0; (i < sources->n) && (stars->n < NSTARS); i++) { 35 35 pmSource *source = sources->data[i]; 36 if (source->mode & PM_SOURCE_ PSFSTAR) psArrayAdd (stars, 200, source);36 if (source->mode & PM_SOURCE_MODE_PSFSTAR) psArrayAdd (stars, 200, source); 37 37 } 38 38 psLogMsg ("psphot.pspsf", 4, "selected candidate %d PSF objects\n", stars->n); … … 90 90 pmSource *source = try->sources->data[i]; 91 91 if (try->mask->data.U8[i] & PSFTRY_MASK_EXT_FAIL) { 92 source->mode &= ~PM_SOURCE_ PSFSTAR;92 source->mode &= ~PM_SOURCE_MODE_PSFSTAR; 93 93 } 94 94 } -
trunk/psphot/src/psphotCleanup.c
r6571 r6715 6 6 psMemCheckCorruption (true); 7 7 pmModelGroupCleanup (); 8 psphotOutputCleanup ();8 // psphotOutputCleanup (); 9 9 psTimeFinalize (); 10 10 pmConceptsDone (); 11 fprintf (stderr, "found %d leaks at %s\n", psMemCheckLeaks (0, NULL, NULL, false), "psphot");11 fprintf (stderr, "found %d leaks at %s\n", psMemCheckLeaks (0, NULL, stdout, false), "psphot"); 12 12 return; 13 13 } -
trunk/psphot/src/psphotEnsemblePSF.c
r6571 r6715 44 44 // skip non-astronomical objects (very likely defects) 45 45 // XXX EAM : should we try these anyway? 46 if (inSource->type == PM_SOURCE_ DEFECT) continue;47 if (inSource->type == PM_SOURCE_ SATURATED) continue;46 if (inSource->type == PM_SOURCE_TYPE_DEFECT) continue; 47 if (inSource->type == PM_SOURCE_TYPE_SATURATED) continue; 48 48 if (final) { 49 if (inSource->mode & PM_SOURCE_ SUBTRACTED) continue;49 if (inSource->mode & PM_SOURCE_MODE_SUBTRACTED) continue; 50 50 } else { 51 if (inSource->mode & PM_SOURCE_ BLEND) continue;51 if (inSource->mode & PM_SOURCE_MODE_BLEND) continue; 52 52 } 53 53 … … 61 61 // really saturated stars should be re-measured for a better centroid 62 62 // XXX EAM : move this to a 'clear satstar function' 63 if (inSource->mode & PM_SOURCE_ SATSTAR) {63 if (inSource->mode & PM_SOURCE_MODE_SATSTAR) { 64 64 status = pmSourceMoments (inSource, INNER_RADIUS); 65 65 } … … 68 68 // use the source moments, etc to guess basic model parameters 69 69 pmModel *modelEXT = pmSourceModelGuess (inSource, psf->type); 70 if (inSource->mode & PM_SOURCE_ SATSTAR) {70 if (inSource->mode & PM_SOURCE_MODE_SATSTAR) { 71 71 modelEXT->params->data.F32[2] = inSource->moments->x; 72 72 modelEXT->params->data.F32[3] = inSource->moments->y; … … 118 118 // fill in the model pixel values 119 119 psImageInit (flux, 0.0); 120 psImageKeepCircle (mask, x, y, model->radius, "OR", P SPHOT_MASK_MARKED);121 pm SourceAddModel(flux, mask, model, false, false);120 psImageKeepCircle (mask, x, y, model->radius, "OR", PM_SOURCE_MASK_MARKED); 121 pmModelAdd (flux, mask, model, false, false); 122 122 123 123 // calculate nDOF (nPix - 1) 124 // int Nmaskpix = psImageCountPixelMask (mask, allArray, P SPHOT_MASK_SATURATED);124 // int Nmaskpix = psImageCountPixelMask (mask, allArray, PM_SOURCE_MASK_SATURATED); 125 125 // model->nDOF = mask->numCols*mask->numRows - Nmaskpix - 1; 126 126 … … 195 195 196 196 // subtract object 197 pm SourceSubModel(Fi->pixels, Fi->mask, Fi->modelPSF, false, false);198 Fi->mode |= PM_SOURCE_ SUBTRACTED;199 if (!final) Fi->mode |= PM_SOURCE_ TEMPSUB;197 pmModelSub (Fi->pixels, Fi->mask, Fi->modelPSF, false, false); 198 Fi->mode |= PM_SOURCE_MODE_SUBTRACTED; 199 if (!final) Fi->mode |= PM_SOURCE_MODE_TEMPSUB; 200 200 } 201 201 … … 209 209 y = model->params->data.F32[3]; 210 210 211 psImageKeepCircle (Fi->mask, x, y, model->radius, "OR", P SPHOT_MASK_MARKED);211 psImageKeepCircle (Fi->mask, x, y, model->radius, "OR", PM_SOURCE_MASK_MARKED); 212 212 pmSourceChisq (model, Fi->pixels, Fi->mask, Fi->weight); 213 psImageKeepCircle (Fi->mask, x, y, model->radius, "AND", ~P SPHOT_MASK_MARKED);213 psImageKeepCircle (Fi->mask, x, y, model->radius, "AND", ~PM_SOURCE_MASK_MARKED); 214 214 } 215 215 -
trunk/psphot/src/psphotEvalFLT.c
r5993 r6715 7 7 // do we actually have a valid EXT model? 8 8 if (model == NULL) { 9 source->mode &= ~PM_SOURCE_ FITTED;9 source->mode &= ~PM_SOURCE_MODE_FITTED; 10 10 return false; 11 11 } … … 16 16 break; 17 17 case PM_MODEL_UNTRIED: 18 source->mode &= ~PM_SOURCE_ FITTED;18 source->mode &= ~PM_SOURCE_MODE_FITTED; 19 19 return false; 20 20 case PM_MODEL_BADARGS: … … 23 23 default: 24 24 psLogMsg ("psphot", 5, "EXT fail fit\n"); 25 source->mode |= PM_SOURCE_ FAIL;25 source->mode |= PM_SOURCE_MODE_FAIL; 26 26 return false; 27 27 } 28 28 29 29 // unless we prove otherwise, this object is extended 30 source->type = PM_SOURCE_ EXTENDED;30 source->type = PM_SOURCE_TYPE_EXTENDED; 31 31 32 32 // the following source->mode information pertains to modelEXT: 33 source->mode |= PM_SOURCE_ EXTMODEL;33 source->mode |= PM_SOURCE_MODE_EXTMODEL; 34 34 35 35 // if the object has a fitted peak below 0, the fit did not converge cleanly 36 36 if (model->params->data.F32[1] <= 0) { 37 source->mode |= PM_SOURCE_ FAIL;37 source->mode |= PM_SOURCE_MODE_FAIL; 38 38 return false; 39 39 } … … 44 44 // poor-quality fit; only keep if nothing else works... 45 45 psLogMsg ("psphot", 5, "EXT poor fit\n"); 46 source->mode |= PM_SOURCE_ POOR;46 source->mode |= PM_SOURCE_MODE_POOR; 47 47 return false; 48 48 } -
trunk/psphot/src/psphotEvalPSF.c
r5993 r6715 54 54 // do we actually have a valid PSF model? 55 55 if (model == NULL) { 56 source->mode &= ~PM_SOURCE_ FITTED;56 source->mode &= ~PM_SOURCE_MODE_FITTED; 57 57 return false; 58 58 } … … 63 63 break; 64 64 case PM_MODEL_UNTRIED: 65 source->mode &= ~PM_SOURCE_ FITTED;65 source->mode &= ~PM_SOURCE_MODE_FITTED; 66 66 return false; 67 67 case PM_MODEL_BADARGS: … … 69 69 case PM_MODEL_OFFIMAGE: 70 70 default: 71 source->mode |= PM_SOURCE_ FAIL;71 source->mode |= PM_SOURCE_MODE_FAIL; 72 72 return false; 73 73 } 74 74 75 75 // unless we prove otherwise, this object is a star. 76 source->type = PM_SOURCE_ STAR;76 source->type = PM_SOURCE_TYPE_STAR; 77 77 78 78 // the following source->mode information pertains to modelPSF: 79 source->mode |= PM_SOURCE_ PSFMODEL;79 source->mode |= PM_SOURCE_MODE_PSFMODEL; 80 80 81 81 // if the object has fitted peak above saturation, label as SATSTAR … … 84 84 // XXX no extended object can saturate and stay extended... 85 85 if (model->params->data.F32[1] >= SATURATION) { 86 if (source->mode & PM_SOURCE_ PSFSTAR) {86 if (source->mode & PM_SOURCE_MODE_PSFSTAR) { 87 87 psLogMsg ("psphot", 5, "PSFSTAR marked SATSTAR\n"); 88 88 } 89 source->mode |= PM_SOURCE_ SATSTAR;89 source->mode |= PM_SOURCE_MODE_SATSTAR; 90 90 return true; 91 91 } … … 93 93 // if the object has a fitted peak below 0, the fit did not converge cleanly 94 94 if (model->params->data.F32[1] <= 0) { 95 source->mode |= PM_SOURCE_ FAIL;95 source->mode |= PM_SOURCE_MODE_FAIL; 96 96 return false; 97 97 } … … 99 99 // if the source was predicted to be a SATSTAR, but it fitted below saturation, 100 100 // make a note to the user 101 if (source->mode & PM_SOURCE_ SATSTAR) {101 if (source->mode & PM_SOURCE_MODE_SATSTAR) { 102 102 psLogMsg ("psphot", 5, "SATSTAR marked normal (fitted peak below saturation)\n"); 103 source->mode &= ~PM_SOURCE_ SATSTAR;103 source->mode &= ~PM_SOURCE_MODE_SATSTAR; 104 104 } 105 105 … … 115 115 nSy = dSY / hypot (MIN_DS, 1 / (SY * SN)); 116 116 117 // assign PM_SOURCE_ GOODSTAR to bright objects within PSF region of dparams[]117 // assign PM_SOURCE_MODE_GOODSTAR to bright objects within PSF region of dparams[] 118 118 keep = TRUE; 119 119 keep &= (fabs(nSx) < PSF_SHAPE_NSIGMA); … … 124 124 125 125 // this source is not a star, warn if it was a PSFSTAR 126 if (source->mode & PM_SOURCE_ PSFSTAR) {126 if (source->mode & PM_SOURCE_MODE_PSFSTAR) { 127 127 psLogMsg ("psphot", 5, "PSFSTAR demoted based on fit quality (%f, %f : %f %f %f %f)\n", 128 128 model->params->data.F32[2], model->params->data.F32[3], nSx, nSy, SN, Chi); … … 134 134 // object appears to be small, suspected defect 135 135 if ((nSx <= -PSF_SHAPE_NSIGMA) || (nSy <= -PSF_SHAPE_NSIGMA)) { 136 source->type = PM_SOURCE_ DEFECT;136 source->type = PM_SOURCE_TYPE_DEFECT; 137 137 return false; 138 138 } … … 140 140 // object appears to be large, suspected extended source 141 141 if ((nSx >= PSF_SHAPE_NSIGMA) || (nSy >= PSF_SHAPE_NSIGMA)) { 142 source->type = PM_SOURCE_ EXTENDED;142 source->type = PM_SOURCE_TYPE_EXTENDED; 143 143 return false; 144 144 } 145 145 146 146 // poor-quality fit; only keep if nothing else works... 147 source->mode |= PM_SOURCE_ POOR;147 source->mode |= PM_SOURCE_MODE_POOR; 148 148 return false; 149 149 } … … 155 155 // do we actually have a valid PSF model? 156 156 if (model == NULL) { 157 source->mode &= ~PM_SOURCE_ FITTED;157 source->mode &= ~PM_SOURCE_MODE_FITTED; 158 158 return false; 159 159 } … … 164 164 break; 165 165 case PM_MODEL_UNTRIED: 166 source->mode &= ~PM_SOURCE_ FITTED;166 source->mode &= ~PM_SOURCE_MODE_FITTED; 167 167 return false; 168 168 case PM_MODEL_BADARGS: … … 170 170 case PM_MODEL_OFFIMAGE: 171 171 default: 172 source->mode |= PM_SOURCE_ FAIL;172 source->mode |= PM_SOURCE_MODE_FAIL; 173 173 return false; 174 174 } 175 175 176 176 // unless we prove otherwise, this object is a star. 177 source->type = PM_SOURCE_ STAR;177 source->type = PM_SOURCE_TYPE_STAR; 178 178 179 179 // the following source->mode information pertains to modelPSF: 180 source->mode |= PM_SOURCE_ PSFMODEL;180 source->mode |= PM_SOURCE_MODE_PSFMODEL; 181 181 182 182 // if the object has fitted peak above saturation, label as SATSTAR … … 185 185 // XXX no extended object can saturate and stay extended... 186 186 if (model->params->data.F32[1] >= SATURATION) { 187 if (source->mode & PM_SOURCE_ PSFSTAR) {187 if (source->mode & PM_SOURCE_MODE_PSFSTAR) { 188 188 psLogMsg ("psphot", 5, "PSFSTAR marked SATSTAR\n"); 189 189 } 190 source->mode |= PM_SOURCE_ SATSTAR;190 source->mode |= PM_SOURCE_MODE_SATSTAR; 191 191 return true; 192 192 } … … 194 194 // if the object has a fitted peak below 0, the fit did not converge cleanly 195 195 if (model->params->data.F32[1] <= 0) { 196 source->mode |= PM_SOURCE_ FAIL;196 source->mode |= PM_SOURCE_MODE_FAIL; 197 197 return false; 198 198 } … … 200 200 // if the source was predicted to be a SATSTAR, but it fitted below saturation, 201 201 // make a note to the user 202 if (source->mode & PM_SOURCE_ SATSTAR) {202 if (source->mode & PM_SOURCE_MODE_SATSTAR) { 203 203 psLogMsg ("psphot", 5, "SATSTAR marked normal (fitted peak below saturation)\n"); 204 source->mode &= ~PM_SOURCE_ SATSTAR;204 source->mode &= ~PM_SOURCE_MODE_SATSTAR; 205 205 } 206 206 return true; -
trunk/psphot/src/psphotFitGalaxies.c
r6379 r6715 23 23 24 24 // only fit suspected extended sources 25 if (source->type != PM_SOURCE_ EXTENDED) continue;26 if (source->mode & PM_SOURCE_ BLEND) continue;25 if (source->type != PM_SOURCE_TYPE_EXTENDED) continue; 26 if (source->mode & PM_SOURCE_MODE_BLEND) continue; 27 27 28 28 // skip possible extended sources below fit threshold … … 32 32 status = pmSourceMoments (source, EXT_MOMENTS_RAD); 33 33 if (!status) { 34 source->mode |= PM_SOURCE_ FAIL; // better choice?34 source->mode |= PM_SOURCE_MODE_FAIL; // better choice? 35 35 continue; 36 36 } … … 46 46 47 47 // fit EXT (not PSF) model (set/unset the pixel mask) 48 psImageKeepCircle (source->mask, x, y, model->radius, "OR", P SPHOT_MASK_MARKED);48 psImageKeepCircle (source->mask, x, y, model->radius, "OR", PM_SOURCE_MASK_MARKED); 49 49 pmSourceFitModel (source, model, false); 50 psImageKeepCircle (source->mask, x, y, model->radius, "AND", ~P SPHOT_MASK_MARKED);50 psImageKeepCircle (source->mask, x, y, model->radius, "AND", ~PM_SOURCE_MASK_MARKED); 51 51 52 52 Niter += model[0].nIter; … … 55 55 // check if model fit is acceptable 56 56 if (pmModelFitStatus (model)) { 57 pm SourceSubModel(source->pixels, source->mask, model, false, false);58 source->mode |= PM_SOURCE_ SUBTRACTED;59 source->mode &= ~PM_SOURCE_ TEMPSUB;57 pmModelSub (source->pixels, source->mask, model, false, false); 58 source->mode |= PM_SOURCE_MODE_SUBTRACTED; 59 source->mode &= ~PM_SOURCE_MODE_TEMPSUB; 60 60 Nsub ++; 61 61 } -
trunk/psphot/src/psphotFitSet.c
r6571 r6715 32 32 for (int i = 0; i < modelSet->n; i++) { 33 33 pmModel *model = modelSet->data[i]; 34 pm SourceSubModel(source->pixels, source->mask, model, false, false);34 pmModelSub (source->pixels, source->mask, model, false, false); 35 35 36 36 fprintf (stderr, "output parameters (obj %d):\n", i); -
trunk/psphot/src/psphotFullFit.c
r6379 r6715 32 32 // skip non-astronomical objects (very likely defects) 33 33 // XXX EAM : should we try these anyway? 34 if (source->mode & PM_SOURCE_ BLEND) continue;35 if (source->type == PM_SOURCE_ DEFECT) continue;36 if (source->type == PM_SOURCE_ SATURATED) continue;34 if (source->mode & PM_SOURCE_MODE_BLEND) continue; 35 if (source->type == PM_SOURCE_TYPE_DEFECT) continue; 36 if (source->type == PM_SOURCE_TYPE_SATURATED) continue; 37 37 38 38 // save the PSF model from the Ensemble fit … … 43 43 44 44 // replace object in image 45 pm SourceAddModel(source->pixels, source->mask, modelPSF, false, false);46 source->mode &= ~PM_SOURCE_ SUBTRACTED;45 pmModelAdd (source->pixels, source->mask, modelPSF, false, false); 46 source->mode &= ~PM_SOURCE_MODE_SUBTRACTED; 47 47 48 48 psphotCheckRadiusPSF (readout, source, modelPSF); … … 52 52 53 53 // fit PSF model (set/unset the pixel mask) 54 psImageKeepCircle (source->mask, x, y, modelPSF->radius, "OR", P SPHOT_MASK_MARKED);54 psImageKeepCircle (source->mask, x, y, modelPSF->radius, "OR", PM_SOURCE_MASK_MARKED); 55 55 pmSourceFitModel (source, modelPSF, true); 56 psImageKeepCircle (source->mask, x, y, modelPSF->radius, "AND", ~P SPHOT_MASK_MARKED);56 psImageKeepCircle (source->mask, x, y, modelPSF->radius, "AND", ~PM_SOURCE_MASK_MARKED); 57 57 58 58 // track model evaluations … … 62 62 // does the PSF model succeed? 63 63 if (psphotEvalPSF (source, source->modelPSF)) { 64 pm SourceSubModel(source->pixels, source->mask, source->modelPSF, false, false);65 source->mode |= PM_SOURCE_ SUBTRACTED;66 source->mode &= ~PM_SOURCE_ TEMPSUB;64 pmModelSub (source->pixels, source->mask, source->modelPSF, false, false); 65 source->mode |= PM_SOURCE_MODE_SUBTRACTED; 66 source->mode &= ~PM_SOURCE_MODE_TEMPSUB; 67 67 psFree (LIN); 68 68 Nsub ++; … … 82 82 83 83 // skip the source if we don't think it is extended 84 if (source->type != PM_SOURCE_ EXTENDED) goto subLINEAR;84 if (source->type != PM_SOURCE_TYPE_EXTENDED) goto subLINEAR; 85 85 if (source->moments->SN < EXT_MIN_SN) goto subLINEAR; 86 86 … … 101 101 102 102 // fit EXT (not PSF) model (set/unset the pixel mask) 103 psImageKeepCircle (source->mask, x, y, modelEXT->radius, "OR", P SPHOT_MASK_MARKED);103 psImageKeepCircle (source->mask, x, y, modelEXT->radius, "OR", PM_SOURCE_MASK_MARKED); 104 104 pmSourceFitModel (source, modelEXT, false); 105 psImageKeepCircle (source->mask, x, y, modelEXT->radius, "AND", ~P SPHOT_MASK_MARKED);105 psImageKeepCircle (source->mask, x, y, modelEXT->radius, "AND", ~PM_SOURCE_MASK_MARKED); 106 106 107 107 // track model evaluations … … 111 111 // does the EXT model succeed? 112 112 if (psphotEvalEXT (source, source->modelEXT)) { 113 pm SourceSubModel(source->pixels, source->mask, source->modelEXT, false, false);114 source->mode |= PM_SOURCE_ SUBTRACTED;115 source->mode &= ~PM_SOURCE_ TEMPSUB;113 pmModelSub (source->pixels, source->mask, source->modelEXT, false, false); 114 source->mode |= PM_SOURCE_MODE_SUBTRACTED; 115 source->mode &= ~PM_SOURCE_MODE_TEMPSUB; 116 116 psFree (LIN); 117 117 Nsub ++; … … 123 123 psFree (source->modelPSF); 124 124 source->modelPSF = LIN; 125 pm SourceSubModel(source->pixels, source->mask, source->modelPSF, false, false);126 source->mode |= PM_SOURCE_ SUBTRACTED;127 source->mode |= PM_SOURCE_ TEMPSUB;125 pmModelSub (source->pixels, source->mask, source->modelPSF, false, false); 126 source->mode |= PM_SOURCE_MODE_SUBTRACTED; 127 source->mode |= PM_SOURCE_MODE_TEMPSUB; 128 128 Nsub ++; 129 129 } -
trunk/psphot/src/psphotGrowthCurve.c
r6379 r6715 16 16 17 17 // use center of the image 18 xc = 0.5* (readout->image->numCols + readout->image->col0);19 yc = 0.5* (readout->image->numRows + readout->image->row0);18 xc = 0.5*readout->image->numCols + readout->image->col0; 19 yc = 0.5*readout->image->numRows + readout->image->row0; 20 20 dx = psf->growth->maxRadius + 1; 21 21 dy = psf->growth->maxRadius + 1; … … 45 45 radius = psf->growth->radius->data.F32[i]; 46 46 47 psImageKeepCircle (mask, xc, yc, radius, "OR", P SPHOT_MASK_MARKED);47 psImageKeepCircle (mask, xc, yc, radius, "OR", PM_SOURCE_MASK_MARKED); 48 48 49 pm SourceAddModel(image, mask, model, false, false);49 pmModelAdd (image, mask, model, false, false); 50 50 51 pmSourcePhotometry (&fitMag,&apMag, model, image, mask);51 pmSourcePhotometryAper (&apMag, model, image, mask); 52 52 53 psImageKeepCircle (mask, xc, yc, radius, "AND", ~P SPHOT_MASK_MARKED);53 psImageKeepCircle (mask, xc, yc, radius, "AND", ~PM_SOURCE_MASK_MARKED); 54 54 55 55 psf->growth->apMag->data.F32[i] = apMag; 56 56 } 57 pmSourcePhotometryModel (&fitMag, model); 57 58 psf->growth->fitMag = fitMag; 58 59 -
trunk/psphot/src/psphotImageLoop.c
r6522 r6715 1 1 # include "psphot.h" 2 2 3 bool psphotImageLoop (psphotData *data, ppConfig *config) { 3 // XXX where do we load optional mask and weight input images? 4 4 5 pmFPA *fpa = data->input->fpa; 5 bool psphotImageLoop (pmConfig *config) { 6 6 7 psphotDataIO (data, config, -1, -1); 7 bool status; 8 pmChip *chip; 9 pmCell *cell; 10 pmReadout *readout; 8 11 9 for (int i = 0; i < fpa->chips->n; i++) { 10 pmChip *chip = fpa->chips->data[i]; // Chip of interest in input image 12 pmFPAfile *input = psMetadataLookupPtr (&status, config->files, "PSPHOT.INPUT"); 13 if (!status) { 14 psErrorStackPrint(stderr, "Can't find input data!\n"); 15 exit(EXIT_FAILURE); 16 } 11 17 12 psLogMsg ("psphot", 4, "Chip %d: %x %x\n", i, chip->exists, chip->process); 18 pmFPAview *view = pmFPAviewAlloc (0); 19 20 // files associated with the science image 21 pmFPAfileIOChecks (config->files, view, PM_FPA_BEFORE); 22 23 while ((chip = pmFPAviewNextChip (view, input->fpa, 1)) != NULL) { 24 psLogMsg ("psphot", 4, "Chip %d: %x %x\n", view->chip, chip->file_exists, chip->process); 13 25 if (! chip->process) { continue; } 26 if (! chip->file_exists) { continue; } 27 pmFPAfileIOChecks (config->files, view, PM_FPA_BEFORE); 14 28 15 psphotDataIO (data, config, i, -1); 16 17 for (int j = 0; j < chip->cells->n; j++) { 18 pmCell *cell = chip->cells->data[j]; // Cell of interest in input image 19 20 psLogMsg ("psphot", 4, "Cell %d: %x %x\n", j, cell->exists, cell->process); 29 while ((cell = pmFPAviewNextCell (view, input->fpa, 1)) != NULL) { 30 continue; 31 psLogMsg ("psphot", 4, "Cell %d: %x %x\n", view->cell, cell->file_exists, cell->process); 21 32 if (! cell->process) { continue; } 22 23 psphotDataIO (data, config, i, j); 24 25 // XXX optional mask and weight input image should be loaded here? 26 // this sets the weight map and basic mask applying CELL.BAD and CELL.SATURATION 27 pmCellSetWeights(cell); 28 29 // I have a valid mask, now mask in the analysis region of interest 30 pmCellSetMask (cell, config->recipe); 33 if (! cell->file_exists) { continue; } 34 pmFPAfileIOChecks (config->files, view, PM_FPA_BEFORE); 31 35 32 36 // process each of the readouts 33 for (int k = 0; k < cell->readouts->n; k++) { 34 pmReadout *readout = cell->readouts->data[k]; // Readout of interest in input image 37 while ((readout = pmFPAviewNextReadout (view, input->fpa, 1)) != NULL) { 38 pmFPAfileIOChecks (config->files, view, PM_FPA_BEFORE); 39 if (! readout->data_exists) { continue; } 35 40 36 41 // run a single-model test if desired 37 psphotModelTest (readout, config->arguments, config->recipe); 42 // XXX move this to psphotReadout?? 43 // psphotModelTest (readout, recipe); 38 44 39 45 // run the actual photometry analysis 40 psphotReadout ( readout, data, config);46 psphotReadout (config, view); 41 47 42 // XXX what do we do if we have multiple readouts? 43 psphotOutput (readout, data, config); 48 pmFPAfileIOChecks (config->files, view, PM_FPA_AFTER); 49 50 // write out the desired output dataset(s) 51 // psphotOutput (view, recipe); 44 52 } 45 } 53 pmFPAfileIOChecks (config->files, view, PM_FPA_AFTER); 54 } 55 pmFPAfileIOChecks (config->files, view, PM_FPA_AFTER); 46 56 } 47 psphotOutputClose (data); 57 pmFPAfileIOChecks (config->files, view, PM_FPA_AFTER); 58 59 psFree (view); 48 60 return true; 49 61 } 62 63 // I/O files related to psphot: 64 // PSPHOT.INPUT : input image file(s) 65 // PSPHOT.RESID : residual image 66 // PSPHOT.OUTPUT : output object tables (object) 67 68 // PSPHOT.BACKSUB : background subtracted image 69 // PSPHOT.BACKGND : background model (full-scale image?) 70 // PSPHOT.BACKMDL : background model (binned image?) 71 // PSPHOT.PSF : sample PSF images 72 73 74 /** 75 76 filename | pmFPAfile | pmFPA | pmFPAview 77 chip00.f | PSPHOT.IN | input | view 78 chip01.f | PSPHOT.IN | input | view 79 chip02.f | PSPHOT.IN | input | view 80 chip03.f | PSPHOT.IN | input | view 81 82 out00.f | PSPHOT.OUT | input | view 83 out01.f | PSPHOT.OUT | input | view 84 out02.f | PSPHOT.OUT | input | view 85 out03.f | PSPHOT.OUT | input | view 86 87 obj00.f | PSPHOT.OBJ | input | view 88 obj01.f | PSPHOT.OBJ | input | view 89 obj02.f | PSPHOT.OBJ | input | view 90 obj03.f | PSPHOT.OBJ | input | view 91 92 bin00.f | PSPHOT.BIN | binned | view 93 bin01.f | PSPHOT.BIN | binned | view 94 bin02.f | PSPHOT.BIN | binned | view 95 bin03.f | PSPHOT.BIN | binned | view 96 97 mosaic.f | PSPHOT.MOS | mosaic | view 98 99 **/ -
trunk/psphot/src/psphotImageMedian.c
r6571 r6715 11 11 // generate the median in NxN boxes, clipping heavily 12 12 // linear interpolation to generate full-scale model 13 psImage *psphotImageMedian (psMetadata*config, pmFPAview *view)13 bool psphotImageMedian (pmConfig *config, pmFPAview *view) 14 14 { 15 15 bool status; … … 21 21 // find the currently selected readout 22 22 psMetadata *recipe = psMetadataLookupPtr (&status, config->recipes, "PSPHOT"); 23 pmFPA *input= psMetadataLookupPtr (&status, config->files, "PSPHOT.INPUT");24 pmReadout *readout = pmFPAviewThisReadout (view, input );23 pmFPAfile *input = psMetadataLookupPtr (&status, config->files, "PSPHOT.INPUT"); 24 pmReadout *readout = pmFPAviewThisReadout (view, input->fpa); 25 25 26 26 psImage *image = readout->image; … … 28 28 29 29 rnd = psRandomAlloc (PS_RANDOM_TAUS, 0); 30 MAX_SAMPLE_PIXELS = psMetadataLookupF32 (&status, config, "IMSTATS_NPIX");30 MAX_SAMPLE_PIXELS = psMetadataLookupF32 (&status, recipe, "IMSTATS_NPIX"); 31 31 if (!status) MAX_SAMPLE_PIXELS = 1000; 32 32 … … 36 36 37 37 // scaling factor 38 int DX = psMetadataLookupS32 (&status, config, "BACKGROUND_XBIN");38 int DX = psMetadataLookupS32 (&status, recipe, "BACKGROUND_XBIN"); 39 39 if (!status) {DX = 64;} 40 int DY = psMetadataLookupS32 (&status, config, "BACKGROUND_YBIN");40 int DY = psMetadataLookupS32 (&status, recipe, "BACKGROUND_YBIN"); 41 41 if (!status) {DY = 64;} 42 42 … … 79 79 80 80 // select background pixels, from output background file, or create 81 background = pmFPAfileReadoutImage (config->files, view, "PSPHOT.BACKGND", Nx, Ny, PS_TYPE_F32);81 psImage *background = pmFPAfileReadoutImage (config->files, view, "PSPHOT.BACKGND", Nx, Ny, PS_TYPE_F32); 82 82 83 83 // XXX this code skips the initial pixels … … 212 212 213 213 // back-sub image pixels, from output background file (don't create if not requested) 214 backSub = pmFPAfileReadoutImage (config->files, view, "PSPHOT.BACKSUB", 0, 0, PS_TYPE_F32);214 psImage *backSub = pmFPAfileReadoutImage (config->files, view, "PSPHOT.BACKSUB", 0, 0, PS_TYPE_F32); 215 215 216 216 // subtract the background model -
trunk/psphot/src/psphotMagnitudes.c
r6571 r6715 1 1 # include "psphot.h" 2 2 3 bool psphotMagnitudes (ps Metadata *config, psArray *sources, pmPSF *psf) {3 bool psphotMagnitudes (psArray *sources, psMetadata *config, pmPSF *psf) { 4 4 5 5 bool status; -
trunk/psphot/src/psphotModelTest.c
r6571 r6715 84 84 pmSource *source = pmSourceAlloc(); 85 85 source->peak = pmPeakAlloc (xObj, yObj, 0, 0); 86 p sphotDefinePixels (source, readout, xObj, yObj, OUTER);86 pmSourceDefinePixels (source, readout, xObj, yObj, OUTER); 87 87 88 88 // find the local sky … … 170 170 171 171 // subtract object, leave local sky 172 pm SourceSubModel(source->pixels, source->mask, model, false, false);172 pmModelSub (source->pixels, source->mask, model, false, false); 173 173 174 174 fprintf (stderr, "output parameters: \n"); -
trunk/psphot/src/psphotOutput.c
r6571 r6715 1 1 # include "psphot.h" 2 2 3 # if (0) 3 4 // output functions: we have several fixed modes (sx, obj, cmp) 4 5 void psphotOutput (pmReadout *readout, psMetadata *arguments) { … … 21 22 } 22 23 23 int psphotSaveImage (psMetadata *header, psImage *image, char *filename) {24 25 psFits *fits = psFitsOpen (filename, "w");26 psFitsWriteImage (fits, NULL, image, 0);27 psFitsClose (fits);28 return (TRUE);29 }30 31 24 psImage *pmModelPSFatXY (psImage *image, pmModel *modelEXT, pmPSF *psf, int x, int y, int dx, int dy) { 32 25 … … 38 31 modelEXT->params->data.F32[3] = y; 39 32 pmModel *modelPSF = pmModelFromPSF (modelEXT, psf); 40 pm SourceAddModel(sample, NULL, modelPSF, false, false);33 pmModelAdd (sample, NULL, modelPSF, false, false); 41 34 psFree (modelPSF); 42 35 return (sample); … … 69 62 psFitsWriteImage (fits, NULL, sample, 0); 70 63 64 psFitsClose (fits); 65 return (TRUE); 66 } 67 # endif 68 69 int psphotSaveImage (psMetadata *header, psImage *image, char *filename) { 70 71 psFits *fits = psFitsOpen (filename, "w"); 72 psFitsWriteImage (fits, NULL, image, 0, NULL); 71 73 psFitsClose (fits); 72 74 return (TRUE); -
trunk/psphot/src/psphotParseCamera.c
r6571 r6715 1 1 # include "psphot.h" 2 3 # define METADATA_ADD_DEFAULT(CONFIG, TYPE, NAME, VALUE, COMMENT)\4 { psMetadataItem *ITEM; \5 ITEM = psMetadataLookup (CONFIG, NAME); \6 if (ITEM == NULL) { \7 psMetadataAdd##TYPE (CONFIG, PS_LIST_TAIL, NAME, 0, COMMENT, VALUE); \8 } }9 2 10 3 bool psphotParseCamera (pmConfig *config) { 11 4 5 bool status; 6 psFits *fits = NULL; 7 psMetadata *phu = NULL; 8 psMetadata *format = NULL; 9 12 10 // psphot is supplied with a list of input images (may be only one image) 13 psArray *infiles = psMetadataLookupPtr(NULL, config->arguments, "INPUT"); 11 psArray *infiles = psMetadataLookupPtr(&status, config->arguments, "INPUT"); 12 if (!status) psAbort (__func__, "missing INPUT entry"); 14 13 if (infiles->n < 1) psAbort (__func__, "empty input list"); 15 14 16 15 // if no camera has been specified, use the first image as a template for the rest. 17 16 if (config->camera == NULL) { 18 psFits *fits = psFitsOpen (infiles->data[0], "r");19 p sMetadata *phu = psFitsReadHeader (NULL, fits);20 config->camera = pmConfigCameraFromHeader (config->site, phu);17 fits = psFitsOpen (infiles->data[0], "r"); 18 phu = psFitsReadHeader (NULL, fits); 19 format = pmConfigCameraFormatFromHeader (config, phu); 21 20 psFitsClose (fits); 22 psFree (phu);23 21 } 24 22 // There's no point in continuing if we can't recognize what we've got … … 28 26 } 29 27 30 // XXX place the "data" element on the pmConfig structure?28 // files 31 29 config->files = psMetadataAlloc (); 32 30 33 31 // build the template fpa, set up the basic view 34 pmFPA *input = pmFPAConstruct (camera); 32 // XXX : 216 leaks in pmFPAConstruct / psFree (input) 33 pmFPA *input = pmFPAConstruct (config->camera); 35 34 36 35 // assign the I/O files (potentially) needed by psphot 37 pmFPAfile *file = pmFPAfileDefine (config->files, camera, input, "PSPHOT.INPUT"); 36 // the output file is just a view to the file on config->files 37 pmFPAfile *file = pmFPAfileDefine (config->files, format, input, "PSPHOT.INPUT"); 38 if (!file) { 39 exit(EXIT_FAILURE); 40 } 38 41 39 pmFPAview *view = pmFPAviewAlloc (input, config->camera, 0);40 42 for (int i = 0; i < infiles->n; i++) { 41 // XXX save the phu from above? 42 psFits *fits = psFitsOpen (infiles->data[i], "r"); 43 psMetadata *phu = psFitsReadHeader (NULL, fits); 44 pmConfigValidateCamera (config->camera, phu); 43 if (phu == NULL) { 44 fits = psFitsOpen (infiles->data[i], "r"); 45 phu = psFitsReadHeader (NULL, fits); 46 pmConfigValidateCameraFormat (format, phu); 47 psFitsClose (fits); 48 } 45 49 46 50 // set the view to the corresponding entry for this phu 47 // XXX should I save the phu data at the appropriate location in the fpa? 48 pmFPAsetView (view, phu); 51 pmFPAview *view = pmFPAAddSource (input, phu, format); 49 52 50 53 // XXX is this the correct psMD to save the filename? 51 name = pmFPAviewNameFromRule (file->filextra, view);54 char *name = pmFPAfileNameFromRule (file->filextra, file, view); 52 55 psMetadataAddStr (file->names, PS_LIST_TAIL, name, 0, "", infiles->data[i]); 56 57 psFree (view); 58 psFree (name); 59 psFree (phu); 60 phu = NULL; 53 61 } 54 pmFPAfileDefine (config->files, camera, input, "PSPHOT.OUTPUT"); 55 pmFPAfileDefine (config->files, camera, input, "PSPHOT.RESID"); 56 pmFPAfileDefine (config->files, camera, input, "PSPHOT.PSF_INPUT"); 57 pmFPAfileDefine (config->files, camera, input, "PSPHOT.PSF_OUTPUT"); 62 63 pmFPAfileDefine (config->files, format, input, "PSPHOT.OUTPUT"); 64 65 // pmFPAfileDefine (config->files, format, input, "PSPHOT.RESID"); 66 // pmFPAfileDefine (config->files, format, input, "PSPHOT.PSF_INPUT"); 67 // pmFPAfileDefine (config->files, format, input, "PSPHOT.PSF_OUTPUT"); 58 68 59 69 // build the template fpa, set up the basic view 60 70 // supply the backgnd with a different camera? 61 pmFPAfileDefine (config->files, camera, NULL, "PSPHOT.BACKSUB"); 62 pmFPAfileDefine (config->files, camera, NULL, "PSPHOT.BACKGND"); 63 pmFPAfileDefine (config->files, camera, NULL, "PSPHOT.BACKMDL"); 64 pmFPAfileDefine (config->files, camera, NULL, "PSPHOT.PSF_SAMPLE"); 71 // allow alternate format? 72 // pmFPAfileConstruct (config->files, format, config->camera, "PSPHOT.BACKSUB"); 73 // pmFPAfileConstruct (config->files, format, config->camera, "PSPHOT.BACKGND"); 74 // pmFPAfileConstruct (config->files, format, config->camera, "PSPHOT.BACKMDL"); 75 // pmFPAfileConstruct (config->files, format, config->camera, "PSPHOT.PSF_SAMPLE"); 76 77 // psphot is supplied with the output name 78 char *output = psMetadataLookupPtr(&status, config->arguments, "OUTPUT"); 79 file = psMetadataLookupPtr (&status, config->files, "PSPHOT.OUTPUT"); 80 if (!status) psAbort (__func__, "missing OUTPUT entry"); 81 psMetadataAddStr (file->names, PS_LIST_TAIL, "OUTPUT", 0, "", output); 65 82 66 83 // recipe override values (command-line options): 67 psMetadata *options = psMetadataLookupPtr ( status, config->arguments, "PSPHOT.OPTIONS");68 psMetadata *recipe = psMetadataLookupPtr ( status, config->recipes, "PSPHOT");84 psMetadata *options = psMetadataLookupPtr (&status, config->arguments, "PSPHOT.OPTIONS"); 85 psMetadata *recipe = psMetadataLookupPtr (&status, config->recipes, "PSPHOT"); 69 86 psMetadataIterator *iter = psMetadataIteratorAlloc (options, PS_LIST_HEAD, NULL); 70 while ((psMetadataItem *item = psMetadataGetAndIncrement (iter)) != NULL) { 87 psMetadataItem *item = NULL; 88 while ((item = psMetadataGetAndIncrement (iter)) != NULL) { 71 89 psMetadataAddItem (recipe, item, PS_LIST_TAIL, PS_META_REPLACE); 72 90 } … … 74 92 75 93 // set default recipe values here 76 // XXX this needs re-thinking... 77 METADATA_ADD_DEFAULT (recipe, Str, "FITMODE", "NONE", ""); 78 METADATA_ADD_DEFAULT (recipe, Str, "PHOTCODE", "NONE", ""); 79 METADATA_ADD_DEFAULT (recipe, Str, "BREAK_POINT", "NONE", ""); 94 psMetadataAddStr (recipe, PS_LIST_TAIL, "FITMODE", PS_META_NO_REPLACE, "default fitting mode", "NONE"); 95 psMetadataAddStr (recipe, PS_LIST_TAIL, "PHOTCODE", PS_META_NO_REPLACE, "default photcode", "NONE"); 96 psMetadataAddStr (recipe, PS_LIST_TAIL, "BREAK_POINT", PS_META_NO_REPLACE, "default break point", "NONE"); 80 97 81 98 // Chip selection: if we are using a single chip, select it for each FPA 82 99 // Chip numbers to work on: -chip 1,2,3,5,8,10 100 # if (0) 83 101 char *chips = psMetadataLookupStr(NULL, config->arguments, "CHIP_SELECTIONS"); 84 102 if (chips != NULL) { … … 102 120 } 103 121 } 122 # endif 123 124 psFree (input); 125 psFree (format); 126 104 127 psTrace(__func__, 1, "Done with psphotParseCamera...\n"); 105 128 return true; -
trunk/psphot/src/psphotRadiusChecks.c
r6481 r6715 26 26 if (isnan(model->radius)) psAbort ("apply_psf_model", "error in radius"); 27 27 28 if (source->mode & PM_SOURCE_ SATSTAR) {28 if (source->mode & PM_SOURCE_MODE_SATSTAR) { 29 29 model->radius *= 2; 30 30 } 31 31 32 bool status = p sphotRedefinePixels (source, readout, model->params->data.F32[2], model->params->data.F32[3], model->radius);32 bool status = pmSourceRedefinePixels (source, readout, model->params->data.F32[2], model->params->data.F32[3], model->radius); 33 33 return status; 34 34 } … … 43 43 if (isnan(model->radius)) psAbort ("apply_psf_model", "error in radius"); 44 44 45 if (source->mode & PM_SOURCE_ SATSTAR) {45 if (source->mode & PM_SOURCE_MODE_SATSTAR) { 46 46 model->radius *= 2; 47 47 } 48 48 49 bool status = p sphotRedefinePixels (source, readout, model->params->data.F32[2], model->params->data.F32[3], model->radius);49 bool status = pmSourceRedefinePixels (source, readout, model->params->data.F32[2], model->params->data.F32[3], model->radius); 50 50 return status; 51 51 } … … 77 77 78 78 // redefine the pixels if needed 79 bool status = p sphotRedefinePixels (source, readout, model->params->data.F32[2], model->params->data.F32[3], model->radius);79 bool status = pmSourceRedefinePixels (source, readout, model->params->data.F32[2], model->params->data.F32[3], model->radius); 80 80 return status; 81 81 } -
trunk/psphot/src/psphotReadout.c
r6571 r6715 12 12 // find the currently selected readout 13 13 psMetadata *recipe = psMetadataLookupPtr (&status, config->recipes, "PSPHOT"); 14 pmFPA *input = psMetadataLookupPtr (&status, config->files, "PSPHOT.INPUT"); 15 pmReadout *readout = pmFPAviewThisReadout (view, input); 14 pmFPAfile *input = psMetadataLookupPtr (&status, config->files, "PSPHOT.INPUT"); 15 pmReadout *readout = pmFPAviewThisReadout (view, input->fpa); 16 17 sources = psphotFakeSources(); 18 status = psMetadataAdd (readout->analysis, PS_LIST_TAIL, "PSPHOT.SOURCES", PS_DATA_ARRAY, "psphot sources", sources); 19 psFree (sources); 20 return true; 21 22 // XXX does this need to invoke I/O? 23 pmReadoutSetWeights (readout); 24 25 // I have a valid mask, now mask in the analysis region of interest 26 psphotMaskReadout (readout, recipe); 16 27 17 28 // generate a background model (median, smoothed image) … … 58 69 // update the header with stats results 59 70 // XXX need to do this conditionally? 60 psMetadata *header = pmReadoutGetHeader (readout);61 psphotUpdateHeader (header, config);71 // XXX psMetadata *header = pmReadoutGetHeader (readout); 72 // XXX psphotUpdateHeader (header, config); 62 73 63 74 // XXX make this an option? … … 99 110 } 100 111 112 113 114 psphotSaveImage (NULL, readout->image, "pixels.fits"); 115 psphotSaveImage (NULL, readout->weight, "weight.fits"); 116 psphotSaveImage (NULL, readout->mask, "mask.fits"); 117 exit (1); 118 101 119 # endif -
trunk/psphot/src/psphotReplaceUnfit.c
r5993 r6715 10 10 source = sources->data[i]; 11 11 12 if (!(source->mode & PM_SOURCE_ TEMPSUB)) continue;12 if (!(source->mode & PM_SOURCE_MODE_TEMPSUB)) continue; 13 13 if (source->modelPSF == NULL) continue; 14 14 15 pm SourceAddModel(source->pixels, source->mask, source->modelPSF, false, false);16 source->mode &= ~PM_SOURCE_ SUBTRACTED;17 source->mode &= ~PM_SOURCE_ TEMPSUB;15 pmModelAdd (source->pixels, source->mask, source->modelPSF, false, false); 16 source->mode &= ~PM_SOURCE_MODE_SUBTRACTED; 17 source->mode &= ~PM_SOURCE_MODE_TEMPSUB; 18 18 } 19 19 psLogMsg ("psphot.replace", 3, "replace unfitted models: %f sec (%d objects)\n", psTimerMark ("psphot"), sources->n); -
trunk/psphot/src/psphotSkyReplace.c
r6571 r6715 2 2 3 3 // in order to successfully replace the sky, we must define a corresponding file... 4 bool psphotSkyReplace (psMetadata *config, pmFPAview *view) { 4 bool psphotSkyReplace (pmConfig *config, pmFPAview *view) { 5 6 bool status; 5 7 6 8 // find the currently selected readout 7 psMetadata *recipe = psMetadataLookupPtr (&status, config->recipes, "PSPHOT");8 pmFPA *input= psMetadataLookupPtr (&status, config->files, "PSPHOT.INPUT");9 pmReadout *readout = pmFPAviewThisReadout (view, input);9 // psMetadata *recipe = psMetadataLookupPtr (&status, config->recipes, "PSPHOT"); 10 pmFPAfile *input = psMetadataLookupPtr (&status, config->files, "PSPHOT.INPUT"); 11 pmReadout *readout = pmFPAviewThisReadout (view, input->fpa); 10 12 11 13 // select the corresponding images … … 14 16 15 17 // select background pixels, from output background file, or create 16 background = pmFPAfileReadoutImage (config->files, view, "PSPHOT.BACKGND", 0, 0, PS_TYPE_F32);18 psImage *background = pmFPAfileReadoutImage (config->files, view, "PSPHOT.BACKGND", 0, 0, PS_TYPE_F32); 17 19 if (background == NULL) { 18 20 return false; -
trunk/psphot/src/psphotSourceFits.c
r6481 r6715 1 1 # include "psphot.h" 2 # include "psEllipse.h"3 2 4 3 // given a source with an existing modelPSF, attempt a full PSF fit, subtract if successful … … 18 17 19 18 // fit PSF model (set/unset the pixel mask) 20 psImageKeepCircle (source->mask, x, y, PSF->radius, "OR", P SPHOT_MASK_MARKED);19 psImageKeepCircle (source->mask, x, y, PSF->radius, "OR", PM_SOURCE_MASK_MARKED); 21 20 pmSourceFitModel (source, PSF, true); 22 psImageKeepCircle (source->mask, x, y, PSF->radius, "AND", ~P SPHOT_MASK_MARKED);21 psImageKeepCircle (source->mask, x, y, PSF->radius, "AND", ~PM_SOURCE_MASK_MARKED); 23 22 24 23 // does the PSF model succeed? … … 29 28 30 29 psTrace ("psphot.blend", 5, "fitted as PSF\n"); 31 pm SourceSubModel(source->pixels, source->mask, PSF, false, false);30 pmModelSub (source->pixels, source->mask, PSF, false, false); 32 31 33 32 // free old model, save new model … … 35 34 source->modelPSF = PSF; 36 35 37 source->mode |= PM_SOURCE_ SUBTRACTED;38 source->mode &= ~PM_SOURCE_ TEMPSUB;36 source->mode |= PM_SOURCE_MODE_SUBTRACTED; 37 source->mode &= ~PM_SOURCE_MODE_TEMPSUB; 39 38 return true; 40 39 } … … 67 66 68 67 // skip the source if we don't think it is extended 69 if (source->type == PM_SOURCE_ UNKNOWN) return false;70 if (source->type == PM_SOURCE_ DEFECT) return false;71 if (source->type == PM_SOURCE_ SATURATED) return false;68 if (source->type == PM_SOURCE_TYPE_UNKNOWN) return false; 69 if (source->type == PM_SOURCE_TYPE_DEFECT) return false; 70 if (source->type == PM_SOURCE_TYPE_SATURATED) return false; 72 71 if (source->moments->SN < EXT_MIN_SN) return false; 73 72 … … 110 109 // sub EXT 111 110 psFree (DBL); 112 pm SourceSubModel(source->pixels, source->mask, EXT, false, false);111 pmModelSub (source->pixels, source->mask, EXT, false, false); 113 112 psTrace ("psphot.blend", 5, "blob as EXT: %f %f\n", EXT->params->data.F32[2], EXT->params->data.F32[3]); 114 113 115 114 // save new model 116 115 source->modelEXT = EXT; 117 source->mode |= PM_SOURCE_ SUBTRACTED;118 source->mode &= ~PM_SOURCE_ TEMPSUB;116 source->mode |= PM_SOURCE_MODE_SUBTRACTED; 117 source->mode &= ~PM_SOURCE_MODE_TEMPSUB; 119 118 return true; 120 119 … … 122 121 // sub DLB 123 122 psFree (EXT); 124 pm SourceSubModel(source->pixels, source->mask, (pmModel *) DBL->data[0], false, false);125 pm SourceSubModel(source->pixels, source->mask, (pmModel *) DBL->data[1], false, false);123 pmModelSub (source->pixels, source->mask, (pmModel *) DBL->data[0], false, false); 124 pmModelSub (source->pixels, source->mask, (pmModel *) DBL->data[1], false, false); 126 125 psTrace ("psphot.blend", 5, "blob as DBL: %f %f\n", ONE->params->data.F32[2], ONE->params->data.F32[3]); 127 126 … … 129 128 psFree (source->modelPSF); 130 129 source->modelPSF = psMemCopy (DBL->data[0]); 131 source->mode |= PM_SOURCE_ SUBTRACTED;132 source->mode |= PM_SOURCE_ PAIR;133 source->mode &= ~PM_SOURCE_ TEMPSUB;130 source->mode |= PM_SOURCE_MODE_SUBTRACTED; 131 source->mode |= PM_SOURCE_MODE_PAIR; 132 source->mode &= ~PM_SOURCE_MODE_TEMPSUB; 134 133 135 134 // copy most data from the primary source (modelEXT, blends stay NULL) … … 155 154 pmModel *DBL; 156 155 pmModel *PSF; 157 EllipseAxes axes;158 EllipseMoments moments;156 psEllipseAxes axes; 157 psEllipseMoments moments; 159 158 psArray *modelSet; 160 159 … … 163 162 moments.y2 = source->moments->Sy; 164 163 moments.xy = source->moments->Sxy; 165 axes = EllipseMomentsToAxes (moments);164 axes = psEllipseMomentsToAxes (moments); 166 165 167 166 dx = 2 * cos (axes.theta); … … 190 189 191 190 // fit EXT (not PSF) model (set/unset the pixel mask) 192 psImageKeepCircle (source->mask, x, y, PSF->radius, "OR", P SPHOT_MASK_MARKED);191 psImageKeepCircle (source->mask, x, y, PSF->radius, "OR", PM_SOURCE_MASK_MARKED); 193 192 pmSourceFitSet (source, modelSet, true); 194 psImageKeepCircle (source->mask, x, y, PSF->radius, "AND", ~P SPHOT_MASK_MARKED);193 psImageKeepCircle (source->mask, x, y, PSF->radius, "AND", ~PM_SOURCE_MASK_MARKED); 195 194 196 195 return (modelSet); … … 210 209 211 210 // fit EXT (not PSF) model (set/unset the pixel mask) 212 psImageKeepCircle (source->mask, x, y, EXT->radius, "OR", P SPHOT_MASK_MARKED);211 psImageKeepCircle (source->mask, x, y, EXT->radius, "OR", PM_SOURCE_MASK_MARKED); 213 212 pmSourceFitModel (source, EXT, false); 214 psImageKeepCircle (source->mask, x, y, EXT->radius, "AND", ~P SPHOT_MASK_MARKED);213 psImageKeepCircle (source->mask, x, y, EXT->radius, "AND", ~PM_SOURCE_MASK_MARKED); 215 214 216 215 return (EXT); … … 222 221 223 222 // if this source is not a possible blend, just fit as PSF 224 if ((source->blends == NULL) || (source->mode & PM_SOURCE_ SATSTAR)) {223 if ((source->blends == NULL) || (source->mode & PM_SOURCE_MODE_SATSTAR)) { 225 224 bool status = psphotFitPSF (readout, source); 226 225 return status; … … 273 272 274 273 // fit PSF model (set/unset the pixel mask) 275 psImageKeepCircle (source->mask, x, y, PSF->radius, "OR", P SPHOT_MASK_MARKED);274 psImageKeepCircle (source->mask, x, y, PSF->radius, "OR", PM_SOURCE_MASK_MARKED); 276 275 pmSourceFitSet (source, modelSet, true); 277 psImageKeepCircle (source->mask, x, y, PSF->radius, "AND", ~P SPHOT_MASK_MARKED);276 psImageKeepCircle (source->mask, x, y, PSF->radius, "AND", ~PM_SOURCE_MASK_MARKED); 278 277 279 278 // evaluate the blend objects, subtract if good, free otherwise … … 291 290 292 291 psTrace ("psphot.blend", 5, "fitted blend as PSF\n"); 293 pm SourceSubModel(source->pixels, source->mask, model, false, false);294 src->mode |= PM_SOURCE_ SUBTRACTED;295 src->mode &= ~PM_SOURCE_ TEMPSUB;292 pmModelSub (source->pixels, source->mask, model, false, false); 293 src->mode |= PM_SOURCE_MODE_SUBTRACTED; 294 src->mode &= ~PM_SOURCE_MODE_TEMPSUB; 296 295 } 297 296 psFree (modelSet); … … 305 304 306 305 psTrace ("psphot.blend", 5, "fitted primary as PSF\n"); 307 pm SourceSubModel(source->pixels, source->mask, PSF, false, false);306 pmModelSub (source->pixels, source->mask, PSF, false, false); 308 307 psFree (source->modelPSF); 309 308 source->modelPSF = PSF; 310 source->mode |= PM_SOURCE_ SUBTRACTED;311 source->mode &= ~PM_SOURCE_ TEMPSUB;312 return true; 313 } 309 source->mode |= PM_SOURCE_MODE_SUBTRACTED; 310 source->mode &= ~PM_SOURCE_MODE_TEMPSUB; 311 return true; 312 } -
trunk/psphot/src/psphotSourceStats.c
r6495 r6715 25 25 26 26 // allocate image, weight, mask arrays for each peak (square of radius OUTER) 27 p sphotDefinePixels (source, readout, source->peak->x, source->peak->y, OUTER);27 pmSourceDefinePixels (source, readout, source->peak->x, source->peak->y, OUTER); 28 28 29 29 // XXX skip faint sources?
Note:
See TracChangeset
for help on using the changeset viewer.
