Over the weekend I investigated the problem of the positional dependence of the PSF model. Unfortunately, I’m still unable to get modelfit_CModel_flux
over an entire image, but I’ll summarise what I’ve found:
With characterizeImage.py
(and using the config in the previous post) I am able to get modelfit_Cmodel_initial_flux
for sources evenly distributed over the entire image, which is great. A small fraction (<5%) return nans, but these seem to be saturated sources, so I think that’s fine.
However, modelfit_Cmodel_flux
returns large numbers of nans with a strong positional dependence (see below; red points are nans, green are finite fluxes):
On investigation, all the sources that have nan fluxes have modelfit_CModel_flag_region_maxBadPixelFraction
flagged as True
, whereas this is False
for all sources with finite fluxes. It seems, therefore, that they are failing due some kind of bad pixel mask. However, nothing changes when I either set:
config.measurement.plugins['modelfit_CModel'].region.badMaskPlanes=[]
config.measurement.undeblended['modelfit_CModel'].region.badMaskPlanes=[]
or set
config.measurement.undeblended['modelfit_CModel'].region.maxBadPixelFraction
config.measurement.plugins['modelfit_CModel'].region.maxBadPixelFraction
to either 1, 2, 1000, or None.
I delved into meas_modelfit/include/lsst/meas/modelfit/CModel.h
(There Be Dragons!) and came across this comment:
Following the initial fit, we also revisit the question of which pixels should be included in the fit (see CModelRegionControl)
which got me wondering whether modelfit_cmodel_initial
is, for some reason, flagging whole regions of my images as bad. However, there doesn’t seem to be a (obvious) flag in the catalog schema that would indicate why this is happening.
Finally, adjusting the config.charImage.measurePsf.psfDeterminer["psfex"]
parameters can help a little, but I always have large swathes of sources in my images that return nans for modelfit_cmodel_flux
(and the relationship between parameter values and results seems rather chaotic).
So, my questions are:
- Does my suspicion that
modelfit_cmodel_initial
is flagging many (contiguous) sources as bad prior to running model_cmodel_dev
make sense?
- Does anyone have any thoughts on why this would be the case?
- Similarly, are there any flags that would tell me why
modelfit_cmodel_initial
is flagging them as bad?
- Since we suspect this is related to the PSF model, is there some way I can extract or control how the PSF model is interpolated across the image?
- Does anyone have any inspired suggestions as to how this could all be solved?
(I realise that last one is a wildly ambitious question!)
Thanks for helping me get this far, and thanks in advance for any suggestions.