added stats code to check stability

util/stats/db.py:
    added working listticks (for printing) and retticks(for using in python) code
util/stats/stats.py:
    added stability function that checks if all samples are within 10% of mean.

--HG--
extra : convert_revision : 7eb1714db75e456f248fe7cae73db1c57642947d
This commit is contained in:
Ali Saidi 2005-01-14 17:50:36 -05:00
parent 3e5a3df24f
commit dfecc89150
2 changed files with 62 additions and 4 deletions

View file

@ -207,16 +207,43 @@ class Database(object):
# Name: listTicks
# Desc: Prints all samples for a given run
def listTicks(self, run=None):
def listTicks(self, runs=None):
print "tick"
print "----------------------------------------"
sql = 'select distinct dt_tick from data where dt_stat=1950'
#if run != None:
# sql += ' where dt_run=%d' % run
sql = 'select distinct dt_tick from data where dt_stat=1180 and ('
if runs != None:
first = True
for run in runs:
if first:
# sql += ' where'
first = False
else:
sql += ' or'
sql += ' dt_run=%s' % run.run
sql += ')'
self.query(sql)
for r in self.cursor.fetchall():
print r[0]
# Name: retTicks
# Desc: Prints all samples for a given run
def retTicks(self, runs=None):
sql = 'select distinct dt_tick from data where dt_stat=1180 and ('
if runs != None:
first = True
for run in runs:
if first:
first = False
else:
sql += ' or'
sql += ' dt_run=%s' % run.run
sql += ')'
self.query(sql)
ret = []
for r in self.cursor.fetchall():
ret.append(r[0])
return ret
# Name: liststats
# Desc: Prints all statistics that appear in the database,
# the optional argument is a regular expression that can

View file

@ -249,6 +249,37 @@ def commands(options, command, args):
info.source.listRuns(user)
return
if command == 'stability':
stats = info.source.getStat(args[0])
info.source.get = "avg"
#loop through all the stats selected
for stat in stats:
avg = float(stat)
#loop through all the selected runs
for run in runs:
info.display_run = run.run;
#print run.name
#print avg
runTicks = info.source.retTicks([ run ])
#throw away the first one, it's 0
runTicks.pop(0)
#loop through all the various ticks for each run
for tick in runTicks:
stat.ticks = str(tick)
val = float(stat)
if (val < (avg * .9)) or (val > (avg * 1.1)):
print '%s:%s is %f, which is more than 10%% of the'\
'mean %f' % (run.name, stat.name, stat, avg)
return
if command == 'stats':
if len(args) == 0:
info.source.listStats()