1# Copyright (c) 2005-2006 The Regents of The University of Michigan |
2# All rights reserved. 3# 4# Redistribution and use in source and binary forms, with or without 5# modification, are permitted provided that the following conditions are 6# met: redistributions of source code must retain the above copyright 7# notice, this list of conditions and the following disclaimer; 8# redistributions in binary form must reproduce the above copyright 9# notice, this list of conditions and the following disclaimer in the --- 88 unchanged lines hidden (view full) --- 98 groupopts.append(group.subopts()) 99 skiplist[i] = True 100 elif group.flags.graph_bars: 101 baropts.append(group.subopts()) 102 skiplist[i] = True 103 else: 104 groups.append(group) 105 |
106 has_group = bool(groupopts) 107 if has_group: 108 groupopts = [ group for group in crossproduct(groupopts) ] 109 else: 110 groupopts = [ None ] |
111 |
112 if baropts: 113 baropts = [ bar for bar in crossproduct(baropts) ] 114 else: |
115 raise AttributeError, 'No group selected for graph bars' 116 |
117 directory = expanduser(graphdir) 118 if not isdir(directory): 119 os.mkdir(directory) 120 html = file(joinpath(directory, '%s.html' % name), 'w') 121 print >>html, '<html>' 122 print >>html, '<title>Graphs for %s</title>' % name 123 print >>html, '<body>' 124 html.flush() 125 126 for options in self.jobfile.options(groups): 127 chart = BarChart(self) 128 |
129 data = [ [ None ] * len(baropts) for i in xrange(len(groupopts)) ] 130 enabled = False 131 stacked = 0 132 for g,gopt in enumerate(groupopts): 133 for b,bopt in enumerate(baropts): |
134 if gopt is None: 135 gopt = [] |
136 job = self.jobfile.job(options + gopt + bopt) 137 if not job: 138 continue 139 140 if proxy: 141 import db 142 proxy.dict['system'] = self.info[job.system] 143 val = self.info.get(job, self.stat) --- 22 unchanged lines hidden (view full) --- 166 data[i][j] = [ 0.0 ] * stacked 167 elif len(val) != stacked: 168 raise ValueError, "some stats stacked, some not" 169 170 data = array(data) 171 if data.sum() == 0: 172 continue 173 |
174 dim = len(data.shape) |
175 x = data.shape[0] |
176 xkeep = [ i for i in xrange(x) if data[i].sum() != 0 ] |
177 y = data.shape[1] |
178 ykeep = [ i for i in xrange(y) if data[:,i].sum() != 0 ] 179 data = data.take(xkeep, axis=0) 180 data = data.take(ykeep, axis=1) |
181 if not has_group: 182 data = data.take([ 0 ], axis=0) |
183 chart.data = data 184 |
185 |
186 bopts = [ baropts[i] for i in ykeep ] |
187 bdescs = [ ' '.join([o.desc for o in opt]) for opt in bopts] |
188 |
189 if has_group: 190 gopts = [ groupopts[i] for i in xkeep ] 191 gdescs = [ ' '.join([o.desc for o in opt]) for opt in gopts] 192 |
193 if chart.legend is None: 194 if stacked: 195 try: 196 chart.legend = self.info.rcategories 197 except: 198 chart.legend = [ str(i) for i in xrange(stacked) ] 199 else: 200 chart.legend = bdescs 201 202 if chart.xticks is None: |
203 if has_group: 204 chart.xticks = gdescs 205 else: 206 chart.xticks = [] |
207 chart.graph() 208 209 names = [ opt.name for opt in options ] 210 descs = [ opt.desc for opt in options ] 211 212 if names[0] == 'run': 213 names = names[1:] 214 descs = descs[1:] --- 17 unchanged lines hidden --- |