Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TMVA_SOFIE_RDataFrame.py
Go to the documentation of this file.
1### \file
2### \ingroup tutorial_ml
3### \notebook -nodraw
4### Example of inference with SOFIE and RDataFrame, of a model trained with PyTorch.
5### First, generate the input ONNX model by running `TMVA_SOFIE_PyTorch_HiggsModel.py`.
6###
7### This tutorial parses the input model and runs the inference using ROOT's JITing capability.
8###
9### \macro_code
10### \macro_output
11### \author Lorenzo Moneta
12
13from os.path import exists
14
15import ROOT
16
17# check if the input file exists
18modelFile = "HiggsModel.onnx"
19modelName = "HiggsModel"
20
21if not exists(modelFile):
22 raise FileNotFoundError("You need to run TMVA_SOFIE_PyTorch_HiggsModel.py to generate the ONNX trained model")
23
24# parse the input ONNX model into RModel object
26model = parser.Parse(modelFile)
27
28# generating inference code
30model.OutputGenerated("Higgs_trained_model_generated.hxx")
32
33# compile using ROOT JIT trained model
34print("compiling SOFIE model and functor....")
35ROOT.gInterpreter.Declare('#include "Higgs_trained_model_generated.hxx"')
36ROOT.gInterpreter.Declare('auto sofie_functor = TMVA::Experimental::SofieFunctor<7,TMVA_SOFIE_'+modelName+'::Session>(0,"Higgs_trained_model_generated.dat");')
37
38# run inference over input data
39inputFile = str(ROOT.gROOT.GetTutorialDir()) + "/machine_learning/data/Higgs_data.root"
40df1 = ROOT.RDataFrame("sig_tree", inputFile)
41h1 = df1.Define("DNN_Value", "sofie_functor(rdfslot_,m_jj, m_jjj, m_lv, m_jlv, m_bb, m_wbb, m_wwbb)").Histo1D(("h_sig", "", 100, 0, 1),"DNN_Value")
42
43df2 = ROOT.RDataFrame("bkg_tree", inputFile)
44h2 = df2.Define("DNN_Value", "sofie_functor(rdfslot_,m_jj, m_jjj, m_lv, m_jlv, m_bb, m_wbb, m_wwbb)").Histo1D(("h_bkg", "", 100, 0, 1),"DNN_Value")
45
46# run over the input data once, combining both RDataFrame graphs.
47ROOT.RDF.RunGraphs([h1, h2])
48
49print("Number of signal entries",h1.GetEntries())
50print("Number of background entries",h2.GetEntries())
51
52h1.SetLineColor("kRed")
53h2.SetLineColor("kBlue")
54
55c1 = ROOT.TCanvas()
57
59h1.DrawClone("SAME")
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
ROOT's RDataFrame offers a modern, high-level interface for analysis of data stored in TTree ,...