17 static TList* TMVAGui_keyContent;
18 static std::vector<TString> TMVAGui_inactiveButtons;
20 TList* TMVA::GetKeyList(
const TString& pattern )
22 TList* list =
new TList();
24 TIter next( TMVAGui_keyContent );
26 while ((key = (TKey*)next())) {
27 if (TString(key->GetName()).Contains( pattern )) { list->Add(
new TObjString( key->GetName() ) ); }
33 void TMVA::ActionButton( TControlBar* cbar,
34 const TString& title,
const TString& macro,
const TString& comment,
35 const TString& buttonType, TString requiredKey )
37 cbar->AddButton( title, macro, comment, buttonType );
40 if (requiredKey !=
"") {
41 Bool_t found = kFALSE;
42 TIter next( TMVAGui_keyContent );
44 while ((key = (TKey*)next())) {
45 if (TString(key->GetName()).Contains( requiredKey )) { found = kTRUE;
break; }
47 if (!found) TMVAGui_inactiveButtons.push_back( title );
52 void TMVA::TMVAGui(
const char* fName , TString dataset)
58 TString curMacroPath(gROOT->GetMacroPath());
60 gROOT->SetMacroPath(curMacroPath+
":./:$ROOTSYS/tmva/test/:");
67 TString curIncludePath=gSystem->GetIncludePath();
68 TString newIncludePath=TString(
"-I../ ")+curIncludePath;
69 gSystem->SetIncludePath(newIncludePath);
71 cout <<
"--- Launch TMVA GUI to view input file: " << fName << endl;
74 TMVAGui_inactiveButtons.clear();
77 TFile* file = TFile::Open( fName );
79 cout <<
"==> Abort TMVAGui, please verify filename" << endl;
83 if(file->GetListOfKeys()->GetEntries()<=0)
85 cout <<
"==> Abort TMVAGui, please verify if dataset exist" << endl;
88 if( (dataset==
""||dataset.IsWhitespace()) && (file->GetListOfKeys()->GetEntries()==1))
90 TKey *key=(TKey*)file->GetListOfKeys()->At(0);
91 dataset=key->GetName();
92 }
else if((dataset==
""||dataset.IsWhitespace()) && (file->GetListOfKeys()->GetEntries()>=1))
95 gStyle->SetScreenFactor(2);
97 TControlBar *bar=
new TControlBar(
"vertical",
"Select dataset", 0, 0);
98 bar->SetButtonWidth(300);
99 for(
int i=0;i<file->GetListOfKeys()->GetEntries();i++)
101 TKey *key=(TKey*)file->GetListOfKeys()->At(i);
102 dataset=key->GetName();
103 bar->AddButton(dataset.Data(),Form(
"TMVA::TMVAGui(\"%s\",\"%s\")",fName,dataset.Data()),dataset.Data());
107 bar->AddButton(
"Quit",
".q",
"Quit",
"button");
110 bar->SetTextColor(
"black");
112 gROOT->SaveContext();
117 TMVAGui_keyContent = (TList*)file->GetDirectory(dataset.Data())->GetListOfKeys()->Clone();
122 TString defaultRequiredClassifier =
"";
128 TControlBar* cbar =
new TControlBar(
"vertical",
"TMVA Plotting Macros for Classification", 0, 0 );
130 const TString buttonType(
"button" );
136 TList* keylist = GetKeyList(
"InputVariables" );
137 TListIter it( keylist );
140 while ((str = (TObjString*)it())) {
141 TString tmp = str->GetString();
142 TString title = Form(
"Input variables '%s'-transformed (training sample)",
143 tmp.ReplaceAll(
"InputVariables_",
"").Data() );
144 if (tmp.Contains(
"Id" )) title =
"Input variables (training sample)";
146 Form(
"(%i%c) %s", ic, ch++, title.Data() ),
147 Form(
"TMVA::variables(\"%s\",\"%s\",\"%s\",\"%s\")",dataset.Data(), fName, str->GetString().Data(), title.Data() ),
148 Form(
"Plots all '%s'-transformed input variables (macro variables(...))", str->GetString().Data() ),
149 buttonType, str->GetString() );
154 it.Reset(); ch =
'a';
155 while ((str = (TObjString*)it())) {
156 TString tmp = str->GetString();
157 TString title = Form(
"Input variable correlations '%s'-transformed (scatter profiles)",
158 tmp.ReplaceAll(
"InputVariables_",
"").Data() );
159 if (tmp.Contains(
"Id" )) title =
"Input variable correlations (scatter profiles)";
161 Form(
"(%i%c) %s", ic, ch++, title.Data() ),
162 Form(
"TMVA::CorrGui(\"%s\",\"%s\",\"%s\",\"%s\")",dataset.Data(), fName, str->GetString().Data(), title.Data() ),
163 Form(
"Plots all correlation profiles between '%s'-transformed input variables (macro CorrGui(...))",
164 str->GetString().Data() ),
165 buttonType, str->GetString() );
170 title =Form(
"(%i) Input Variable Linear Correlation Coefficients", ++ic );
173 Form(
"TMVA::correlations(\"%s\",\"%s\")",dataset.Data(), fName ),
174 "Plots signal and background correlation summaries for all input variables (macro correlations.C)",
177 title =Form(
"(%ia) Classifier Output Distributions (test sample)", ++ic );
180 Form(
"TMVA::mvas(\"%s\",\"%s\", TMVA::kMVAType)",dataset.Data(), fName ),
181 "Plots the output of each classifier for the test data (macro mvas(...,0))",
182 buttonType, defaultRequiredClassifier );
184 title =Form(
"(%ib) Classifier Output Distributions (test and training samples superimposed)", ic );
187 Form(
"TMVA::mvas(\"%s\",\"%s\", TMVA::kCompareType )",dataset.Data(), fName),
188 "Plots the output of each classifier for the test (histograms) and training (dots) data (macro mvas(...,3))",
189 buttonType, defaultRequiredClassifier );
191 title = Form(
"(%ic) Classifier Probability Distributions (test sample)", ic );
194 Form(
"TMVA::mvas(\"%s\",\"%s\", TMVA::kProbaType)",dataset.Data(), fName ),
195 "Plots the probability of each classifier for the test data (macro mvas(...,1))",
196 buttonType, defaultRequiredClassifier );
198 title =Form(
"(%id) Classifier Rarity Distributions (test sample)", ic );
201 Form(
"TMVA::mvas(\"%s\",\"%s\", TMVA::kRarityType)",dataset.Data(), fName ),
202 "Plots the Rarity of each classifier for the test data (macro mvas(...,2)) - background distribution should be uniform",
203 buttonType, defaultRequiredClassifier );
205 title =Form(
"(%ia) Classifier Cut Efficiencies", ++ic );
208 Form(
"TMVA::mvaeffs(\"%s\",\"%s\")",dataset.Data(), fName ),
209 "Plots signal and background efficiencies versus cut on classifier output (macro mvaeffs.cxx)",
210 buttonType, defaultRequiredClassifier );
212 title = Form(
"(%ib) Classifier Background Rejection vs Signal Efficiency (ROC curve)", ic );
215 Form(
"TMVA::efficiencies(\"%s\",\"%s\")",dataset.Data(), fName ),
216 "Plots background rejection vs signal efficiencies (macro efficiencies.cxx) [\"ROC\" stands for \"Receiver Operation Characteristics\"]",
217 buttonType, defaultRequiredClassifier );
219 title = Form(
"(%ib) Classifier 1/(Backgr. Efficiency) vs Signal Efficiency (ROC curve)", ic );
222 Form(
"TMVA::efficiencies(\"%s\",\"%s\",%d)",dataset.Data(), fName, 3 ),
223 "Plots 1/(background eff.) vs signal efficiencies (macro efficiencies.cxx) [\"ROC\" stands for \"Receiver Operation Characteristics\"]",
224 buttonType, defaultRequiredClassifier );
226 title = Form(
"(%i) Parallel Coordinates (requires ROOT-version >= 5.17)", ++ic );
229 Form(
"TMVA::paracoor(\"%s\",\"%s\")",dataset.Data(), fName ),
230 "Plots parallel coordinates for classifiers and input variables (macro paracoor.cxx, requires ROOT >= 5.17)",
231 buttonType, defaultRequiredClassifier );
233 title =Form(
"(%i) PDFs of Classifiers (requires \"CreateMVAPdfs\" option set)", ++ic );
236 Form(
"TMVA::probas(\"%s\",\"%s\")",dataset.Data(), fName ),
237 "Plots the PDFs of the classifier output distributions for signal and background - if requested (macro probas.cxx)",
238 buttonType, defaultRequiredClassifier );
240 title = Form(
"(%i) Training History", ++ic );
243 Form(
"TMVA::training_history(\"%s\",\"%s\")",dataset.Data(), fName ),
244 "Plot training history of classifiers with multiple passed (eg Neural Networks) ",
245 buttonType, defaultRequiredClassifier );
247 title = Form(
"(%i) Likelihood Reference Distributiuons", ++ic);
250 Form(
"TMVA::likelihoodrefs(\"%s\",\"%s\")",dataset.Data(), fName ),
251 "Plots to verify the likelihood reference distributions (macro likelihoodrefs.cxx)",
252 buttonType,
"Likelihood" );
254 title = Form(
"(%ia) Network Architecture (MLP)", ++ic );
255 TString call = Form(
"TMVA::network(\"%s\",\"%s\")", dataset.Data(),fName );
259 "Plots the MLP weights (macro network.cxx)",
262 title = Form(
"(%ib) Network Convergence Test (MLP)", ic );
265 Form(
"TMVA::annconvergencetest(\"%s\",\"%s\")",dataset.Data(), fName ),
266 "Plots error estimator versus training epoch for training and test samples (macro annconvergencetest.C)",
269 title = Form(
"(%i) Decision Trees (BDT)", ++ic );
272 Form(
"TMVA::BDT(\"%s\",\"%s\")",dataset.Data() , fName ),
273 "Plots the Decision Trees trained by BDT algorithms (macro BDT(itree,...))",
276 title = Form(
"(%i) Decision Tree Control Plots (BDT)", ++ic );
279 Form(
"TMVA::BDTControlPlots(\"%s\",\"%s\")",dataset.Data() , fName ),
280 "Plots to monitor boosting and pruning of decision trees (macro BDTControlPlots.cxx)",
288 title = Form(
"(%i) Plot Foams (PDEFoam)", ++ic );
291 Form(
"TMVA::PlotFoams(\"%s/weights/TMVAClassification_PDEFoam.weights_foams.root\")",dataset.Data()),
292 "Plot Foams (macro PlotFoams.cxx)",
293 buttonType,
"PDEFoam" );
295 title = Form(
"(%i) General Boost Control Plots", ++ic );
298 Form(
"TMVA::BoostControlPlots(\"%s\",\"%s\")",dataset.Data() , fName ),
299 "Plots to monitor boosting of general classifiers (macro BoostControlPlots)",
300 buttonType,
"Boost" );
302 cbar->AddSeparator();
304 cbar->AddButton( Form(
"(%i) Quit", ++ic ),
".q",
"Quit", buttonType );
307 cbar->SetTextColor(
"black");
316 for (UInt_t i=0; i<TMVAGui_inactiveButtons.size(); i++) cbar->SetButtonState(TMVAGui_inactiveButtons[i], 3 );
317 if (TMVAGui_inactiveButtons.size() > 0) {
318 cout <<
"=== Note: inactive buttons indicate classifiers that were not trained, ===" << endl;
319 cout <<
"=== or functionalities that were not invoked during the training ===" << endl;
322 gROOT->SaveContext();