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)