ROOT
master
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
13
from
os.path
import
exists
14
15
import
ROOT
16
17
# check if the input file exists
18
modelFile =
"HiggsModel.onnx"
19
modelName =
"HiggsModel"
20
21
if
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
25
parser =
ROOT.TMVA.Experimental.SOFIE.RModelParser_ONNX
()
26
model =
parser.Parse
(modelFile)
27
28
# generating inference code
29
model.Generate
()
30
model.OutputGenerated
(
"Higgs_trained_model_generated.hxx"
)
31
model.PrintGenerated
()
32
33
# compile using ROOT JIT trained model
34
print(
"compiling SOFIE model and functor...."
)
35
ROOT.gInterpreter.Declare
(
'#include "Higgs_trained_model_generated.hxx"'
)
36
ROOT.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
39
inputFile = str(
ROOT.gROOT.GetTutorialDir
()) +
"/machine_learning/data/Higgs_data.root"
40
df1 =
ROOT.RDataFrame
(
"sig_tree"
, inputFile)
41
h1 =
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
43
df2 =
ROOT.RDataFrame
(
"bkg_tree"
, inputFile)
44
h2 =
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.
47
ROOT.RDF.RunGraphs
([h1, h2])
48
49
print(
"Number of signal entries"
,
h1.GetEntries
())
50
print(
"Number of background entries"
,
h2.GetEntries
())
51
52
h1.SetLineColor
(
"kRed"
)
53
h2.SetLineColor
(
"kBlue"
)
54
55
c1 =
ROOT.TCanvas
()
56
ROOT.gStyle.SetOptStat
(0)
57
58
h2.DrawClone
()
59
h1.DrawClone
(
"SAME"
)
TRangeDynCast
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
Definition
TCollection.h:359
ROOT::Detail::TRangeCast
Definition
TCollection.h:312
ROOT::RDataFrame
ROOT's RDataFrame offers a modern, high-level interface for analysis of data stored in TTree ,...
Definition
RDataFrame.hxx:50
tutorials
machine_learning
TMVA_SOFIE_RDataFrame.py
ROOTmaster - Reference Guide Generated on Mon Aug 3 2026 15:57:14 (GVA Time) using Doxygen 1.10.0