lsst.meas.modelfit  13.0-10-g4e34388+11
likelihood.cc
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 #include "pybind11/pybind11.h"
25 
26 #include "numpy/arrayobject.h"
27 #include "ndarray/pybind11.h"
28 
30 
31 namespace py = pybind11;
32 using namespace pybind11::literals;
33 
34 namespace lsst {
35 namespace meas {
36 namespace modelfit {
37 namespace {
38 
39 using PyLikelihood = py::class_<Likelihood, std::shared_ptr<Likelihood>>;
40 
41 PYBIND11_PLUGIN(likelihood) {
42  py::module::import("lsst.meas.modelfit.model");
43 
44  py::module mod("likelihood");
45 
46  if (_import_array() < 0) {
47  PyErr_SetString(PyExc_ImportError, "numpy.core.multiarray failed to import");
48  return nullptr;
49  }
50 
51  PyLikelihood cls(mod, "Likelihood");
52  cls.def("getDataDim", &Likelihood::getDataDim);
53  cls.def("getAmplitudeDim", &Likelihood::getAmplitudeDim);
54  cls.def("getNonlinearDim", &Likelihood::getNonlinearDim);
55  cls.def("getFixedDim", &Likelihood::getFixedDim);
56  cls.def("getFixed", &Likelihood::getFixed);
57  cls.def("getData", &Likelihood::getData);
58  cls.def("getUnweightedData", &Likelihood::getUnweightedData);
59  cls.def("getWeights", &Likelihood::getWeights);
60  cls.def("getVariance", &Likelihood::getVariance);
61  cls.def("getModel", &Likelihood::getModel);
62  cls.def("computeModelMatrix", &Likelihood::computeModelMatrix, "modelMatrix"_a, "nonlinear"_a,
63  "doApplyWeights"_a = true);
64 
65  return mod.ptr();
66 }
67 }
68 }
69 }
70 } // namespace lsst::meas::modelfit::anonymous
Definition: overview.dox:3