added stats code to check stability
authorAli Saidi <saidi@eecs.umich.edu>
Fri, 14 Jan 2005 22:50:36 +0000 (17:50 -0500)
committerAli Saidi <saidi@eecs.umich.edu>
Fri, 14 Jan 2005 22:50:36 +0000 (17:50 -0500)
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

util/stats/db.py
util/stats/stats.py

index 495cdb5b5f0e8cb1629c11c7df8c7fd3f9a19aca..ed5d10bc2c5115ad65ce45b53351f7b8ee15928b 100644 (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
index b2b0ff8adbee787e5396d3dbf67ea49662185ad3..7f3761a92280b85a369a39ce29c2e3ab10084935 100755 (executable)
@@ -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()