ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/yangyong/Regression/TMVARegGui.C
Revision: 1.1
Committed: Mon May 14 11:42:54 2012 UTC (13 years ago) by yangyong
Content type: text/plain
Branch: MAIN
CVS Tags: V00-00-01, HEAD
Log Message:
train regression in tmva

File Contents

# User Rev Content
1 yangyong 1.1 #include <iostream>
2     #include <vector>
3    
4     #include "TROOT.h"
5     #include "TControlBar.h"
6     #include "tmvaglob.C"
7    
8     // some global lists
9     static TList* TMVAGui_keyContent;
10     static std::vector<TString> TMVAGui_inactiveButtons;
11    
12     TList* GetKeyList( const TString& pattern )
13     {
14     TList* list = new TList();
15    
16     TIter next( TMVAGui_keyContent );
17     TKey* key(0);
18     while ((key = (TKey*)next())) {
19     if (TString(key->GetName()).Contains( pattern )) { list->Add( new TObjString( key->GetName() ) ); }
20     }
21     return list;
22     }
23    
24     // utility function
25     void ActionButton( TControlBar* cbar,
26     const TString& title, const TString& macro, const TString& comment,
27     const TString& buttonType, TString requiredKey = "" )
28     {
29     cbar->AddButton( title, macro, comment, buttonType );
30    
31     // search
32     if (requiredKey != "") {
33     Bool_t found = kFALSE;
34     TIter next( TMVAGui_keyContent );
35     TKey* key(0);
36     while ((key = (TKey*)next())) {
37     if (TString(key->GetName()).Contains( requiredKey )) { found = kTRUE; break; }
38     }
39     if (!found) TMVAGui_inactiveButtons.push_back( title );
40     }
41     }
42    
43     // main GUI
44     void TMVARegGui( const char* fName = "TMVAReg.root" )
45     {
46     // Use this script in order to run the various individual macros
47     // that plot the output of TMVA (e.g. running TMVARegression.C),
48     // stored in the file "TMVA.Regroot"
49    
50     TString curMacroPath(gROOT->GetMacroPath());
51     // uncomment next line for macros submitted to next root version
52     gROOT->SetMacroPath(curMacroPath+":./:$ROOTSYS/tmva/test/:");
53    
54     // for the sourceforge version, including $ROOTSYS/tmva/test in the
55     // macro path is a mistake, especially if "./" was not part of path
56     // add ../macros to the path (comment out next line for the ROOT version of TMVA)
57     // gROOT->SetMacroPath(curMacroPath+":../macros:");
58    
59     TString curIncludePath=gSystem->GetIncludePath();
60     //std::cout <<"inc path="<<curIncludePath<<std::endl;
61     TString newIncludePath=TString("-I../ ")+curIncludePath;
62     gSystem->SetIncludePath(newIncludePath);
63    
64     cout << "--- Launch TMVA GUI to view input file: " << fName << endl;
65    
66     // init
67     TMVAGui_inactiveButtons.clear();
68    
69     // check if file exist
70     TFile* file = TFile::Open( fName );
71     if (!file) {
72     cout << "==> Abort TMVAGui, please verify filename" << endl;
73     return;
74     }
75     // find all references
76     TMVAGui_keyContent = (TList*)file->GetListOfKeys()->Clone();
77    
78     // close file
79     file->Close();
80    
81     TString defaultRequiredClassifier = "";
82    
83     // gROOT->Reset();
84     // gStyle->SetScreenFactor(2); // if you have a large screen, select 1,2 or 1.4
85    
86     // create the control bar
87     TControlBar* cbar = new TControlBar( "vertical", "TMVA Plotting Macros for Regression", 0, 0 );
88    
89     const TString buttonType( "button" );
90    
91     // configure buttons
92     Int_t ic = 1;
93    
94     // find all input variables types
95     TList* keylist = GetKeyList( "InputVariables" );
96     TListIter it( keylist );
97     TObjString* str = 0;
98     char ch = 'a';
99     while (str = (TObjString*)it()) {
100     TString tmp = str->GetString();
101     TString title = Form( "Input variables and target(s) '%s'-transformed (training sample)",
102     tmp.ReplaceAll("InputVariables_","").Data() );
103     if (tmp.Contains( "Id" )) title = "Input variables and target(s) (training sample)";
104     ActionButton( cbar,
105     Form( " (%i%c) %s ", ic, ch++, title.Data() ),
106     Form( ".x variables.C(\"%s\",\"%s\",\"%s\",kTRUE)", fName, str->GetString().Data(), title.Data() ),
107     Form( "Plots all '%s'-transformed input variables and target(s) (macro variables.C(...))",
108     str->GetString().Data() ),
109     buttonType, str->GetString() );
110     }
111     ic++;
112    
113     // correlation scatter plots
114     it.Reset(); ch = 'a';
115     while (str = (TObjString*)it()) {
116     TString tmp = str->GetString();
117     TString title = Form( "Input variable correlations '%s'-transformed (scatter profiles)",
118     tmp.ReplaceAll("InputVariables_","").Data() );
119     if (tmp.Contains( "Id" )) title = "Input variable correlations (scatter profiles)";
120     ActionButton( cbar,
121     Form( "(%i%c) %s", ic, ch++, title.Data() ),
122     Form( ".x CorrGui.C(\"%s\",\"%s\",\"%s\",kTRUE)", fName, str->GetString().Data(), title.Data() ),
123     Form( "Plots all correlation profiles between '%s'-transformed input variables (macro CorrGui.C(...))",
124     str->GetString().Data() ),
125     buttonType, str->GetString() );
126     }
127    
128     // coefficients
129     ActionButton( cbar,
130     Form( "(%i) Input Variable Linear Correlation Coefficients", ++ic ),
131     Form( ".x correlations.C(\"%s\",kTRUE)", fName ),
132     "Plots signal and background correlation summaries for all input variables (macro correlations.C)",
133     buttonType );
134    
135     ActionButton( cbar,
136     Form( "(%ia) Regression Output Deviation versus Target (test sample)", ++ic ),
137     Form( ".x deviations.C(\"%s\",0,kTRUE)", fName ),
138     "Plots the deviation between regression output and target versus target on test data (macro deviations.C(...,0))",
139     buttonType, defaultRequiredClassifier );
140    
141     ActionButton( cbar,
142     Form( "(%ib) Regression Output Deviation versus Target (training sample)", ic ),
143     Form( ".x deviations.C(\"%s\",3,kTRUE)", fName ),
144     "Plots the deviation between regression output and target versus target on test data (macro deviations.C(...,0))",
145     buttonType, defaultRequiredClassifier );
146    
147     ActionButton( cbar,
148     Form( "(%ic) Regression Output Deviation versus Input Variables (test sample)", ic ),
149     Form( ".x deviations.C(\"%s\",0,kFALSE)", fName ),
150     "Plots the deviation between regression output and target versus target on test data (macro deviations.C(...,0))",
151     buttonType, defaultRequiredClassifier );
152    
153     ActionButton( cbar,
154     Form( " (%id) Regression Output Deviation versus Input Variables (training sample) ", ic ),
155     Form( ".x deviations.C(\"%s\",3,kFALSE)", fName ),
156     "Plots the deviation between regression output and target versus target on test data (macro deviations.C(...,0))",
157     buttonType, defaultRequiredClassifier );
158    
159     ActionButton( cbar,
160     Form( "(%i) Summary of Average Regression Deviations ", ++ic ),
161     Form( ".x regression_averagedevs.C(\"%s\")", fName ),
162     "Plot Summary of average deviations: MVAvalue - target (macro regression_averagedevs.C)",
163     buttonType );
164    
165     ActionButton( cbar,
166     Form( "(%ia) Network Architecture", ++ic ),
167     Form( ".x network.C(\"%s\")", fName ),
168     "Plots the MLP weights (macro network.C)",
169     buttonType, "MLP" );
170    
171     ActionButton( cbar,
172     Form( "(%ib) Network Convergence Test", ic ),
173     Form( ".x annconvergencetest.C(\"%s\")", fName ),
174     "Plots error estimator versus training epoch for training and test samples (macro annconvergencetest.C)",
175     buttonType, "MLP" );
176    
177     ActionButton( cbar,
178     Form( "(%i) Plot Foams", ++ic ),
179     Form( ".x PlotFoams.C(\"weights/TMVARegression_PDEFoam.weights_foams.root\")", fName ),
180     "Plot Foams (macro PlotFoams.C)",
181     buttonType, "PDEFoam" );
182    
183     ActionButton( cbar,
184     Form( "(%i) Regression Trees (BDT)", ++ic ),
185     Form( ".x BDT_Reg.C+(\"%s\")", fName ),
186     "Plots the Regression Trees trained by BDT algorithms (macro BDT_Reg.C(itree,...))",
187     buttonType, "BDT" );
188    
189     ActionButton( cbar,
190     Form( "(%i) Regression Tree Control Plots (BDT)", ++ic ),
191     Form( ".x BDTControlPlots.C(\"%s\")", fName ),
192     "Plots to monitor boosting and pruning of regression trees (macro BDTControlPlots.C)",
193     buttonType, "BDT" );
194    
195     cbar->AddSeparator();
196    
197     cbar->AddButton( Form( "(%i) Quit", ++ic ), ".q", "Quit", buttonType );
198    
199     // set the style
200     cbar->SetTextColor("black");
201    
202     // there seems to be a bug in ROOT: font jumps back to default after pressing on >2 different buttons
203     // cbar->SetFont("-adobe-helvetica-bold-r-*-*-12-*-*-*-*-*-iso8859-1");
204    
205     // draw
206     cbar->Show();
207    
208     // indicate inactive buttons
209     for (UInt_t i=0; i<TMVAGui_inactiveButtons.size(); i++) cbar->SetButtonState( TMVAGui_inactiveButtons[i], 3 );
210     if (TMVAGui_inactiveButtons.size() > 0) {
211     cout << "=== Note: inactive buttons indicate that the corresponding methods were not trained ===" << endl;
212     }
213    
214     gROOT->SaveContext();
215     }