24 #include "pybind11/pybind11.h" 26 #include "lsst/pex/config/python.h" 28 #include "lsst/afw/table/BaseRecord.h" 29 #include "lsst/afw/table/BaseTable.h" 30 #include "lsst/afw/table/Catalog.h" 32 namespace py = pybind11;
40 using PyImportanceSamplerControl =
41 py::class_<ImportanceSamplerControl, std::shared_ptr<ImportanceSamplerControl>>;
42 using PyAdaptiveImportanceSampler =
43 py::class_<AdaptiveImportanceSampler, std::shared_ptr<AdaptiveImportanceSampler>, Sampler>;
48 py::module::import(
"lsst.afw.table");
49 py::module::import(
"lsst.afw.math");
50 py::module::import(
"lsst.meas.modelfit.sampler");
51 py::module::import(
"lsst.meas.modelfit.mixture");
53 PyImportanceSamplerControl clsImportanceSamplerControl(mod,
"ImportanceSamplerControl");
54 clsImportanceSamplerControl.def(py::init<>());
55 LSST_DECLARE_CONTROL_FIELD(clsImportanceSamplerControl, ImportanceSamplerControl, nSamples);
56 LSST_DECLARE_CONTROL_FIELD(clsImportanceSamplerControl, ImportanceSamplerControl, nUpdateSteps);
57 LSST_DECLARE_CONTROL_FIELD(clsImportanceSamplerControl, ImportanceSamplerControl, tau1);
58 LSST_DECLARE_CONTROL_FIELD(clsImportanceSamplerControl, ImportanceSamplerControl, tau2);
59 LSST_DECLARE_CONTROL_FIELD(clsImportanceSamplerControl, ImportanceSamplerControl, targetPerplexity);
60 LSST_DECLARE_CONTROL_FIELD(clsImportanceSamplerControl, ImportanceSamplerControl, maxRepeat);
62 PyAdaptiveImportanceSampler clsAdaptiveImportanceSampler(mod,
"AdaptiveImportanceSampler");
63 clsAdaptiveImportanceSampler.def(py::init<afw::table::Schema &, std::shared_ptr<afw::math::Random>,
64 std::map<int, ImportanceSamplerControl>
const &,
bool>(),
65 "sampleSchema"_a,
"rng"_a,
"ctrls"_a,
"doSaveIteration"_a =
false);
67 clsAdaptiveImportanceSampler.def(
"computeNormalizedPerplexity",
68 &AdaptiveImportanceSampler::computeNormalizedPerplexity);
69 clsAdaptiveImportanceSampler.def(
"computeEffectiveSampleSizeFraction",
70 &AdaptiveImportanceSampler::computeEffectiveSampleSizeFraction);