import torch
 
from ROOT import TMVA, TFile, TString
from array import array
from subprocess import call
from os.path import isfile
 
 
 
 
data = 
TFile.Open(
"http://root.cern.ch/files/tmva_reg_example.root", 
"CACHEREAD")
 
if data is None:
    raise FileNotFoundError("Input file cannot be downloaded - exit")
 
tree = data.Get('TreeR')
 
branches = {}
for branch in tree.GetListOfBranches():
    branchName = branch.GetName()
    branches[branchName] = array('f', [-999])
    tree.SetBranchAddress(branchName, branches[branchName])
    if branchName != 'fvalue':
        reader.AddVariable(branchName, branches[branchName])
 
 
reader.BookMVA(
'PyTorch', 
TString(
'dataset/weights/TMVARegression_PyTorch.weights.xml'))
 
 
 
def predict(model, test_X, batch_size=32):
    
    model.eval()
 
    test_dataset = torch.utils.data.TensorDataset(torch.Tensor(test_X))
    test_loader = torch.utils.data.DataLoader(test_dataset, batch_size=batch_size, shuffle=False)
 
    predictions = []
    with torch.no_grad():
        for i, data in enumerate(test_loader):
            X = data[0]
            outputs = model(X)
            predictions.append(outputs)
        preds = torch.cat(predictions)
 
    return preds.numpy()
 
load_model_custom_objects = {"optimizer": None, "criterion": None, "train_func": None, "predict_func": predict}
 
 
print('Some example regressions:')
for i in range(20):
    tree.GetEntry(i)
    print(
'True/MVA value: {}/{}'.
format(branches[
'fvalue'][0],reader.EvaluateMVA(
'PyTorch')))
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t format
 
static Bool_t SetCacheFileDir(ROOT::Internal::TStringView cacheDir, Bool_t operateDisconnected=kTRUE, Bool_t forceCacheread=kFALSE)
 
static TFile * Open(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0)
Create / open a file.
 
static void PyInitialize()
Initialize Python interpreter.
 
The Reader class serves to use the MVAs in a specific analysis context.