Belle II Software  release-05-02-19
Method Class Reference
Inheritance diagram for Method:
Collaboration diagram for Method:

Public Member Functions

def __init__ (self, identifier)
 
def train_teacher (self, datafiles, treename, general_options=None, specific_options=None)
 
def apply_expert (self, datafiles, treename)
 

Public Attributes

 identifier
 Identifier of the method.
 
 weightfile
 Weightfile of the method.
 
 general_options
 General options of the method.
 
 specific_options
 Specific options of the method.
 
 importances
 Dictionary of the variable importances calculated by the mehtod.
 
 variables
 List of variables sorted by their importance.
 
 root_variables
 List of the variable importances calculated by the method, but with the root compatible variable names.
 
 root_importances
 Dictionary of the variables sorted by their importance but with root compatoble variable names.
 
 description
 Description of the method as a xml string returned by basf2_mva.info.
 
 spectators
 List of spectators.
 
 root_spectators
 List of spectators with root compatible names.
 

Detailed Description

Wrapper class providing an interface to the method stored under the given identifier.
It loads the Options, can apply the expert and train new ones using the current as a prototype.
This class is used by the basf_mva_evaluation tools

Definition at line 81 of file basf2_mva_util.py.

Constructor & Destructor Documentation

◆ __init__()

def __init__ (   self,
  identifier 
)
Load a method stored under the given identifier
@param identifier identifying the method

Definition at line 88 of file basf2_mva_util.py.

88  def __init__(self, identifier):
89  """
90  Load a method stored under the given identifier
91  @param identifier identifying the method
92  """
93 
94  self.identifier = identifier
95 
96  self.weightfile = basf2_mva.Weightfile.load(self.identifier)
97 
98  self.general_options = basf2_mva.GeneralOptions()
99  self.general_options.load(self.weightfile.getXMLTree())
100 
101  # This piece of code should be correct but leads to random segmentation faults
102  # inside python, llvm or pyroot, therefore we use the more dirty code below
103  # Ideas why this is happening:
104  # 1. Ownership of the unique_ptr returned by getOptions()
105  # 2. Some kind of object slicing, although pyroot identifies the correct type
106  # 3. Bug in pyroot
107  # interfaces = basf2_mva.AbstractInterface.getSupportedInterfaces()
108  # self.interface = interfaces[self.general_options.m_method]
109  # self.specific_options = self.interface.getOptions()
110 
111 
112  self.specific_options = None
113  if self.general_options.m_method == "FastBDT":
114  self.specific_options = basf2_mva.FastBDTOptions()
115  elif self.general_options.m_method == "TMVAClassification":
116  self.specific_options = basf2_mva.TMVAOptionsClassification()
117  elif self.general_options.m_method == "TMVARegression":
118  self.specific_options = basf2_mva.TMVAOptionsRegression()
119  elif self.general_options.m_method == "FANN":
120  self.specific_options = basf2_mva.FANNOptions()
121  elif self.general_options.m_method == "Python":
122  self.specific_options = basf2_mva.PythonOptions()
123  elif self.general_options.m_method == "PDF":
124  self.specific_options = basf2_mva.PDFOptions()
125  elif self.general_options.m_method == "Combination":
126  self.specific_options = basf2_mva.CombinationOptions()
127  elif self.general_options.m_method == "Reweighter":
128  self.specific_options = basf2_mva.ReweighterOptions()
129  elif self.general_options.m_method == "Trivial":
130  self.specific_options = basf2_mva.TrivialOptions()
131  else:
132  raise RuntimeError("Unkown method " + self.general_options.m_method)
133 
134  self.specific_options.load(self.weightfile.getXMLTree())
135 
136  variables = [str(v) for v in self.general_options.m_variables]
137  importances = self.weightfile.getFeatureImportance()
138 
139 
140  self.importances = {k: importances[k] for k in variables}
141 
142  self.variables = list(sorted(variables, key=lambda v: self.importances.get(v, 0.0)))
143 
144  self.root_variables = [Belle2.makeROOTCompatible(v) for v in self.variables]
145 
146  self.root_importances = {k: importances[k] for k in self.root_variables}
147 
148  self.description = str(basf2_mva.info(self.identifier))
149 
150  self.spectators = [str(v) for v in self.general_options.m_spectators]
151 
152  self.root_spectators = [Belle2.makeROOTCompatible(v) for v in self.spectators]
153 

Member Function Documentation

◆ apply_expert()

def apply_expert (   self,
  datafiles,
  treename 
)
Apply the expert of the method to data and return the calculated probability and the target
@param datafiles the datafiles
@param treename the name of the tree containing the data

Definition at line 180 of file basf2_mva_util.py.

◆ train_teacher()

def train_teacher (   self,
  datafiles,
  treename,
  general_options = None,
  specific_options = None 
)
Train a new method using this method as a prototype
@param datafiles the training datafiles
@param treename the name of the tree containing the training data
@param general_options general options given to basf2_mva.teacher (if None the options of this method are used)
@param specific_options specific options given to basf2_mva.teacher (if None the options of this method are used)

Definition at line 154 of file basf2_mva_util.py.


The documentation for this class was generated from the following file:
Belle2::makeROOTCompatible
std::string makeROOTCompatible(std::string str)
Remove special characters that ROOT dislikes in branch names, e.g.
Definition: MakeROOTCompatible.cc:74