A collection of Sources comprising a ParametricModel of Data. More...
#include <model.h>
Public Types | |
| typedef GaussianEvaluator< T, Image, Indices > | Evaluator |
| typedef std::map< std::reference_wrapper< const Channel >, std::vector< std::unique_ptr< const Gaussians > > > | GaussiansMap |
| typedef Data< T, Image, Mask > | ModelData |
| typedef ModelData::Observation | Observation |
Public Member Functions | |
| Model (std::shared_ptr< const ModelData > data, PsfModels &psfmodels, Sources &sources, Priors &priors) | |
| void | add_extra_param_map (const Channel &channel, ExtraParamMap &map_extra, const GradParamMap &map_grad, ParameterMap &offsets) const override |
| void | add_extra_param_factors (const Channel &channel, ExtraParamFactors &factors) const override |
| void | add_grad_param_map (const Channel &channel, GradParamMap &map, ParameterMap &offsets) const override |
| void | add_grad_param_factors (const Channel &channel, GradParamFactors &factors) const override |
| std::vector< double > | compute_loglike_grad (bool include_prior=true, bool print=false, bool verify=false, double findiff_frac=1e-5, double findiff_add=1e-5, double rtol=1e-3, double atol=1e-8) |
| std::unique_ptr< Image > | compute_hessian (bool transformed=false, bool include_prior=true, std::optional< HessianOptions > options=std::nullopt, bool print=false) |
| std::vector< double > | evaluate (bool print=false, bool normalize_loglike=false) |
| double | evaluate_observation (size_t idx) |
| std::shared_ptr< const ModelData > | get_data () const |
| Return _data. | |
| EvaluatorMode | get_mode () const |
| std::unique_ptr< const lsst::gauss2d::Gaussians > | get_gaussians (const Channel &channel) const override |
| std::vector< double > | get_loglike_const_terms () |
| size_t | get_n_gaussians (const Channel &channel) const override |
| Return the number of Gaussian sub-components controlled by this model. | |
| std::vector< std::shared_ptr< Image > > | get_outputs () const |
| Return _outputs (output Image instances for each Observation in _data) | |
| std::vector< std::pair< ParamBaseCRef, size_t > > | get_offsets_parameters () const |
| ParamRefs & | get_parameters (ParamRefs ¶ms, ParamFilter *filter=nullptr) const override |
| ParamCRefs & | get_parameters_const (ParamCRefs ¶ms, ParamFilter *filter=nullptr) const override |
| Same as get_parameters(), but for const refs. | |
| ParamRefs & | get_parameters_observation (ParamRefs ¶ms, size_t idx, ParamFilter *filter=nullptr) const |
| Same as get_parameters(), but for a single Observation with index idx in _data. | |
| ParamCRefs & | get_parameters_observation_const (ParamCRefs ¶ms, size_t idx, ParamFilter *filter=nullptr) const |
| Same as get_parameters_const(), but for a single Observation with index idx in _data. | |
| Priors | get_priors () const |
| Return _priors, the list of Prior instances. | |
| PsfModels | get_psfmodels () const |
| Return _psfmodels, the list of PsfModel instances for each Observation in _data. | |
| Sources | get_sources () const |
| Return _sources, the list of Source instances for each Observation in _data. | |
| void | set_extra_param_factors (const Channel &channel, ExtraParamFactors &factors, size_t index) const override |
| void | set_grad_param_factors (const Channel &channel, GradParamFactors &factors, size_t index) const override |
| void | setup_evaluators (EvaluatorMode mode=EvaluatorMode::image, std::vector< std::vector< std::shared_ptr< Image > > > outputs={}, std::vector< std::shared_ptr< Image > > residuals={}, std::vector< std::shared_ptr< Image > > outputs_prior={}, std::shared_ptr< Image > residuals_prior=nullptr, bool force=false, bool print=false) |
| size_t | size () const |
| Get the size of this->_data. | |
| std::string | repr (bool name_keywords=false, std::string_view namespace_separator=Object::CC_NAMESPACE_SEPARATOR) const override |
| std::string | str () const override |
| std::vector< std::string > | verify_jacobian (double findiff_frac=1e-5, double findiff_add=1e-5, double rtol=1e-3, double atol=1e-3, double max_ll_diff=0) |
Public Member Functions inherited from lsst::gauss2d::fit::Parametric | |
| ParamRefs | get_parameters_new (ParamFilter *filter=nullptr) const |
| Same as get_parameters(), but returning a new vector. | |
| ParamCRefs | get_parameters_const_new (ParamFilter *filter=nullptr) const |
| Same as get_parameters_const(), but returning a new vector. | |
A collection of Sources comprising a ParametricModel of Data.
|
inlineexplicit |
Construct a Model instance from Data, PsfModels, Sources and Priors.
| data | The data to model. |
| psfmodels | A vector of PSF models, ordered to match each Observation in data. |
| sources | A vector of Source models. |
| priors | A vector of Prior likelihoods. |
|
inlineoverridevirtual |
Add extra Parameter gradient factors to an existing vector.
| channel | The Channel to add factors for. |
| factors | The ExtraParamFactors to add to. |
Implements lsst::gauss2d::fit::ParametricModel.
|
inlineoverridevirtual |
Add extra Parameter indices to a map.
| channel | The Channel to add indices for. |
| map_extra | The ExtraParamMap to add to. |
| map_grad | The completed GradParamMap. |
| offsets | A map of index offsets for Parameters that have already been added. |
Implements lsst::gauss2d::fit::ParametricModel.
|
inlineoverridevirtual |
Add Parameter gradient factors to an existing map.
| channel | The Channel to add factors for. |
| factors | The GradParamFactors to add to. |
Implements lsst::gauss2d::fit::ParametricModel.
|
inlineoverridevirtual |
Add Parameter gradient indices to an existing map.
| channel | The Channel to add indices for. |
| map | The map to add to. |
| offsets | A map of index offsets for Parameters that have already been added. |
Implements lsst::gauss2d::fit::ParametricModel.
|
inline |
Compute the Hessian matrix (second order partial derivatives) of the log likehood.
| transformed | Whether the matrix should be computed for transformed parameters or not If not, parameter transforms are temporarily removed. |
| include_prior | Whether to include the prior likelihood(s) in the Hessian. |
| options | Options for computing the Hessian via finite differencing of loglikelihood gradients. If null, the Hessian is estimated as J^T J (where J is the Jacobian). |
|
inline |
Compute the gradient (partial first derivative) of the log-likelihood for each free parameter.
| include_prior | Whether to include the prior likelihood(s) in the gradients. |
| Whether to print diagnostic/debugging information. | |
| verify | Whether to verify the values by comparing to finite differences. |
| findiff_frac | The value of the finite difference increment, as a fraction of the parameter value. |
| findiff_add | The minimum value of the finite difference increment. |
| rtol | The allowed relative tolerance in the Jacobian as compared to the finite difference. |
| atol | The allowed absolute tolerance in the Jacobian as compared to the finite difference. |
|
inline |
Evaluate the model for every Observation in _data.
| Whether to print diagnostic statements to stdout. | |
| normalize_loglike | Whether to include the normalizing (variance-dependent) term in the log likelihood. If false, the log likelihood for a model with no residuals is 0. |
|
inline |
Evaluate a single observation with the given index in _data.
| idx | The numeric index of the observation. |
|
inlineoverridevirtual |
Return the vector of Gaussian sub-components controlled by this model.
| channel | The Channel to return Gaussians for. |
Implements lsst::gauss2d::fit::ParametricModel.
|
inline |
Get the constant (variance-dependent) terms of the log likelihood for each observation.
|
inlineoverridevirtual |
Return the number of Gaussian sub-components controlled by this model.
Implements lsst::gauss2d::fit::ParametricModel.
|
inlineoverridevirtual |
Add Parameter refs matching the filter to a vector, in order.
| params | The vector to add to. |
| filter | The filter to apply to this Object's parameters. |
Implements lsst::gauss2d::fit::Parametric.
|
inlineoverridevirtual |
Same as get_parameters(), but for const refs.
Implements lsst::gauss2d::fit::Parametric.
|
inlineoverridevirtual |
Set extra Parameter gradient factors in an existing map.
| channel | The Channel to set factors for. |
| factors | The ExtraParamFactors to set factors for. |
| index | The index to begin setting factors at. |
Implements lsst::gauss2d::fit::ParametricModel.
|
inlineoverridevirtual |
Set Parameter gradient factors in an existing map.
| channel | The Channel to set factors for. |
| factors | The GradParamFactors to set factors for. |
| index | The index to begin setting factors at. |
Implements lsst::gauss2d::fit::ParametricModel.
|
inline |
Setup Evaluator instances for every Observation in _data using the given EvaluatorMode.
| mode | The EvaluatorMode to use for all Evaluator instances. |
| outputs | A vector of vectors of Image outputs for each Evaluator (created if empty and needed). |
| residuals | A vector of residual Images for each Evaluator (created if empty and needed). |
| outputs_prior | A vector of prior output (Jacobian) Images for each Evaluator (created if empty and needed). |
| residuals_prior | A vector of prior residual Images for each Evaluator (created if empty and needed). |
| force | Whether to force setting up even if already set up in the same mode |
| Whether to print diagnostic statements to stdout. |
|
inline |
Verify that the Jacobian is correct by comparing to finite differences.
| findiff_frac | The value of the finite difference increment, as a fraction of the parameter value. |
| findiff_add | The minimum value of the finite difference increment. |
| rtol | The allowed relative tolerance in the Jacobian as compared to the finite difference. |
| atol | The allowed absolute tolerance in the Jacobian as compared to the finite difference. |
| max_ll_diff | The maximum allowed difference between equivalent log-likelihood evaluations. Must be >= 0 and should only be a few orders of magnitude larger than machine epsilon. |