From f9d6229406fdfaabcc1220e4c775f4a8d747f9de Mon Sep 17 00:00:00 2001
From: Stefan Wunsch <stefan.wunsch@student.kit.edu>
Date: Fri, 14 Oct 2016 10:25:34 +0200
Subject: [PATCH] Make PyKeras tests more verbose

---
 tmva/pymva/test/testPyKerasClassification.C | 9 ++++++++-
 tmva/pymva/test/testPyKerasRegression.C     | 8 +++++++-
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/tmva/pymva/test/testPyKerasClassification.C b/tmva/pymva/test/testPyKerasClassification.C
index f1216b5b378..8e71e29eafe 100644
--- a/tmva/pymva/test/testPyKerasClassification.C
+++ b/tmva/pymva/test/testPyKerasClassification.C
@@ -23,12 +23,14 @@ model.save(\"kerasModelClassification.h5\")\n";
 
 int testPyKerasClassification(){
    // Get data file
+   std::cout << "Get test data..." << std::endl;
    TString fname = "./tmva_class_example.root";
    if (gSystem->AccessPathName(fname))  // file does not exist in local directory
       gSystem->Exec("curl -O http://root.cern.ch/files/tmva_class_example.root");
    TFile *input = TFile::Open(fname);
 
    // Build model from python file
+   std::cout << "Generate keras model..." << std::endl;
    UInt_t ret;
    ret = gSystem->Exec("echo '"+pythonSrc+"' > generateKerasModelClassification.py");
    if(ret!=0){
@@ -42,6 +44,7 @@ int testPyKerasClassification(){
    }
 
    // Setup PyMVA and factory
+   std::cout << "Setup TMVA..." << std::endl;
    TMVA::PyMethodBase::PyInitialize();
    TFile* outputFile = TFile::Open("ResultsTestPyKerasClassification.root", "RECREATE");
    TMVA::Factory *factory = new TMVA::Factory("testPyKerasClassification", outputFile,
@@ -66,6 +69,7 @@ int testPyKerasClassification(){
    // Book and train method
    factory->BookMethod(dataloader, TMVA::Types::kPyKeras, "PyKeras",
       "!H:!V:VarTransform=D,G:FilenameModel=kerasModelClassification.h5:FilenameTrainedModel=trainedKerasModelClassification.h5:NumEpochs=10:BatchSize=32:SaveBestOnly=false:Verbose=0");
+   std::cout << "Train model..." << std::endl;
    factory->TrainAllMethods();
 
    // Clean-up
@@ -74,6 +78,8 @@ int testPyKerasClassification(){
    delete outputFile;
 
    // Setup reader
+   UInt_t numEvents = 100;
+   std::cout << "Run reader and classify " << numEvents << " events..." << std::endl;
    TMVA::Reader *reader = new TMVA::Reader("!Color:Silent");
    Float_t vars[4];
    reader->AddVariable("var1", vars+0);
@@ -93,7 +99,6 @@ int testPyKerasClassification(){
    background->SetBranchAddress("var3", vars+2);
    background->SetBranchAddress("var4", vars+3);
 
-   UInt_t numEvents = 100;
    Float_t meanMvaSignal = 0;
    Float_t meanMvaBackground = 0;
    for(UInt_t i=0; i<numEvents; i++){
@@ -106,10 +111,12 @@ int testPyKerasClassification(){
    meanMvaBackground = meanMvaBackground/float(numEvents);
 
    // Check whether the response is obviously better than guessing
+   std::cout << "Mean MVA response on signal: " << meanMvaSignal << std::endl;
    if(meanMvaSignal < 0.6){
       std::cout << "[ERROR] Mean response on signal is " << meanMvaSignal << " (<0.6)" << std::endl;
       return 1;
    }
+   std::cout << "Mean MVA response on background: " << meanMvaBackground << std::endl;
    if(meanMvaBackground > 0.4){
       std::cout << "[ERROR] Mean response on background is " << meanMvaBackground << " (>0.4)" << std::endl;
       return 1;
diff --git a/tmva/pymva/test/testPyKerasRegression.C b/tmva/pymva/test/testPyKerasRegression.C
index f50032da72f..4313ceba137 100644
--- a/tmva/pymva/test/testPyKerasRegression.C
+++ b/tmva/pymva/test/testPyKerasRegression.C
@@ -23,12 +23,14 @@ model.save(\"kerasModelRegression.h5\")\n";
 
 int testPyKerasRegression(){
    // Get data file
+   std::cout << "Get test data..." << std::endl;
    TString fname = "./tmva_reg_example.root";
    if (gSystem->AccessPathName(fname))  // file does not exist in local directory
       gSystem->Exec("curl -O http://root.cern.ch/files/tmva_reg_example.root");
    TFile *input = TFile::Open(fname);
 
    // Build model from python file
+   std::cout << "Generate keras model..." << std::endl;
    UInt_t ret;
    ret = gSystem->Exec("echo '"+pythonSrc+"' > generateKerasModelRegression.py");
    if(ret!=0){
@@ -42,6 +44,7 @@ int testPyKerasRegression(){
    }
 
    // Setup PyMVA and factory
+   std::cout << "Setup TMVA..." << std::endl;
    TMVA::PyMethodBase::PyInitialize();
    TFile* outputFile = TFile::Open("ResultsTestPyKerasRegression.root", "RECREATE");
    TMVA::Factory *factory = new TMVA::Factory("testPyKerasRegression", outputFile,
@@ -63,6 +66,7 @@ int testPyKerasRegression(){
    // Book and train method
    factory->BookMethod(dataloader, TMVA::Types::kPyKeras, "PyKeras",
       "!H:!V:VarTransform=D,G:FilenameModel=kerasModelRegression.h5:FilenameTrainedModel=trainedKerasModelRegression.h5:NumEpochs=10:BatchSize=32:SaveBestOnly=false:Verbose=0");
+   std::cout << "Train model..." << std::endl;
    factory->TrainAllMethods();
 
    // Clean-up
@@ -71,6 +75,8 @@ int testPyKerasRegression(){
    delete outputFile;
 
    // Setup reader
+   UInt_t numEvents = 100;
+   std::cout << "Run reader and estimate target of " << numEvents << " events..." << std::endl;
    TMVA::Reader *reader = new TMVA::Reader("!Color:Silent");
    Float_t vars[3];
    reader->AddVariable("var1", vars+0);
@@ -82,7 +88,6 @@ int testPyKerasRegression(){
    tree->SetBranchAddress("var2", vars+1);
    tree->SetBranchAddress("fvalue", vars+2);
 
-   UInt_t numEvents = 100;
    Float_t meanMvaError = 0;
    for(UInt_t i=0; i<numEvents; i++){
       tree->GetEntry(i);
@@ -91,6 +96,7 @@ int testPyKerasRegression(){
    meanMvaError = meanMvaError/float(numEvents);
 
    // Check whether the response is obviously better than guessing
+   std::cout << "Mean squared error: " << meanMvaError << std::endl;
    if(meanMvaError > 30.0){
       std::cout << "[ERROR] Mean squared error is " << meanMvaError << " (>30.0)" << std::endl;
       return 1;
-- 
GitLab