MaCh3  2.5.0
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 
27  initPlotting(m);
28  initFitters(m);
29  initSamples(m);
30  initManager(m);
31  initParameters(m);
32  initSplines(m);
33 
34  }
35 
36  private:
38  //**These can be overwritten by experiments to set up their own pyMaCh3
39  virtual void initParametersExperiment(py::module &m_parameters) { (void)m_parameters; }
40  virtual void initPlottingExperiment(py::module &m_plotting) { (void)m_plotting; }
41  virtual void initFittersExperiment(py::module &m_fitters) { (void)m_fitters; }
42  virtual void initSamplesExperiment(py::module &m_samples) { (void)m_samples; }
43  virtual void initManagerExperiment(py::module &m_manager) { (void)m_manager; }
44  virtual void initSplinesExperiment(py::module &m_splines) { (void)m_splines; }
45  virtual void initModulesExperiment(py::module &m) { (void)m; }
47 
48  // These functions will be called to set up each of the python modules
49  // they call the core init<module name> functions and then the experiment
50  // specific ones
51  void initPlotting(py::module &m) {
52 
53  auto m_plotting = m.def_submodule("plotting");
54  m_plotting.doc() = "This is a Python binding of MaCh3s C++ based plotting library.";
55 
56  initPlottingModule(m_plotting); // <- defined in python/plotting.cpp
57  initPlottingExperiment(m_plotting);
58  }
59  void initFitters(py::module &m) {
60 
61  auto m_fitters = m.def_submodule("fitters");
62  m_fitters.doc() =
63  "This is a Python binding of MaCh3s C++ fitters library.";
64 
65  initFittersModule(m_fitters); // <- defined in python/fitters.cpp
66  initFittersExperiment(m_fitters);
67  }
68  void initSamples(py::module &m) {
69 
70  auto m_samples = m.def_submodule("samples");
71 
72  m_samples.doc() =
73  "This is a Python binding of MaCh3s C++ based samples library.";
74 
75  initSamplesModule(m_samples); // <- defined in python/samples.cpp
76  initSamplesExperiment(m_samples);
77  }
78  void initManager(py::module &m) {
79 
80  auto m_manager = m.def_submodule("manager");
81  m_manager.doc() =
82  "This is a Python binding of MaCh3s C++ based manager library.";
83 
84  initManagerModule(m_manager); // <- defined in python/manager.cpp
85  initManagerExperiment(m_manager);
86  }
87  void initParameters(py::module &m) {
88 
89  auto m_parameters = m.def_submodule("parameters");
90  m_parameters.doc() =
91  "This is a Python binding of MaCh3s C++ parameters library.";
92 
93  initParametersModule(m_parameters); // <- defined in python/parameters.cpp
94  initParametersExperiment(m_parameters);
95  }
96  void initSplines(py::module &m) {
97 
98  auto m_splines = m.def_submodule("splines");
99  m_splines.doc() =
100  "This is a Python binding of MaCh3s C++ based spline library.";
101 
102  initSplinesModule(m_splines); // <- defined in python/splines.cpp
103  initSplinesExperiment(m_splines);
104  }
105 
106 };
107 
112 #define MAKE_PYMACH3_MDULE( PYBINDER_CLASS ) \
113 PYBIND11_MODULE( _pyMaCh3, m ) { \
114  PYBINDER_CLASS().initialise(m); \
115 }
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:39
virtual void initModulesExperiment(py::module &m)
Definition: pyMaCh3.h:45
void initParameters(py::module &m)
Definition: pyMaCh3.h:87
void initManager(py::module &m)
Definition: pyMaCh3.h:78
virtual ~MaCh3PyBinder()
Definition: pyMaCh3.h:23
void initSamples(py::module &m)
Definition: pyMaCh3.h:68
void initPlotting(py::module &m)
Definition: pyMaCh3.h:51
virtual void initSplinesExperiment(py::module &m_splines)
Definition: pyMaCh3.h:44
virtual void initPlottingExperiment(py::module &m_plotting)
Definition: pyMaCh3.h:40
void initSplines(py::module &m)
Definition: pyMaCh3.h:96
virtual void initSamplesExperiment(py::module &m_samples)
Definition: pyMaCh3.h:42
void initFitters(py::module &m)
Definition: pyMaCh3.h:59
virtual void initManagerExperiment(py::module &m_manager)
Definition: pyMaCh3.h:43
virtual void initFittersExperiment(py::module &m_fitters)
Definition: pyMaCh3.h:41
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:423
void initSplinesModule(py::module &m_splines)
Definition: splines.h:68