26#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
27#include <numpy/arrayobject.h>
47 if (python_version.
IsNull()) {
55 if (python_version[0] ==
'2' || python_version[0] ==
'3')
58 if (python_version[0] ==
'2')
60 else if (python_version[0] ==
'3')
73PyObject *PyMethodBase::fModuleBuiltin = NULL;
77PyObject *PyMethodBase::fModulePickle = NULL;
78PyObject *PyMethodBase::fPickleDumps = NULL;
79PyObject *PyMethodBase::fPickleLoads = NULL;
82PyObject *PyMethodBase::fGlobalNS = NULL;
88 :
MethodBase(jobName, methodType, methodTitle, dsi, theOption),
158 if (!pyIsInitialized) {
163 if (!pyIsInitialized) {
168 fMain = PyImport_AddModule(
"__main__");
182 #if PY_MAJOR_VERSION < 3
184 PyObject *bName = PyUnicode_FromString(
"__builtin__");
194 PyObject *bName = PyUnicode_FromString(
"builtins");
205 fEval = PyDict_GetItemString(mDict,
"eval");
206 fOpen = PyDict_GetItemString(mDict,
"open");
215 PyObject *pName = PyUnicode_FromString(
"pickle");
255 #if PY_MAJOR_VERSION < 3
256 Py_SetProgramName(
const_cast<char*
>(
name.Data()));
258 Py_SetProgramName((
wchar_t *)
name.Data());
279 return std::string(progName, progName +
mystrlen(progName));
289 if (!Py_IsInitialized())
return kFALSE;
310 PyObject *file_arg = Py_BuildValue(
"(ss)", path.
Data(),
"wb");
317 Py_DECREF(model_arg);
318 Py_DECREF(model_data);
331 PyObject *file_arg = Py_BuildValue(
"(ss)", path.
Data(),
"rb");
342 Py_DECREF(model_arg);
383 std::cout<<
"\nPython error message:\n";
385 throw std::runtime_error(
"\nFailed to run python code: "+code);
396 PyObject* encodedString = PyUnicode_AsUTF8String(
string);
409 std::vector<size_t>tupleVec;
410 for(
Py_ssize_t tupleIter=0;tupleIter<PyTuple_Size(tupleObject);++tupleIter){
411 auto itemObj = PyTuple_GetItem(tupleObject,tupleIter);
412 if (itemObj == Py_None)
413 tupleVec.push_back(0);
415 tupleVec.push_back((
size_t)PyLong_AsLong(itemObj));
428 std::vector<size_t>listVec;
429 for(
Py_ssize_t listIter=0; listIter<PyList_Size(listObject);++listIter){
430 listVec.push_back((
size_t)PyLong_AsLong(PyList_GetItem(listObject,listIter)));
size_t mystrlen(const char *s)
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t result
R__EXTERN TSystem * gSystem
Class that contains all the data information.
PyGILState_STATE m_GILState
Virtual base Class for all MVA method.
ostringstream derivative to redirect and format output
static std::vector< size_t > GetDataFromTuple(PyObject *tupleObject)
Utility function which retrieves and returns the values of the Tuple object as a vector of size_t.
static int PyIsInitialized()
Check Python interpreter initialization status.
static std::vector< size_t > GetDataFromList(PyObject *listObject)
Utility function which retrieves and returns the values of the List object as a vector of size_t.
static PyObject * fPickleDumps
PyObject * Eval(TString code)
Evaluate Python code.
static TString Py_GetProgramName()
Get program name from Python interpreter.
static void PyInitialize()
Initialize Python interpreter.
static void Serialize(TString file, PyObject *classifier)
Serialize Python object.
static Int_t UnSerialize(TString file, PyObject **obj)
Unserialize Python object.
static const char * PyStringAsString(PyObject *string)
Returns const char* from Python string in PyObject.
static PyObject * fPickleLoads
static void PySetProgramName(TString name)
Set program name for Python interpeter.
static PyObject * fGlobalNS
static PyObject * fModulePickle
static PyObject * fModuleBuiltin
PyMethodBase(const TString &jobName, Types::EMVA methodType, const TString &methodTitle, DataSetInfo &dsi, const TString &theOption="")
void PyRunString(TString code, TString errorMessage="Failed to run python code", int start=256)
Execute Python code from string.
const char * Data() const
TString & ReplaceAll(const TString &s1, const TString &s2)
virtual TString GetFromPipe(const char *command)
Execute command and return output in TString.
static constexpr double s
create variable transformations
TString Python_Executable()
Function to find current Python executable used by ROOT If Python2 is installed return "python" Inste...
MsgLogger & Endl(MsgLogger &ml)