Belle II Software  release-06-01-15
python.py
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 
4 
11 
12 import basf2_mva
13 
14 import os
15 import tempfile
16 import sys
17 from b2test_utils import skip_test
18 
19 variables = ['M', 'p', 'pt', 'pz',
20  'daughter(0, p)', 'daughter(0, pz)', 'daughter(0, pt)',
21  'daughter(1, p)', 'daughter(1, pz)', 'daughter(1, pt)',
22  'daughter(2, p)', 'daughter(2, pz)', 'daughter(2, pt)',
23  'chiProb', 'dr', 'dz',
24  'daughter(0, dr)', 'daughter(1, dr)',
25  'daughter(0, dz)', 'daughter(1, dz)',
26  'daughter(0, chiProb)', 'daughter(1, chiProb)', 'daughter(2, chiProb)',
27  'daughter(0, kaonID)', 'daughter(0, pionID)',
28  'daughterInvariantMass(0, 1)', 'daughterInvariantMass(0, 2)', 'daughterInvariantMass(1, 2)']
29 
30 
31 def feature_importance(state):
32  """
33  Return a list containing the feature importances
34  """
35  print("Called overwritten feature importance")
36  return []
37 
38 
39 def load(obj):
40  """
41  Test load function
42  """
43  print("Called overwritten load")
44  print(obj)
45  return None
46 
47 
48 print("Executed python script")
49 
50 if __name__ == "__main__":
51 
52  # Skip test if files are not available
53  if not (os.path.isfile('train.root') and os.path.isfile('test.root')):
54  skip_test('Necessary files "train.root" and "test.root" not available.')
55 
56  general_options = basf2_mva.GeneralOptions()
57  general_options.m_datafiles = basf2_mva.vector("train.root")
58  general_options.m_treename = "tree"
59  general_options.m_variables = basf2_mva.vector(*variables)
60  general_options.m_target_variable = "isSignal"
61  general_options.m_identifier = "Python.xml"
62 
63  specific_options = basf2_mva.PythonOptions()
64  specific_options.m_training_fraction = 0.9
65  specific_options.m_nIterations = 2
66  specific_options.m_mini_batch_size = 10000
67  specific_options.m_framework = 'test'
68 
69  olddir = os.getcwd()
70  with tempfile.TemporaryDirectory() as tempdir:
71  os.symlink(os.path.abspath('train.root'), tempdir + '/' + os.path.basename('train.root'))
72  os.symlink(os.path.abspath('test.root'), tempdir + '/' + os.path.basename('test.root'))
73  os.chdir(tempdir)
74 
75  basf2_mva.teacher(general_options, specific_options)
76 
77  basf2_mva.expert(basf2_mva.vector("Python.xml"),
78  basf2_mva.vector('train.root'), 'tree', 'expert.root')
79 
80  specific_options.m_steering_file = 'mva/tests/python.py'
81  basf2_mva.teacher(general_options, specific_options)
82 
83  basf2_mva.expert(basf2_mva.vector("Python.xml"),
84  basf2_mva.vector('train.root'), 'tree', 'expert.root')
85 
86  os.chdir(olddir)