Improvements to the graphing output
authorNathan Binkert <binkertn@umich.edu>
Tue, 18 Oct 2005 19:01:51 +0000 (15:01 -0400)
committerNathan Binkert <binkertn@umich.edu>
Tue, 18 Oct 2005 19:01:51 +0000 (15:01 -0400)
util/stats/output.py:
    Create the graph directory if it doesn't exist
    Don't write out a graph if all of the jobs for that graph are missing

--HG--
extra : convert_revision : 7993baf1a4be33a062f86a4f09791f01eaafa43c

util/stats/output.py

index 44dba5d15ab33c3af38869f4a0e86f5fb5437ee9..f793749f7b5f60ef5b6882913d40e9aa27472554 100644 (file)
@@ -96,10 +96,10 @@ class StatOutput(object):
         self.printdata(printmode=printmode)
 
     def graph(self, graphdir):
-        from os.path import expanduser, join as joinpath
+        from os.path import expanduser, isdir, join as joinpath
         from barchart import BarChart
-        from matplotlib.numerix import Float, zeros
-        import re
+        from matplotlib.numerix import Float, array, zeros
+        import os, re
 
         confgroups = self.jobfile.groups()
         ngroups = len(confgroups)
@@ -130,6 +130,8 @@ class StatOutput(object):
             raise AttributeError, 'No group selected for graph bars'
 
         directory = expanduser(graphdir)
+        if not isdir(directory):
+            os.mkdir(directory)
         html = file(joinpath(directory, '%s.html' % self.name), 'w')
         print >>html, '<html>'
         print >>html, '<title>Graphs for %s</title>' % self.name
@@ -143,6 +145,8 @@ class StatOutput(object):
             for g,gopt in enumerate(groupopts):
                 for b,bopt in enumerate(baropts):
                     job = self.jobfile.job(options + [ gopt, bopt ])
+                    if not job:
+                        continue
 
                     val = self.info.get(job, self.stat)
                     if val is None:
@@ -156,6 +160,10 @@ class StatOutput(object):
 
                     data[g][b] = val
 
+            data = array(data)
+            if data.sum() == 0:
+                continue
+
             bar_descs = [ opt.desc for opt in baropts ]
             group_descs = [ opt.desc for opt in groupopts ]
             if stacked: