Logo ROOT  
Reference Guide
 
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Loading...
Searching...
No Matches

Detailed Description

View in nbviewer Open in SWAN
Basic SaveGraph usage.

This tutorial shows how to use the SaveGraph action. SaveGraph inspects the sequence of RDataFrame actions.

// First, an RDataFrame computation graph is created with Defines, Filters and methods such as Mean, Count, etc.
// After that, SaveGraph can be called either on the root RDataFrame object or on a specific node of the computation
// graph: in the first case, the graph returned will span the full computation graph, in the second case it will show
// only the branch of the computation graph that the node belongs to.
// If a filename is passed as second argument, the graph is saved to that file, otherwise it is returned as a string.
void df034_SaveGraph()
{
auto rd2 = rd1.Define("Root_def1", "1").Filter("Root_def1 < 2", "Main_Filter").Define("Root_def2", "1");
auto branch1 = rd2.Define("Branch_1_def", "1");
auto branch2 = rd2.Define("Branch_2_def", "1");
ROOT::RDF::RResultPtr<double> branch1_1 = branch1.Filter("Branch_1_def < 2", "Filter_1")
.Define("Branch_1_1_def", "1")
.Filter("1 == Branch_1_1_def % 2", "Filter_1_1")
.Mean("Branch_1_1_def");
branch1.Define("Branch_1_2_def", "1").Filter("Branch_1_2_def < 2", "Filter_1_2").Count();
ROOT::RDF::RResultPtr<double> branch2_1 = branch2.Filter("Branch_2_def < 2", "Filter_2")
.Define("Branch_2_1_def", "1")
.Define("Branch_2_2_def", "1")
.Filter("1 == Branch_2_1_def % 2", "Filter_2_1")
.Max("Branch_2_1_def");
ROOT::RDF::SaveGraph(rd1, /*output_file=*/"rdf_savegraph_tutorial.dot");
// SaveGraph produces content in the standard DOT file format
// (https://en.wikipedia.org/wiki/DOT_%28graph_description_language%29): it can be converted to e.g. an image file
// using standard tools such as the `dot` CLI program.
gSystem->Exec("dot -Tpng rdf_savegraph_tutorial.dot -o rdf_savegraph_tutorial.png");
}
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
R__EXTERN TSystem * gSystem
Definition TSystem.h:572
Smart pointer for the return type of actions.
ROOT's RDataFrame offers a modern, high-level interface for analysis of data stored in TTree ,...
virtual Int_t Exec(const char *shellcmd)
Execute a command.
Definition TSystem.cxx:653
std::string SaveGraph(NodeType node)
Create a graphviz representation of the dataframe computation graph, return it as a string.
digraph {
8 [label="Mean", style="filled", fillcolor="#e47c7e", shape="box"];
6 [label="Filter_1_1", style="filled", fillcolor="#0f9d58", shape="hexagon"];
7 [label="Define\nBranch_1_1_def", style="filled", fillcolor="#4285f4", shape="ellipse"];
3 [label="Filter_1", style="filled", fillcolor="#0f9d58", shape="hexagon"];
4 [label="Define\nBranch_1_def", style="filled", fillcolor="#4285f4", shape="ellipse"];
5 [label="Define\nRoot_def2", style="filled", fillcolor="#4285f4", shape="ellipse"];
1 [label="Main_Filter", style="filled", fillcolor="#0f9d58", shape="hexagon"];
2 [label="Define\nRoot_def1", style="filled", fillcolor="#4285f4", shape="ellipse"];
0 [label="Empty source\nEntries: 1", style="filled", fillcolor="#f4b400", shape="ellipse"];
6 -> 8;
7 -> 6;
3 -> 7;
4 -> 3;
5 -> 4;
1 -> 5;
2 -> 1;
0 -> 2;
}
Date
January 2022
Author
Ivan Kabadzhov (CERN)

Definition in file df034_SaveGraph.C.