LSST Applications  21.0.0-172-gfb10e10a+18fedfabac,22.0.0+297cba6710,22.0.0+80564b0ff1,22.0.0+8d77f4f51a,22.0.0+a28f4c53b1,22.0.0+dcf3732eb2,22.0.1-1-g7d6de66+2a20fdde0d,22.0.1-1-g8e32f31+297cba6710,22.0.1-1-geca5380+7fa3b7d9b6,22.0.1-12-g44dc1dc+2a20fdde0d,22.0.1-15-g6a90155+515f58c32b,22.0.1-16-g9282f48+790f5f2caa,22.0.1-2-g92698f7+dcf3732eb2,22.0.1-2-ga9b0f51+7fa3b7d9b6,22.0.1-2-gd1925c9+bf4f0e694f,22.0.1-24-g1ad7a390+a9625a72a8,22.0.1-25-g5bf6245+3ad8ecd50b,22.0.1-25-gb120d7b+8b5510f75f,22.0.1-27-g97737f7+2a20fdde0d,22.0.1-32-gf62ce7b1+aa4237961e,22.0.1-4-g0b3f228+2a20fdde0d,22.0.1-4-g243d05b+871c1b8305,22.0.1-4-g3a563be+32dcf1063f,22.0.1-4-g44f2e3d+9e4ab0f4fa,22.0.1-42-gca6935d93+ba5e5ca3eb,22.0.1-5-g15c806e+85460ae5f3,22.0.1-5-g58711c4+611d128589,22.0.1-5-g75bb458+99c117b92f,22.0.1-6-g1c63a23+7fa3b7d9b6,22.0.1-6-g50866e6+84ff5a128b,22.0.1-6-g8d3140d+720564cf76,22.0.1-6-gd805d02+cc5644f571,22.0.1-8-ge5750ce+85460ae5f3,master-g6e05de7fdc+babf819c66,master-g99da0e417a+8d77f4f51a,w.2021.48
LSST Data Management Base Package
Public Types | Public Member Functions | Static Public Member Functions | List of all members
lsst::meas::modelfit::MultiModel Class Reference

A concrete Model class that simply concatenates several other Models. More...

#include <MultiModel.h>

Inheritance diagram for lsst::meas::modelfit::MultiModel:
lsst::meas::modelfit::Model

Public Types

enum  CenterEnum { FIXED_CENTER = 0x0 , SINGLE_CENTER = 0x1 , MULTI_CENTER = 0x2 }
 
typedef std::vector< std::stringNameVector
 
typedef std::vector< std::shared_ptr< shapelet::MultiShapeletBasis > > BasisVector
 
typedef std::vector< afw::geom::ellipses::EllipseEllipseVector
 
typedef std::vector< afw::geom::ellipses::Ellipse >::iterator EllipseIterator
 
typedef std::vector< afw::geom::ellipses::Ellipse >::const_iterator EllipseConstIterator
 

Public Member Functions

 MultiModel (ModelVector components, NameVector const &prefixes)
 Construct a new MultiModel. More...
 
ModelVector const & getComponents () const
 Return the vector of constituent models. More...
 
std::shared_ptr< PrioradaptPrior (std::shared_ptr< Prior > prior) const override
 Given an arbitrary prior, return one compatible with this Model or throw LogicError. More...
 
EllipseVector makeEllipseVector () const override
 Return an uninitialized vector of afw::geom::ellipses::Ellipse with the parametrization expected by readEllipses() and writeEllipses(). More...
 
void writeEllipses (Scalar const *nonlinearIter, Scalar const *fixedIter, EllipseIterator ellipseIter) const override
 Convert a set of nonlinear+fixed parameter arrays to a vector of ellipses. More...
 
void readEllipses (EllipseConstIterator ellipseIter, Scalar *nonlinearIter, Scalar *fixedIter) const override
 Convert a vector of ellipses to a set of nonlinear+fixed parameter arrays. More...
 
int getNonlinearDim () const
 Return the number of free nonlinear parameters. More...
 
int getAmplitudeDim () const
 Return the number of linear parameters. More...
 
int getFixedDim () const
 Return the number of fixed nonlinear parameters. More...
 
int getBasisCount () const
 Return the number of MultiShapeletBasis objects (equivalently, the number of ellipses) More...
 
NameVector const & getNonlinearNames () const
 Return the names of the free nonlinear parameters. More...
 
NameVector const & getAmplitudeNames () const
 Return the names of the amplitude parameters. More...
 
NameVector const & getFixedNames () const
 Return the names of the fixed nonlinear parameters. More...
 
BasisVector const & getBasisVector () const
 Return the MultiShapeletBasis objects that comprise the Model. More...
 
shapelet::MultiShapeletFunction 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. More...
 
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. More...
 
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. More...
 
