17from os.path
import exists
23modelFile =
"HiggsModel.onnx"
25if not exists(modelFile):
26 raise FileNotFoundError(
"You need to run TMVA_SOFIE_PyTorch_HiggsModel.py to generate the ONNX trained model")
30parser = ROOT.TMVA.Experimental.SOFIE.RModelParser_ONNX()
31model = parser.Parse(modelFile)
33generatedHeaderFile = modelFile.replace(
".onnx",
".hxx")
34print(
"Generating inference code for the ONNX model from ", modelFile,
"in the header ", generatedHeaderFile)
37model.OutputGenerated(generatedHeaderFile)
41modelName = modelFile.replace(
".onnx",
"")
42print(
"compiling SOFIE model ", modelName)
43ROOT.gInterpreter.Declare(
'#include "' + generatedHeaderFile +
'"')
45inputFileName =
"Higgs_data.root"
46inputFile = str(ROOT.gROOT.GetTutorialDir()) +
"/machine_learning/data/" + inputFileName
55sigData = df1.AsNumpy(columns=[
'm_jj',
'm_jjj',
'm_lv',
'm_jlv',
'm_bb',
'm_wbb',
'm_wwbb'])
59xsig = np.column_stack(list(sigData.values()))
60dataset_size = xsig.shape[0]
61print(
"size of signal data", dataset_size)
66sofie = getattr(ROOT,
'TMVA_SOFIE_' + modelName)
67session = sofie.Session()
69print(
"Evaluating SOFIE models on signal data")
70hs = ROOT.TH1D(
"hs",
"Signal result",100,0,1)
71for i
in range(0,dataset_size):
72 result = session.infer(xsig[i,:])
73 if (i % dataset_size/10 == 0) :
74 print(
"result for signal event ",i,result[0])
77print(
"using RDsataFrame to extract input data in a numpy array")
80bkgData = df2.AsNumpy(columns=[
'm_jj',
'm_jjj',
'm_lv',
'm_jlv',
'm_bb',
'm_wbb',
'm_wwbb'])
82xbkg = np.column_stack(list(bkgData.values()))
83dataset_size = xbkg.shape[0]
84print(
"size of background data", dataset_size)
86hb = ROOT.TH1D(
"hb",
"Background result",100,0,1)
87for i
in range(0,dataset_size):
88 result = session.infer(xbkg[i,:])
89 if (i % dataset_size/10 == 0) :
90 print(
"result for background event ",i,result[0])
96ROOT.gStyle.SetOptStat(0)
97hs.SetLineColor(
"kRed")
99hb.SetLineColor(
"kBlue")
105print(
"Number of signal entries",hs.GetEntries())
106print(
"Number of background entries",hb.GetEntries())
ROOT's RDataFrame offers a modern, high-level interface for analysis of data stored in TTree ,...