Class GeneralPsfFitter

Inheritance Relationships

Derived Type

Class Documentation

class GeneralPsfFitter

Class for fitting multishapelet models to PSF images.

This class fits up to four shapelet expansions simultaneously to a PSF image, with the relative radii and number of shapelet coefficients for each expansion separately configurable. These expansions are also named; this allows us to map different fits with some expansions disabled to each other, in order to first fit an approximate model and follow this up with a more complete model, using the approximate model as a starting point.

The configuration also defines a simple Bayesian prior for the fit, defined using simple independent Gaussians for the ellipse parameters of each component. The priors can be disabled by setting their width (xxPriorSigma in the control object) to infinity, and those parameters can be held fixed at their input values by setting the prior width to zero. The priors are always centered at the input value, meaning that it may be more appropriate to think of the priors as a form of regularization, rather than a rigorous prior. In fact, it’s impossible to use a prior here rigorously without a noise model for the PSF image, which is something the LSST Psf class doesn’t provide, and here is just provided as a constant noise sigma to be provided by the user (who generally just has to chose a small number arbitrarily). Decreasing the noise sigma will of course decrease the effect of the priors (and vice versa). In any case, having some sort of regularization is probably a good idea, as this is a very high-dimensional fit.

Subclassed by lsst::meas::modelfit::GeneralPsfFitterAlgorithm

Unnamed Group

shapelet::MultiShapeletFunction apply(afw::image::Image<Pixel> const &image, afw::geom::ellipses::Quadrupole const &moments, Scalar noiseSigma = -1, int *pState = nullptr) const

Perform an initial fit to a PSF image.

Parameters
  • [in] image: The image to fit, typically the result of Psf::computeKernelImage(). The image’s xy0 should be set such that the center of the PSF is at (0,0).

  • [in] moments: Second moments of the PSF, typically result of Psf::computeShape() or running some other adaptive moments code on the PSF image. This will be used to set the initial ellipses of the multishapelet model.

  • [in] noiseSigma: An estimate of the noise in the image. As LSST PSF images are generally assumed to be noise-free, this is really just a fiddle-factor for the user. A default value from the control object is used if this is negative.

  • [in] pState: Pointer to an integer which is used to return the optimizerState from apply.

shapelet::MultiShapeletFunction apply(afw::image::Image<double> const &image, afw::geom::ellipses::Quadrupole const &moments, Scalar noiseSigma = -1, int *pState = nullptr) const

Unnamed Group

shapelet::MultiShapeletFunction apply(afw::image::Image<Pixel> const &image, shapelet::MultiShapeletFunction const &initial, Scalar noiseSigma = -1, int *pState = nullptr) const

Perform a fit to a PSF image, using a previous fit as a starting point

Parameters
  • [in] image: The image to fit, typically the result of Psf::computeKernelImage(). The image’s xy0 should be set such that the center of the PSF is at (0,0).

  • [in] initial: The result of a previous call to apply(), using an identically-configured GeneralPsfFitter instance. To use a result from a differently-configured GeneralPsfFitter, use adapt().

  • [in] noiseSigma: An estimate of the noise in the image. As LSST PSF images are generally assumed to be noise-free, this is really just a fiddle-factor for the user. A default value from the control object is used if this is negative.

  • [in] pState: Pointer to an integer which is used to return the optimizerState from apply.

shapelet::MultiShapeletFunction apply(afw::image::Image<double> const &image, shapelet::MultiShapeletFunction const &initial, Scalar noiseSigma = -1, int *pState = nullptr) const

Public Functions

GeneralPsfFitter(GeneralPsfFitterControl const &ctrl)

Initialize the fitter class with the given control object.

shapelet::MultiShapeletFunctionKey addFields(afw::table::Schema &schema, std::string const &prefix) const

Add fields to a Schema that can be used to store the MultiShapeletFunction returned by apply().

Return

a FunctorKey that can get/set MultiShapeletFunctions that match the configuration of this fitter on a record.

Parameters
  • [inout] schema: Schema to add fields to.

  • [in] prefix: Field name prefix for all fields.

PTR(Model) const

Return the Model object that corresponds to the configuration.

In addition to the shapelet coefficients (stored in the “amplitudes” array), this Model stores all the initial ellipse parameters in the “fixed” array, as these are used to define the center of the prior; the “nonlinear” parameters are the free-to-vary ellipse parameters minus the corresponding initial values.

PTR(Prior) const

Return the Prior object that corresponds to the configuration.

This Prior class only supports evaluate() and evaluateDerivatives(), reflecting the fact that we only intend to use it with a Optimizer, not a Sampler.

shapelet::MultiShapeletFunction lsst::meas::modelfit::GeneralPsfFitter::adapt(shapelet::MultiShapeletFunction const & previousFit, PTR ( Model ) previousModel) const

Adapt a differently-configured previous fit to be used as an starting point for this GeneralPsfFitter.

Return

a new MultiShapelet function that may be passed directly to apply(). When possible, the ellipse and shapelet coefficeints will be copied from previousFit; higher-order coefficients will be set to zero, and any components used in this but unused in the previous fit will have their ellipses set relative to the previous fit’s “primary” component.

Parameters