Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
Envelope.h
Go to the documentation of this file.
1 // @(#)root/tmva:$Id$
2 // Author: Omar Zapata 2016
3 
4 /*************************************************************************
5  * Copyright (C) 2016, Omar Andres Zapata Mesa *
6  * All rights reserved. *
7  * *
8  * For the licensing terms see $ROOTSYS/LICENSE. *
9  * For the list of contributors see $ROOTSYS/README/CREDITS. *
10  *************************************************************************/
11 #ifndef ROOT_TMVA_Envelope
12 #define ROOT_TMVA_Envelope
13 
14 #include <sstream>
15 #include<iostream>
16 #include <memory>
17 
18 #include <TROOT.h>
19 #include <TStopwatch.h>
20 
21 #ifndef _MSC_VER
22 #include <TProcPool.h>
23 #endif
24 
25 #include <TStopwatch.h>
26 
27 #include <TMVA/OptionMap.h>
28 #include <TMVA/Config.h>
29 #include <TMVA/Tools.h>
30 #include <TMVA/DataLoader.h>
31 #include <TMVA/DataLoader.h>
32 
33 /*! \class TMVA::Envelope
34  * Abstract base class for all high level ml algorithms,
35  * you can book ml methods like BDT, MLP. SVM etc..
36  * and set a TMVA::DataLoader object to run your code
37  * in the overloaded method Evaluate.
38 \ingroup TMVA
39 
40 Base class for all machine learning algorithms
41 
42 */
43 
44 namespace TMVA {
45 
46  class Envelope:public Configurable
47  {
48  protected:
49  std::vector<OptionMap> fMethods; //! Booked method information
50  std::shared_ptr<DataLoader> fDataLoader; //! data
51  std::shared_ptr<TFile> fFile; //! file to save the results
52  Bool_t fModelPersistence; //! flag to save the trained model
53  Bool_t fVerbose; //! flag for extra information
54  TString fTransformations; //! List of transformations to test
55  Bool_t fSilentFile; //! if true dont produce file output
56 #ifndef _MSC_VER
57  TProcPool fWorkers; //! procpool object
58 #endif
59  UInt_t fJobs; //! number of jobs to run some high level algorithm in parallel
60  TStopwatch fTimer; //! timer to measute the time.
61 
62  Envelope(const TString &name, DataLoader *dataloader = nullptr, TFile *file = nullptr,
63  const TString options = "");
64 
65  public:
66  /**
67  Default destructor
68  */
69  ~Envelope();
70 
71  virtual void BookMethod( TString methodname, TString methodtitle, TString options = "");
72  virtual void BookMethod( Types::EMVA method, TString methodtitle, TString options = "");
73 
74  // parse the internal option string
75  virtual void ParseOptions();
76 
77  Bool_t IsSilentFile();
78  TFile* GetFile();
79  void SetFile(TFile *file);
80  Bool_t HasMethod(TString methodname, TString methodtitle);
81 
82  DataLoader *GetDataLoader();
83  void SetDataLoader(DataLoader *dalaloader);
84  Bool_t IsModelPersistence();
85  void SetModelPersistence(Bool_t status=kTRUE);
86  Bool_t IsVerbose();
87  void SetVerbose(Bool_t status);
88 
89  /**
90  Virtual method to be implemented with your algorithm.
91  */
92  virtual void Evaluate() = 0;
93 
94  std::vector<OptionMap> &GetMethods();
95 
96  protected:
97  /**
98  Utility method to get TMVA::DataInputHandler reference from the DataLoader.
99  \return TMVA::DataInputHandler reference.
100  */
101  DataInputHandler &GetDataLoaderDataInput() { return fDataLoader->DataInput(); }
102 
103  /**
104  Utility method to get TMVA::DataSetInfo reference from the DataLoader.
105  \return TMVA::DataSetInfo reference.
106  */
107  DataSetInfo &GetDataLoaderDataSetInfo() { return fDataLoader->GetDataSetInfo(); }
108 
109  /**
110  Utility method to get TMVA::DataSetManager pointer from the DataLoader.
111  \return TMVA::DataSetManager pointer.
112  */
113  DataSetManager *GetDataLoaderDataSetManager()
114  {
115  return fDataLoader->GetDataSetInfo().GetDataSetManager();
116  }
117 
118  /**
119  Utility method to get base dir directory from current file.
120  \return TDirectory* pointer.
121  */
122  TDirectory *RootBaseDir() { return (TDirectory *)fFile.get(); }
123 
124  void WriteDataInformation(TMVA::DataSetInfo &fDataSetInfo, TMVA::Types::EAnalysisType fAnalysisType);
125 
126  ClassDef(Envelope, 0);
127  };
128 }
129 
130 #endif