15 #ifndef ROOT_TMVA_PyMethodBase
16 #define ROOT_TMVA_PyMethodBase
42 typedef _object PyObject;
43 #define Py_single_input 256
55 class PyMethodBase :
public MethodBase {
61 PyMethodBase(
const TString &jobName,
62 Types::EMVA methodType,
63 const TString &methodTitle,
65 const TString &theOption =
"");
69 PyMethodBase(Types::EMVA methodType,
71 const TString &weightFile);
74 virtual ~PyMethodBase();
76 static void PyInitialize();
77 static int PyIsInitialized();
78 static void PyFinalize();
79 static void PySetProgramName(TString name);
80 static TString Py_GetProgramName();
82 PyObject *Eval(TString code);
83 static void Serialize(TString file,PyObject *classifier);
84 static Int_t UnSerialize(TString file,PyObject** obj);
86 virtual void Train() = 0;
88 virtual void Init() = 0;
89 virtual void DeclareOptions() = 0;
90 virtual void ProcessOptions() = 0;
92 virtual const Ranking *CreateRanking() = 0;
94 virtual Double_t GetMvaValue(Double_t *errLower = 0, Double_t *errUpper = 0) = 0;
96 Bool_t HasAnalysisType(Types::EAnalysisType type, UInt_t numberClasses, UInt_t numberTargets) = 0;
99 virtual void AddWeightsXMLTo(
void *parent)
const = 0;
100 virtual void ReadWeightsFromXML(
void *wghtnode) = 0;
101 virtual void ReadWeightsFromStream(std::istream &) = 0;
102 virtual void ReadWeightsFromStream(TFile &) {}
104 virtual void ReadModelFromFile() = 0;
107 virtual std::vector<Double_t> GetMvaValues(Long64_t firstEvt = 0, Long64_t lastEvt = -1, Bool_t logProgress =
false) = 0;
111 PyObject *fClassifier;
116 void PyRunString(TString code, TString errorMessage=
"Failed to run python code",
int start=Py_single_input);
119 static PyObject *fModuleBuiltin;
120 static PyObject *fEval;
121 static PyObject *fOpen;
124 static PyObject *fModulePickle;
125 static PyObject *fPickleDumps;
126 static PyObject *fPickleLoads;
128 static PyObject *fMain;
129 static PyObject *fGlobalNS;
132 ClassDef(PyMethodBase, 0)