LSSTApplications  11.0-24-g0a022a1,14.0+64,15.0,15.0+1,15.0-1-g14e9bfd,15.0-1-g1eca518,15.0-1-g499c38d,15.0-1-g60afb23,15.0-1-g6668b0b,15.0-1-g788a293,15.0-1-g82223af,15.0-1-ga91101e,15.0-1-gae1598d,15.0-1-gc45031d,15.0-1-gd076f1f,15.0-1-gf4f1c34,15.0-1-gfe1617d,15.0-16-g953e39cab,15.0-2-g2010ef9,15.0-2-g33d94b3,15.0-2-g5218728,15.0-2-g947dc0d,15.0-3-g9103c06,15.0-3-ga03b4ca,15.0-3-ga659d1f3,15.0-3-ga695220+2,15.0-3-gaec6799,15.0-3-gb7a597c,15.0-3-gd5b9ff95,15.0-4-g0478fed+2,15.0-4-g45f767a,15.0-4-gff20472+2,15.0-6-ge2d9597
LSSTDataManagementBasePackage
functor.cc
Go to the documentation of this file.
1 /*
2  * LSST Data Management System
3  * Copyright 2008-2016 AURA/LSST.
4  *
5  * This product includes software developed by the
6  * LSST Project (http://www.lsst.org/).
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 
23 #include "pybind11/pybind11.h"
24 
25 #include "lsst/afw/geom/Functor.h"
26 
27 namespace py = pybind11;
28 using namespace pybind11::literals;
29 
30 namespace lsst {
31 namespace afw {
32 namespace geom {
33 namespace {
34 
35 using PyFunctor = py::class_<Functor, std::shared_ptr<Functor>>;
36 using PyLinearFunctor = py::class_<LinearFunctor, std::shared_ptr<LinearFunctor>, Functor>;
37 
39  py::module mod("functor");
40 
41  /* Functor */
42 
43  PyFunctor clsFunctor(mod, "Functor");
44  clsFunctor.def("__call__", &Functor::operator());
45  clsFunctor.def("inverse", &Functor::inverse, "y"_a, "tol"_a = 1e-10, "maxiter"_a = 1000);
46  clsFunctor.def("derivative", &Functor::derivative);
47 
48  /* LinearFunctor */
49 
50  PyLinearFunctor clsLinearFunctor(mod, "LinearFunctor");
51  clsLinearFunctor.def(py::init<double, double>(), "slope"_a, "intercept"_a);
52  clsLinearFunctor.def("__call__", &LinearFunctor::operator());
53  clsLinearFunctor.def("derivative", &LinearFunctor::derivative);
54 
55  return mod.ptr();
56 }
57 }
58 }
59 }
60 } // namespace lsst::afw::geom::<anonymous>
PYBIND11_PLUGIN(_cameraSys)
Definition: cameraSys.cc:62
A base class for image defects.
Definition: cameraGeom.dox:3