virtual void transformParameters (LocalUnitTransform const &transform, ndarray::Array< Scalar, 1, 1 > const &nonlinear, ndarray::Array< Scalar, 1, 1 > const &amplitudes, ndarray::Array< Scalar, 1, 1 > const &fixed) const
 Transform (in-place) parameter vectors from one unit system to another. More...
 

Static Public Member Functions

static std::shared_ptr< Modelmake (BasisVector basisVector, NameVector const &prefixes, CenterEnum center)
 Construct a concrete Model instance with multiple ellipses and multishapelet bases. More...
 
static std::shared_ptr< Modelmake (std::shared_ptr< shapelet::MultiShapeletBasis > basis, CenterEnum center)
 Construct a concrete Model instance with a single ellipse and multishapelet basis. More...
 
static std::shared_ptr< ModelmakeGaussian (CenterEnum center, double radius=1.0)
 Construct a concrete Model instance that represents a single elliptical Gaussian function. More...
 

Detailed Description

A concrete Model class that simply concatenates several other Models.

Definition at line 34 of file MultiModel.h.

Member Typedef Documentation

◆ BasisVector

Definition at line 66 of file Model.h.

◆ EllipseConstIterator

Definition at line 69 of file Model.h.

◆ EllipseIterator

Definition at line 68 of file Model.h.

◆ EllipseVector

Definition at line 67 of file Model.h.

◆ NameVector

Definition at line 65 of file Model.h.

Member Enumeration Documentation

◆ CenterEnum

Enumerator
FIXED_CENTER 
SINGLE_CENTER 
MULTI_CENTER 

Definition at line 59 of file Model.h.

59  {
60  FIXED_CENTER = 0x0,
61  SINGLE_CENTER = 0x1,
62  MULTI_CENTER = 0x2
63  };

Constructor & Destructor Documentation

◆ MultiModel()

lsst::meas::modelfit::MultiModel::MultiModel ( ModelVector  components,
NameVector const &  prefixes 
)
explicit

Construct a new MultiModel.

Parameters
[in]componentsA vector of other Models to combine
[in]prefixesA vector of name prefixes used to construct parameter names, one for each element in components.

Member Function Documentation

◆ adaptPrior()

std::shared_ptr<Prior> lsst::meas::modelfit::MultiModel::adaptPrior ( std::shared_ptr< Prior prior) const
overridevirtual

Given an arbitrary prior, return one compatible with this Model or throw LogicError.

Implements lsst::meas::modelfit::Model.

◆ getAmplitudeDim()

int lsst::meas::modelfit::Model::getAmplitudeDim ( ) const
inlineinherited

Return the number of linear parameters.

Definition at line 127 of file Model.h.

127 { return _amplitudeNames.size(); }
T size(T... args)

◆ getAmplitudeNames()

NameVector const& lsst::meas::modelfit::Model::getAmplitudeNames ( ) const
inlineinherited

Return the names of the amplitude parameters.

Definition at line 139 of file Model.h.

139 { return _amplitudeNames; }

◆ getBasisCount()

int lsst::meas::modelfit::Model::getBasisCount ( ) const
inlineinherited

Return the number of MultiShapeletBasis objects (equivalently, the number of ellipses)

Definition at line 133 of file Model.h.

133 { return _basisVector.size(); }

◆ getBasisVector()

BasisVector const& lsst::meas::modelfit::Model::getBasisVector ( ) const
inlineinherited

Return the MultiShapeletBasis objects that comprise the Model.

Definition at line 145 of file Model.h.

145 { return _basisVector; }

◆ getComponents()

ModelVector const& lsst::meas::modelfit::MultiModel::getComponents ( ) const
inline

Return the vector of constituent models.

Definition at line 47 of file MultiModel.h.

47 { return _components; }

◆ getFixedDim()

int lsst::meas::modelfit::Model::getFixedDim ( ) const
inlineinherited

Return the number of fixed nonlinear parameters.

Definition at line 130 of file Model.h.

130 { return _fixedNames.size(); }

◆ getFixedNames()

NameVector const& lsst::meas::modelfit::Model::getFixedNames ( ) const
inlineinherited

Return the names of the fixed nonlinear parameters.

Definition at line 142 of file Model.h.

142 { return _fixedNames; }

◆ getNonlinearDim()

int lsst::meas::modelfit::Model::getNonlinearDim ( ) const
inlineinherited

Return the number of free nonlinear parameters.

Definition at line 124 of file Model.h.

124 { return _nonlinearNames.size(); }

◆ getNonlinearNames()

NameVector const& lsst::meas::modelfit::Model::getNonlinearNames ( ) const
inlineinherited

Return the names of the free nonlinear parameters.

Definition at line 136 of file Model.h.

136 { return _nonlinearNames; }

◆ make() [1/2]

static std::shared_ptr<Model> lsst::meas::modelfit::Model::make ( BasisVector  basisVector,
NameVector const &  prefixes,
CenterEnum  center 
)
staticinherited

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.

