Belle II Software  release-06-02-00
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 method.
 
 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 87 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 94 of file basf2_mva_util.py.

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

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 186 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 160 of file basf2_mva_util.py.


The documentation for this class was generated from the following file: