LSST Applications g0b6bd0c080+a72a5dd7e6,g1182afd7b4+2a019aa3bb,g17e5ecfddb+2b8207f7de,g1d67935e3f+06cf436103,g38293774b4+ac198e9f13,g396055baef+6a2097e274,g3b44f30a73+6611e0205b,g480783c3b1+98f8679e14,g48ccf36440+89c08d0516,g4b93dc025c+98f8679e14,g5c4744a4d9+a302e8c7f0,g613e996a0d+e1c447f2e0,g6c8d09e9e7+25247a063c,g7271f0639c+98f8679e14,g7a9cd813b8+124095ede6,g9d27549199+a302e8c7f0,ga1cf026fa3+ac198e9f13,ga32aa97882+7403ac30ac,ga786bb30fb+7a139211af,gaa63f70f4e+9994eb9896,gabf319e997+ade567573c,gba47b54d5d+94dc90c3ea,gbec6a3398f+06cf436103,gc6308e37c7+07dd123edb,gc655b1545f+ade567573c,gcc9029db3c+ab229f5caf,gd01420fc67+06cf436103,gd877ba84e5+06cf436103,gdb4cecd868+6f279b5b48,ge2d134c3d5+cc4dbb2e3f,ge448b5faa6+86d1ceac1d,gecc7e12556+98f8679e14,gf3ee170dca+25247a063c,gf4ac96e456+ade567573c,gf9f5ea5b4d+ac198e9f13,gff490e6085+8c2580be5c,w.2022.27
LSST Data Management Base Package
kernelCandidate.cc
Go to the documentation of this file.
1/*
2 * LSST Data Management System
3 *
4 * This product includes software developed by the
5 * LSST Project (http://www.lsst.org/).
6 * See the COPYRIGHT file
7 *
8 * This program is free software: you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation, either version 3 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the LSST License Statement and
19 * the GNU General Public License along with this program. If not,
20 * see <https://www.lsstcorp.org/LegalNotices/>.
21 */
22#include "pybind11/pybind11.h"
23#include "pybind11/eigen.h"
24#include "pybind11/stl.h"
25
26#include "Eigen/Core"
27#include "ndarray/pybind11.h"
28
29#include <memory>
30#include <string>
31
34
35namespace py = pybind11;
36using namespace pybind11::literals;
37
38namespace lsst {
39namespace ip {
40namespace diffim {
41
42namespace {
43
51template <typename PixelT>
52void declareKernelCandidate(py::module &mod, std::string const &suffix) {
53 py::class_<KernelCandidate<PixelT>, std::shared_ptr<KernelCandidate<PixelT>>,
54 afw::math::SpatialCellImageCandidate>
55 cls(mod, ("KernelCandidate" + suffix).c_str());
56
57 using CandidateSwitch = typename KernelCandidate<PixelT>::CandidateSwitch;
58
59 py::enum_<CandidateSwitch>(cls, "CandidateSwitch")
60 .value("ORIG", CandidateSwitch::ORIG)
61 .value("PCA", CandidateSwitch::PCA)
62 .value("RECENT", CandidateSwitch::RECENT)
63 .export_values();
64
65 cls.def(py::init<float const, float const, std::shared_ptr<afw::image::MaskedImage<PixelT>> const &,
66 std::shared_ptr<afw::image::MaskedImage<PixelT>> const &, daf::base::PropertySet const &>(),
67 "xCenter"_a, "yCenter"_a, "templateMaskedImage"_a, "scienceMaskedImage"_a, "ps"_a);
68 cls.def(py::init<std::shared_ptr<afw::table::SourceRecord> const &,
69 std::shared_ptr<afw::image::MaskedImage<PixelT>> const &,
70 std::shared_ptr<afw::image::MaskedImage<PixelT>> const &, daf::base::PropertySet const &>(),
71 "source"_a, "templateMaskedImage"_a, "scienceMaskedImage"_a, "ps"_a);
72
73 cls.def("getCandidateRating", &KernelCandidate<PixelT>::getCandidateRating);
74 cls.def("getSource", &KernelCandidate<PixelT>::getSource);
75 cls.def("getTemplateMaskedImage", &KernelCandidate<PixelT>::getTemplateMaskedImage);
76 cls.def("getScienceMaskedImage", &KernelCandidate<PixelT>::getScienceMaskedImage);
77 cls.def("getKernel", &KernelCandidate<PixelT>::getKernel, "cand"_a);
78 cls.def("getBackground", &KernelCandidate<PixelT>::getBackground, "cand"_a);
79 cls.def("getKsum", &KernelCandidate<PixelT>::getKsum, "cand"_a);
80 cls.def("getKernelImage", &KernelCandidate<PixelT>::getKernelImage, "cand"_a);
81 cls.def("getImage", &KernelCandidate<PixelT>::getImage);
82 cls.def("getKernelSolution", &KernelCandidate<PixelT>::getKernelSolution, "cand"_a);
83 cls.def("getDifferenceImage",
84 (afw::image::MaskedImage<PixelT> (KernelCandidate<PixelT>::*)(CandidateSwitch)) &
86 "cand"_a);
87 cls.def("getDifferenceImage", (afw::image::MaskedImage<PixelT> (KernelCandidate<PixelT>::*)(
90 "kernel"_a, "background"_a);
91 cls.def("isInitialized", &KernelCandidate<PixelT>::isInitialized);
92 cls.def("build", (void (KernelCandidate<PixelT>::*)(afw::math::KernelList const &)) &
94 "basisList"_a);
95 cls.def("build",
96 (void (KernelCandidate<PixelT>::*)(afw::math::KernelList const &, Eigen::MatrixXd const &)) &
98 "basisList"_a, "hMat"_a);
99 mod.def("makeKernelCandidate",
100 (std::shared_ptr<KernelCandidate<PixelT>>(*)(
101 float const, float const, std::shared_ptr<afw::image::MaskedImage<PixelT>> const &,
102 std::shared_ptr<afw::image::MaskedImage<PixelT>> const &, daf::base::PropertySet const &)) &
104 "xCenter"_a, "yCenter"_a, "templateMaskedImage"_a, "scienceMaskedImage"_a, "ps"_a);
105 mod.def("makeKernelCandidate",
106 (std::shared_ptr<KernelCandidate<PixelT>>(*)(
108 std::shared_ptr<afw::image::MaskedImage<PixelT>> const &,
109 std::shared_ptr<afw::image::MaskedImage<PixelT>> const &, daf::base::PropertySet const &)) &
111 "source"_a, "templateMaskedImage"_a, "scienceMaskedImage"_a, "ps"_a);
112}
113
114} // namespace lsst::ip::diffim::<anonymous>
115
116PYBIND11_MODULE(kernelCandidate, mod) {
117 py::module::import("lsst.afw.image");
118 py::module::import("lsst.afw.math");
119 py::module::import("lsst.afw.table");
120 py::module::import("lsst.daf.base");
121
122 declareKernelCandidate<float>(mod, "F");
123}
124
125} // diffim
126} // ip
127} // lsst
Class used by SpatialModelCell for spatial Kernel fitting.
std::shared_ptr< ImageT const > getImage() const
afw::image::MaskedImage< PixelT > getDifferenceImage(CandidateSwitch cand)
Calculate associated difference image using internal solutions.
double getCandidateRating() const
Return Candidate rating.
MaskedImagePtr getTemplateMaskedImage()
Return pointers to the image pixels used in kernel determination.
double getBackground(CandidateSwitch cand) const
double getKsum(CandidateSwitch cand) const
std::shared_ptr< StaticKernelSolution< PixelT > > getKernelSolution(CandidateSwitch cand) const
std::shared_ptr< afw::math::Kernel > getKernel(CandidateSwitch cand) const
Return results of kernel solution.
SourcePtr getSource() const
Return the original source.
std::shared_ptr< ImageT > getKernelImage(CandidateSwitch cand) const
void build(afw::math::KernelList const &basisList)
Core functionality of KernelCandidate, to build and fill a KernelSolution.
std::vector< std::shared_ptr< Kernel > > KernelList
Definition: Kernel.h:462
PYBIND11_MODULE(basisLists, mod)
Definition: basisLists.cc:39
std::shared_ptr< KernelCandidate< PixelT > > makeKernelCandidate(float const xCenter, float const yCenter, std::shared_ptr< afw::image::MaskedImage< PixelT > > const &templateMaskedImage, std::shared_ptr< afw::image::MaskedImage< PixelT > > const &scienceMaskedImage, daf::base::PropertySet const &ps)
Return a KernelCandidate pointer of the right sort.
A base class for image defects.