Parameters
[in]basisVectorA vector of MultiShapeletBasis objects, one for each component. Each component will have a separate set of ellipse parameters.
[in]prefixesA 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]centerAn enum specifying whether the different components should have a fixed center (FIXED_CENTER), the same center (SINGLE_CENTER), or independent centers (MULTI_CENTER).

◆ make() [2/2]

static std::shared_ptr<Model> lsst::meas::modelfit::Model::make ( std::shared_ptr< shapelet::MultiShapeletBasis basis,
CenterEnum  center 
)
staticinherited

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.

Parameters
[in]basisA MultiShapeletBasis object, of the sort provided by the lsst.shapelet.tractor module.
[in]centerAn 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.

◆ makeEllipseVector()

EllipseVector lsst::meas::modelfit::MultiModel::makeEllipseVector ( ) const
overridevirtual

Return an uninitialized vector of afw::geom::ellipses::Ellipse with the parametrization expected by readEllipses() and writeEllipses().

Implements lsst::meas::modelfit::Model.

◆ makeGaussian()

static std::shared_ptr<Model> lsst::meas::modelfit::Model::makeGaussian ( CenterEnum  center,
double  radius = 1.0 
)
staticinherited

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().

Parameters
[in]centerAn enum specifying whether the model should have a fixed center (FIXED_CENTER) or parametrized center (SINGLE_CENTER or MULTI_CENTER).
[in]radiusThe 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)).

◆ makeShapeletFunction()

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
inherited

Create a MultiShapeletFunction object from a set of parameter vectors.

◆ readEllipses() [1/2]

void lsst::meas::modelfit::MultiModel::readEllipses ( EllipseConstIterator  ellipseIter,
Scalar nonlinearIter,
Scalar fixedIter 
) const
overridevirtual

Convert a vector of ellipses to a set of nonlinear+fixed parameter arrays.

Parameters
[in]ellipseIterIterator to the beginning of an ellipse vector, as returned by makeEllipseVector().
[out]nonlinearIterPointer to the beginning of a nonlinear parameter array.
[out]fixedIterPointer to the beginning of a fixed parameter array.
Warning
The ellipse iterator must point to an EllipseVector originally constructed by makeEllipseVector()
Calling writeEllipses() followed by readEllipses() does not guarantee that that the parameters on output will be the same as those on input, as the parameters may be degenerate. However, calling readEllipses() followed by writeEllipses() is guaranteed to round-trip the ellipses.

Implements lsst::meas::modelfit::Model.

◆ readEllipses() [2/2]

void lsst::meas::modelfit::Model::readEllipses ( EllipseVector const &  ellipses,
ndarray::Array< Scalar, 1, 1 > const &  nonlinear,
ndarray::Array< Scalar, 1, 1 > const &  fixed 
) const
inherited

Convert a vector of ellipses to a set of nonlinear+fixed parameter arrays.

Parameters
[in]ellipsesAn ellipse vector, as returned by makeEllipseVector().
[out]nonlinearOutput nonlinear parameter array.
[out]fixedOutput fixed parameter array.
Warning
The EllipseVector must have been originally constructed by makeEllipseVector()

◆ transformParameters()

virtual void lsst::meas::modelfit::Model::transformParameters ( LocalUnitTransform const &  transform,
ndarray::Array< Scalar, 1, 1 > const &  nonlinear,
ndarray::Array< Scalar, 1, 1 > const &  amplitudes,
ndarray::Array< Scalar, 1, 1 > const &  fixed 
) const
virtualinherited

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.

◆ writeEllipses() [1/2]

EllipseVector lsst::meas::modelfit::Model::writeEllipses ( ndarray::Array< Scalar const, 1, 1 > const &  nonlinear,
ndarray::Array< Scalar const, 1, 1 > const &  fixed 
) const
inherited

Convert a set of nonlinear+fixed parameter arrays to a vector of ellipses.

Parameters
[in]nonlinearnonlinear parameter array.
[in]fixedfixed 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.

◆ writeEllipses() [2/2]

void lsst::meas::modelfit::MultiModel::writeEllipses ( Scalar const *  nonlinearIter,
Scalar const *  fixedIter,
EllipseIterator  ellipseIter 
) const
overridevirtual

Convert a set of nonlinear+fixed parameter arrays to a vector of ellipses.

Parameters
[in]nonlinearIterPointer to the beginning of a nonlinear parameter array.
[in]fixedIterPointer to the beginning of a fixed parameter array.
[out]ellipseIterIterator to the beginning of an ellipse vector, as returned by makeEllipseVector().
Warning
The ellipse iterator must point to an EllipseVector originally constructed by makeEllipseVector()
Calling writeEllipses() followed by readEllipses() does not guarantee that that the parameters on output will be the same as those on input, as the parameters may be degenerate. However, calling readEllipses() followed by writeEllipses() is guaranteed to round-trip the ellipses.

Implements lsst::meas::modelfit::Model.


The documentation for this class was generated from the following file: