MaCh3  2.6.1
Reference Guide
pyMaCh3.h
Go to the documentation of this file.
1 #pragma once
2 
5 
6 #include <pybind11/pybind11.h>
7 #include <pybind11/stl.h>
8 
9 #include "python/plotting.h"
10 #include "python/fitters.h"
11 #include "python/samples.h"
12 #include "python/manager.h"
13 #include "python/parameters.h"
14 #include "python/splines.h"
15 
20 
21  public:
22 
23  virtual ~MaCh3PyBinder() {};
24 
25  void initialise(py::module &m) {
26  initPlotting(m);
27  initFitters(m);
28  initSamples(m);
29  initManager(m);
30  initParameters(m);
31  initSplines(m);
32  }
33 
34  private:
36  //**These can be overwritten by experiments to set up their own pyMaCh3
37  virtual void initParametersExperiment(py::module &m_parameters) { (void)m_parameters; }
38  virtual void initPlottingExperiment(py::module &m_plotting) { (void)m_plotting; }
39  virtual void initFittersExperiment(py::module &m_fitters) { (void)m_fitters; }
40  virtual void initSamplesExperiment(py::module &m_samples) { (void)m_samples; }
41  virtual void initManagerExperiment(py::module &m_manager) { (void)m_manager; }
42  virtual void initSplinesExperiment(py::module &m_splines) { (void)m_splines; }
43  virtual void initModulesExperiment(py::module &m) { (void)m; }
45 
46  // These functions will be called to set up each of the python modules
47  // they call the core init<module name> functions and then the experiment
48  // specific ones
49  void initPlotting(py::module &m) {
50  auto m_plotting = m.def_submodule("plotting");
51  m_plotting.doc() = "This is a Python binding of MaCh3s C++ based plotting library.";
52 
53  initPlottingModule(m_plotting); // <- defined in python/plotting.cpp
54  initPlottingExperiment(m_plotting);
55  }
56  void initFitters(py::module &m) {
57  auto m_fitters = m.def_submodule("fitters");
58  m_fitters.doc() =
59  "This is a Python binding of MaCh3s C++ fitters library.";
60 
61  initFittersModule(m_fitters); // <- defined in python/fitters.cpp
62  initFittersExperiment(m_fitters);
63  }
64  void initSamples(py::module &m) {
65  auto m_samples = m.def_submodule("samples");
66 
67  m_samples.doc() =
68  "This is a Python binding of MaCh3s C++ based samples library.";
69 
70  initSamplesModule(m_samples); // <- defined in python/samples.cpp
71  initSamplesExperiment(m_samples);
72  }
73  void initManager(py::module &m) {
74  auto m_manager = m.def_submodule("manager");
75  m_manager.doc() =
76  "This is a Python binding of MaCh3s C++ based manager library.";
77 
78  initManagerModule(m_manager); // <- defined in python/manager.cpp
79  initManagerExperiment(m_manager);
80  }
81  void initParameters(py::module &m) {
82  auto m_parameters = m.def_submodule("parameters");
83  m_parameters.doc() =
84  "This is a Python binding of MaCh3s C++ parameters library.";
85 
86  initParametersModule(m_parameters); // <- defined in python/parameters.cpp
87  initParametersExperiment(m_parameters);
88  }
89  void initSplines(py::module &m) {
90  auto m_splines = m.def_submodule("splines");
91  m_splines.doc() =
92  "This is a Python binding of MaCh3s C++ based spline library.";
93 
94  initSplinesModule(m_splines); // <- defined in python/splines.cpp
95  initSplinesExperiment(m_splines);
96  }
97 };
98 
103 #define MAKE_PYMACH3_MDULE( PYBINDER_CLASS ) \
104 PYBIND11_MODULE( _pyMaCh3, m ) { \
105  PYBINDER_CLASS().initialise(m); \
106 }
Base binder class which is used to set up python bindings. Experiments should derive from this to all...
Definition: pyMaCh3.h:19
virtual void initParametersExperiment(py::module &m_parameters)
Definition: pyMaCh3.h:37
virtual void initModulesExperiment(py::module &m)
Definition: pyMaCh3.h:43
void initParameters(py::module &m)
Definition: pyMaCh3.h:81
void initManager(py::module &m)
Definition: pyMaCh3.h:73
virtual ~MaCh3PyBinder()
Definition: pyMaCh3.h:23
void initSamples(py::module &m)
Definition: pyMaCh3.h:64
void initPlotting(py::module &m)
Definition: pyMaCh3.h:49
virtual void initSplinesExperiment(py::module &m_splines)
Definition: pyMaCh3.h:42
virtual void initPlottingExperiment(py::module &m_plotting)
Definition: pyMaCh3.h:38
void initSplines(py::module &m)
Definition: pyMaCh3.h:89
virtual void initSamplesExperiment(py::module &m_samples)
Definition: pyMaCh3.h:40
void initFitters(py::module &m)
Definition: pyMaCh3.h:56
virtual void initManagerExperiment(py::module &m_manager)
Definition: pyMaCh3.h:41
virtual void initFittersExperiment(py::module &m_fitters)
Definition: pyMaCh3.h:39
void initialise(py::module &m)
Definition: pyMaCh3.h:25
void initFittersModule(py::module &m_fitters)
Definition: fitters.h:52
void initManagerModule(py::module &m_manager)
Definition: manager.h:16
void initParametersModule(py::module &m_parameters)
Definition: parameters.h:43
void initPlottingModule(py::module &m_plotting)
Definition: plotting.h:20
void initSamplesModule(py::module &m_samples)
Definition: samples.h:343
void initSplinesModule(py::module &m_splines)
Definition: splines.h:68