LSST Applications g0f08755f38+9c285cab97,g1635faa6d4+13f3999e92,g1653933729+a8ce1bb630,g1a0ca8cf93+bf6eb00ceb,g28da252d5a+0829b12dee,g29321ee8c0+5700dc9eac,g2bbee38e9b+9634bc57db,g2bc492864f+9634bc57db,g2cdde0e794+c2c89b37c4,g3156d2b45e+41e33cbcdc,g347aa1857d+9634bc57db,g35bb328faa+a8ce1bb630,g3a166c0a6a+9634bc57db,g3e281a1b8c+9f2c4e2fc3,g414038480c+077ccc18e7,g41af890bb2+fde0dd39b6,g5fbc88fb19+17cd334064,g781aacb6e4+a8ce1bb630,g80478fca09+55a9465950,g82479be7b0+d730eedb7d,g858d7b2824+9c285cab97,g9125e01d80+a8ce1bb630,g9726552aa6+10f999ec6a,ga5288a1d22+2a84bb7594,gacf8899fa4+c69c5206e8,gae0086650b+a8ce1bb630,gb58c049af0+d64f4d3760,gc28159a63d+9634bc57db,gcf0d15dbbd+4b7d09cae4,gda3e153d99+9c285cab97,gda6a2b7d83+4b7d09cae4,gdaeeff99f8+1711a396fd,ge2409df99d+5e831397f4,ge79ae78c31+9634bc57db,gf0baf85859+147a0692ba,gf3967379c6+41c94011de,gf3fb38a9a8+8f07a9901b,gfb92a5be7c+9c285cab97,w.2024.46
LSST Data Management Base Package
|
Abstract base class and concrete factories that define multi-shapelet galaxy models. More...
#include <Model.h>
Public Types | |
enum | CenterEnum { FIXED_CENTER = 0x0 , SINGLE_CENTER = 0x1 , MULTI_CENTER = 0x2 } |
typedef std::vector< std::string > | NameVector |
typedef std::vector< std::shared_ptr< shapelet::MultiShapeletBasis > > | BasisVector |
typedef std::vector< afw::geom::ellipses::Ellipse > | EllipseVector |
typedef std::vector< afw::geom::ellipses::Ellipse >::iterator | EllipseIterator |
typedef std::vector< afw::geom::ellipses::Ellipse >::const_iterator | EllipseConstIterator |
Public Member Functions | |
int | getNonlinearDim () const |
Return the number of free nonlinear parameters. | |
int | getAmplitudeDim () const |
Return the number of linear parameters. | |
int | getFixedDim () const |
Return the number of fixed nonlinear parameters. | |
int | getBasisCount () const |
Return the number of MultiShapeletBasis objects (equivalently, the number of ellipses) | |
NameVector const & | getNonlinearNames () const |
Return the names of the free nonlinear parameters. | |
NameVector const & | getAmplitudeNames () const |
Return the names of the amplitude parameters. | |
NameVector const & | getFixedNames () const |
Return the names of the fixed nonlinear parameters. | |
BasisVector const & | getBasisVector () const |
Return the MultiShapeletBasis objects that comprise the Model. | |
shapelet::MultiShapeletFunction | makeShapeletFunction (ndarray::Array< Scalar const, 1, 1 > const &nonlinear, ndarray::Array< Scalar const, 1, 1 > const &litudes, ndarray::Array< Scalar const, 1, 1 > const &fixed) const |
Create a MultiShapeletFunction object from a set of parameter vectors. | |
virtual std::shared_ptr< Prior > | adaptPrior (std::shared_ptr< Prior > prior) const =0 |
Given an arbitrary prior, return one compatible with this Model or throw LogicError. | |
virtual EllipseVector | makeEllipseVector () const =0 |
Return an uninitialized vector of afw::geom::ellipses::Ellipse with the parametrization expected by readEllipses() and writeEllipses(). | |
virtual void | writeEllipses (Scalar const *nonlinearIter, Scalar const *fixedIter, EllipseIterator ellipseIter) const =0 |
Convert a set of nonlinear+fixed parameter arrays to a vector of ellipses. | |
virtual void | readEllipses (EllipseConstIterator ellipseIter, Scalar *nonlinearIter, Scalar *fixedIter) const =0 |
Convert a vector of ellipses to a set of nonlinear+fixed parameter arrays. | |
EllipseVector | writeEllipses (ndarray::Array< Scalar const, 1, 1 > const &nonlinear, ndarray::Array< Scalar const, 1, 1 > const &fixed) const |
Convert a set of nonlinear+fixed parameter arrays to a vector of ellipses. | |
void | readEllipses (EllipseVector const &ellipses, ndarray::Array< Scalar, 1, 1 > const &nonlinear, ndarray::Array< Scalar, 1, 1 > const &fixed) const |
Convert a vector of ellipses to a set of nonlinear+fixed parameter arrays. | |
virtual void | transformParameters (LocalUnitTransform const &transform, ndarray::Array< Scalar, 1, 1 > const &nonlinear, ndarray::Array< Scalar, 1, 1 > const &litudes, ndarray::Array< Scalar, 1, 1 > const &fixed) const |
Transform (in-place) parameter vectors from one unit system to another. | |
virtual | ~Model () |
Model (const Model &)=delete | |
Model & | operator= (const Model &)=delete |
Model (Model &&)=delete | |
Model & | operator= (Model &&)=delete |
Static Public Member Functions | |
static std::shared_ptr< Model > | make (BasisVector basisVector, NameVector const &prefixes, CenterEnum center) |
Construct a concrete Model instance with multiple ellipses and multishapelet bases. | |
static std::shared_ptr< Model > | make (std::shared_ptr< shapelet::MultiShapeletBasis > basis, CenterEnum center) |
Construct a concrete Model instance with a single ellipse and multishapelet basis. | |
static std::shared_ptr< Model > | makeGaussian (CenterEnum center, double radius=1.0) |
Construct a concrete Model instance that represents a single elliptical Gaussian function. | |
Protected Member Functions | |
Model (BasisVector basisVector, NameVector nonlinearNames, NameVector amplitudeNames, NameVector fixedNames) | |
Abstract base class and concrete factories that define multi-shapelet galaxy models.
A Model provides a mapping from its parameters to ellipses and to a realization using shapelet objects. A Model does not "hold" its parameters; parameters are always stored in separate arrays.
Model parameters are split into three categories: nonlinear, amplitudes, and fixed. These are described more fully in Models, Interpreters, and Parameters.
A few private concrete subclasses of Model have been provided that will meet most needs; instances can be constructed via the make() and makeGaussian()
typedef std::vector<afw::geom::ellipses::Ellipse>::const_iterator lsst::meas::modelfit::Model::EllipseConstIterator |
typedef std::vector<afw::geom::ellipses::Ellipse>::iterator lsst::meas::modelfit::Model::EllipseIterator |
Enumerator | |
---|---|
FIXED_CENTER | |
SINGLE_CENTER | |
MULTI_CENTER |
|
inlinevirtual |
|
delete |
|
delete |
|
protected |
|
pure virtual |
Given an arbitrary prior, return one compatible with this Model or throw LogicError.
Implemented in lsst::meas::modelfit::MultiModel.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
static |
Construct a concrete Model instance with multiple ellipses and multishapelet bases.
This can be used to construct a multi-component model (for instance, a bulge-disk decomposition), using MultiShapeletBasis objects such as those loaded by the lsst.shapelet.tractor module.
[in] | basisVector | A vector of MultiShapeletBasis objects, one for each component. Each component will have a separate set of ellipse parameters. |
[in] | prefixes | A vector of parameter name prefixes, one for each basis. These will be prepended to the names described in the documentation for the other overload of make(). |
[in] | center | An enum specifying whether the different components should have a fixed center (FIXED_CENTER), the same center (SINGLE_CENTER), or independent centers (MULTI_CENTER). |
|
static |
Construct a concrete Model instance with a single ellipse and multishapelet basis.
This can be used to construct a single-component model (e.g. a single fixed-index Sersic profile), or a linear combination model with only one ellipse.
[in] | basis | A MultiShapeletBasis object, of the sort provided by the lsst.shapelet.tractor module. |
[in] | center | An enum specifying whether the model should have a fixed center (FIXED_CENTER) or parametrized center (SINGLE_CENTER or MULTI_CENTER). |
The names of the nonlinear and fixed parameters will be ["eta1", "eta2", "logR", "x", "y"], with "x" and "y" in the fixed parameters if center==FIXED_CENTER. The amplitudes will be labeled "alphaN", where "N" is an integer starting from 0.
As implied by the parameter names, the ellipse is parametrized using afw::geom::ellipses::SeparableConformalShearLogTraceRadius. For the basis objects provided by lsst.shapelet.tractor, that generally means that logR=0 corresponds to the half-light radius.
|
pure virtual |
Return an uninitialized vector of afw::geom::ellipses::Ellipse with the parametrization expected by readEllipses() and writeEllipses().
Implemented in lsst::meas::modelfit::MultiModel.
|
static |
Construct a concrete Model instance that represents a single elliptical Gaussian function.
The Models returned by this method use the same ellipse parametrization and naming schemes as those returned by make().
[in] | center | An enum specifying whether the model should have a fixed center (FIXED_CENTER) or parametrized center (SINGLE_CENTER or MULTI_CENTER). |
[in] | radius | The radius at which logR=0, in units of the Gaussian sigma parameter (i.e. radius=1 corresponds to a model in which the radius parameter is ln(sigma)). |
shapelet::MultiShapeletFunction lsst::meas::modelfit::Model::makeShapeletFunction | ( | ndarray::Array< Scalar const, 1, 1 > const & | nonlinear, |
ndarray::Array< Scalar const, 1, 1 > const & | amplitudes, | ||
ndarray::Array< Scalar const, 1, 1 > const & | fixed ) const |
Create a MultiShapeletFunction object from a set of parameter vectors.
|
pure virtual |
Convert a vector of ellipses to a set of nonlinear+fixed parameter arrays.
[in] | ellipseIter | Iterator to the beginning of an ellipse vector, as returned by makeEllipseVector(). |
[out] | nonlinearIter | Pointer to the beginning of a nonlinear parameter array. |
[out] | fixedIter | Pointer to the beginning of a fixed parameter array. |
Implemented in lsst::meas::modelfit::MultiModel.
void lsst::meas::modelfit::Model::readEllipses | ( | EllipseVector const & | ellipses, |
ndarray::Array< Scalar, 1, 1 > const & | nonlinear, | ||
ndarray::Array< Scalar, 1, 1 > const & | fixed ) const |
Convert a vector of ellipses to a set of nonlinear+fixed parameter arrays.
[in] | ellipses | An ellipse vector, as returned by makeEllipseVector(). |
[out] | nonlinear | Output nonlinear parameter array. |
[out] | fixed | Output fixed parameter array. |
|
virtual |
Transform (in-place) parameter vectors from one unit system to another.
The default implementation transforms nonlinear and fixed parameters by converting them to ellipses, transforming the ellipses, and converting back to parameters. The amplitudes are simply multiplied by transform.flux. Subclasses for which this isn't appropriate should override.
EllipseVector lsst::meas::modelfit::Model::writeEllipses | ( | ndarray::Array< Scalar const, 1, 1 > const & | nonlinear, |
ndarray::Array< Scalar const, 1, 1 > const & | fixed ) const |
Convert a set of nonlinear+fixed parameter arrays to a vector of ellipses.
[in] | nonlinear | nonlinear parameter array. |
[in] | fixed | fixed parameter array. |
This is a convenient method that combines the call to makeEllipseVector() with a call to the other overload of writeEllipses(), for cases when there is no need to reuse an existing ellipse vector.
|
pure virtual |
Convert a set of nonlinear+fixed parameter arrays to a vector of ellipses.
[in] | nonlinearIter | Pointer to the beginning of a nonlinear parameter array. |
[in] | fixedIter | Pointer to the beginning of a fixed parameter array. |
[out] | ellipseIter | Iterator to the beginning of an ellipse vector, as returned by makeEllipseVector(). |
Implemented in lsst::meas::modelfit::MultiModel.