I am trying to load an existing TMVA BDT model using pyROOT and compute the BDT scores using columns from a RDataFrame as inputs and add the output as a column. I followed the answer by @swunsch in RDataFrame and TMVA in pyroot and managed to add a column using
TMVA::Experimental::Compute. However, it appears that it is not possible to use this column in a more complicated expression to make another column.
gInterpreter.ProcessLine('TMVA::Experimental::RReader model("%s");'%(xmlfile)) nBDTVars = len(ROOT.model.GetVariableNames()) gInterpreter.ProcessLine("computeModel = TMVA::Experimental::Compute<%d, float>(model);"%(nBDTVars)) DF = DF.Define("newbdt", ROOT.computeModel, ROOT.model.GetVariableNames())
Now if I do
DF.Histo1D("newbdt") it works normally.
However, if I perform a simple arithmetic operation, such as
DF.Define("newbdt2","newbdt+1") I get the following error:
input_line_169:2:35: error: invalid operands to binary expression ('__rdf1::newbdt5_type' (aka 'vector<float>') and 'int') return newbdt+1 note: candidate function not viable: no known conversion from '__rdf1::newbdt5_type' (aka 'vector<float>') to 'TString' for 1st argument operator+(TString s, T i)
followed by several lines of similar errors.
I understand this is an experimental feature and I was wondering if it has been reported already. If so, is there a known workaround, or am I doing something wrong?
ROOT Version: 6.20/01