Dear ROOT team,
Just a small thing I stumbled upon with RDataFrame::Display
in Python, consider:
import ROOT
ROOT.EnableImplicitMT()
df = ROOT.RDataFrame(100)
df = df.Define("x", "gRandom->Rndm()")
df.Display(["x"]).Print()
Which gives the error
TypeError: Template method resolution failed:
none of the 3 overloaded methods succeeded. Full details:
ROOT::RDF::RResultPtr<ROOT::RDF::RDisplay> ROOT::RDF::RInterface<ROOT::Detail::RDF::RLoopManager,void>::Display(initializer_list<string> columnList, int nRows = 5, unsigned long nMaxCollectionElements = 10) =>
TypeError: could not convert argument 1
ROOT::RDF::RResultPtr<ROOT::RDF::RDisplay> ROOT::RDF::RInterface<ROOT::Detail::RDF::RLoopManager,void>::Display(const vector<string>& columnList, int nRows = 5, unsigned long nMaxCollectionElements = 10) =>
runtime_error: Display was called with ImplicitMT enabled, but multi-thread is not supported.
ROOT::RDF::RResultPtr<ROOT::RDF::RDisplay> ROOT::RDF::RInterface<ROOT::Detail::RDF::RLoopManager,void>::Display(basic_string_view<char,char_traits<char> > columnNameRegexp = "", int nRows = 5, unsigned long nMaxCollectionElements = 10) =>
TypeError: could not convert argument 1
ROOT::RDF::RResultPtr<ROOT::RDF::RDisplay> ROOT::RDF::RInterface<ROOT::Detail::RDF::RLoopManager,void>::Display(initializer_list<string> columnList, int nRows = 5, unsigned long nMaxCollectionElements = 10) =>
TypeError: could not convert argument 1
whereas in c++ using
void reproduce(){
ROOT::EnableImplicitMT();
ROOT::RDataFrame df(100);
auto df_x = df.Define("x", [](){ return gRandom->Rndm(); });
df_x.Display({"x"})->Print();
}
gives the error:
what(): Display was called with ImplicitMT enabled, but multi-thread is not supported.
It seems that Display
is not supported in EnableImplicitMT
however the error message in python or the docs don’t really tell us about it. Maybe you could mention that.
Thanks in advance!
Cheers,
Konrad
ROOT 6.26/04