lsst.meas.modelfit
g9a9c865167+ee76a57405
Toggle main menu visibility
Loading...
Searching...
No Matches
include
lsst
meas
modelfit
AdaptiveImportanceSampler.h
Go to the documentation of this file.
1
// -*- lsst-c++ -*-
2
/*
3
* LSST Data Management System
4
* Copyright 2008-2013 LSST Corporation.
5
*
6
* This product includes software developed by the
7
* LSST Project (http://www.lsst.org/).
8
*
9
* This program is free software: you can redistribute it and/or modify
10
* it under the terms of the GNU General Public License as published by
11
* the Free Software Foundation, either version 3 of the License, or
12
* (at your option) any later version.
13
*
14
* This program is distributed in the hope that it will be useful,
15
* but WITHOUT ANY WARRANTY; without even the implied warranty of
16
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
* GNU General Public License for more details.
18
*
19
* You should have received a copy of the LSST License Statement and
20
* the GNU General Public License along with this program. If not,
21
* see <http://www.lsstcorp.org/LegalNotices/>.
22
*/
23
24
#ifndef LSST_MEAS_MODELFIT_AdaptiveImportanceSampler_h_INCLUDED
25
#define LSST_MEAS_MODELFIT_AdaptiveImportanceSampler_h_INCLUDED
26
27
#include <map>
28
29
#include "lsst/pex/config.h"
30
#include "
lsst/afw/table/Schema.h
"
31
#include "
lsst/meas/modelfit/Sampler.h
"
32
#include "
lsst/meas/modelfit/Mixture.h
"
33
34
namespace
lsst
{
namespace
meas
{
namespace
modelfit
{
35
41
class
ImportanceSamplerControl
{
42
public
:
43
LSST_CONTROL_FIELD(
nSamples
,
int
,
"Number of Monte Carlo samples to draw"
);
44
LSST_CONTROL_FIELD(
nUpdateSteps
,
int
,
"Number of Expectation-Maximization update iterations"
);
45
LSST_CONTROL_FIELD(
tau1
,
double
,
"Damping parameter for E-M update (see Mixture::updateEM)"
);
46
LSST_CONTROL_FIELD(
tau2
,
double
,
"Damping parameter for E-M update (see Mixture::updateEM)"
);
47
LSST_CONTROL_FIELD(
48
targetPerplexity
,
double
,
49
"Minimum value for normalized perplexity after this iteration; if the actual value is less "
50
"than this, this iteration will be repeated up to maxRepeat times until the target is met. "
51
"In addition, if any previous iteration meets this target, this iteration will be skipped."
52
);
53
LSST_CONTROL_FIELD(
54
maxRepeat
,
int
,
55
"Maximum number of times this iteration will be repeated to meet the perplexityTarget"
56
);
57
58
ImportanceSamplerControl
() :
59
nSamples
(2000),
nUpdateSteps
(2),
tau1
(1E-4),
tau2
(0.5),
targetPerplexity
(1.0),
maxRepeat
(0)
60
{}
61
};
62
70
class
AdaptiveImportanceSampler
:
public
Sampler
{
71
public
:
72
83
AdaptiveImportanceSampler
(
84
afw::table::Schema
& sampleSchema,
85
std::shared_ptr<afw::math::Random>
rng,
86
std::map<int,ImportanceSamplerControl>
const
& ctrls,
87
bool
doSaveIterations=
false
88
);
89
90
void
run
(
91
SamplingObjective
const
& objective,
92
std::shared_ptr<Mixture>
proposal,
93
afw::table::BaseCatalog
& samples
94
)
const override
;
95
96
double
computeNormalizedPerplexity
(
afw::table::BaseCatalog
const
& samples)
const
;
97
98
double
computeEffectiveSampleSizeFraction
(
afw::table::BaseCatalog
const
& samples)
const
;
99
100
private
:
101
bool
_doSaveIterations;
102
std::shared_ptr<afw::math::Random>
_rng;
103
std::map<int,ImportanceSamplerControl>
_ctrls;
104
afw::table::Key<Scalar>
_weightKey;
105
afw::table::Key<Scalar>
_objectiveKey;
106
afw::table::Key<Scalar>
_proposalKey;
107
afw::table::Key< afw::table::Array<Scalar>
> _parametersKey;
108
afw::table::Key<int>
_iterCtrlKey;
109
afw::table::Key<int>
_iterRepeatKey;
110
};
111
112
}}}
// namespace lsst::meas::modelfit
113
114
#endif
// !LSST_MEAS_MODELFIT_AdaptiveImportanceSampler_h_INCLUDED
Mixture.h
Sampler.h
Schema.h
lsst::afw::table::Key
lsst::afw::table::Schema
lsst::meas::modelfit::AdaptiveImportanceSampler::computeNormalizedPerplexity
double computeNormalizedPerplexity(afw::table::BaseCatalog const &samples) const
lsst::meas::modelfit::AdaptiveImportanceSampler::computeEffectiveSampleSizeFraction
double computeEffectiveSampleSizeFraction(afw::table::BaseCatalog const &samples) const
lsst::meas::modelfit::AdaptiveImportanceSampler::run
void run(SamplingObjective const &objective, std::shared_ptr< Mixture > proposal, afw::table::BaseCatalog &samples) const override
lsst::meas::modelfit::AdaptiveImportanceSampler::AdaptiveImportanceSampler
AdaptiveImportanceSampler(afw::table::Schema &sampleSchema, std::shared_ptr< afw::math::Random > rng, std::map< int, ImportanceSamplerControl > const &ctrls, bool doSaveIterations=false)
Construct a new sampler.
lsst::meas::modelfit::ImportanceSamplerControl::targetPerplexity
double targetPerplexity
"Minimum value for normalized perplexity after this iteration; if the actual value is less " "than th...
Definition
AdaptiveImportanceSampler.h:52
lsst::meas::modelfit::ImportanceSamplerControl::nUpdateSteps
int nUpdateSteps
"Number of Expectation-Maximization update iterations" ;
Definition
AdaptiveImportanceSampler.h:44
lsst::meas::modelfit::ImportanceSamplerControl::ImportanceSamplerControl
ImportanceSamplerControl()
Definition
AdaptiveImportanceSampler.h:58
lsst::meas::modelfit::ImportanceSamplerControl::tau2
double tau2
"Damping parameter for E-M update (see Mixture::updateEM)" ;
Definition
AdaptiveImportanceSampler.h:46
lsst::meas::modelfit::ImportanceSamplerControl::maxRepeat
int maxRepeat
"Maximum number of times this iteration will be repeated to meet the perplexityTarget" ;
Definition
AdaptiveImportanceSampler.h:56
lsst::meas::modelfit::ImportanceSamplerControl::tau1
double tau1
"Damping parameter for E-M update (see Mixture::updateEM)" ;
Definition
AdaptiveImportanceSampler.h:45
lsst::meas::modelfit::ImportanceSamplerControl::nSamples
int nSamples
"Number of Monte Carlo samples to draw" ;
Definition
AdaptiveImportanceSampler.h:43
lsst::meas::modelfit::Sampler
Definition
Sampler.h:52
lsst::meas::modelfit::SamplingObjective
Definition
Sampler.h:33
std::map
lsst::afw::table::BaseCatalog
CatalogT< BaseRecord > BaseCatalog
lsst::meas::modelfit
Definition
overview.dox:3
lsst::meas
lsst
std::shared_ptr
Generated on
for lsst.meas.modelfit by
1.17.0