now really done with stability stats stuff
authorAli Saidi <saidi@eecs.umich.edu>
Tue, 18 Jan 2005 18:34:58 +0000 (13:34 -0500)
committerAli Saidi <saidi@eecs.umich.edu>
Tue, 18 Jan 2005 18:34:58 +0000 (13:34 -0500)
--HG--
extra : convert_revision : 9bdbcec972f5d06e3ecd99c418fcccfaef7f6f3a

util/stats/stats.py

index 60c3d8a535431d4e803695ebc44f5927a6d83d18..62819c3978dc2493c8ee09a8c740a14ab9aee317 100755 (executable)
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 from __future__ import division
-import re, sys
+import re, sys, math
 
 def usage():
     print '''\
@@ -257,10 +257,11 @@ def commands(options, command, args):
         for stat in stats:
 
             print "%s:" % stat.name
-            print "%-30s %12s %12s %4s %5s %6s" % \
-                  ("run name", "average", "stdev", ">10%", ">1SDV", "SAMP")
-            print "%-30s %12s %12s %4s %5s %6s" % \
-                  ("------------------------------", "------------", "------------", "----", "-----", "------")
+            print "%-30s %12s %12s %4s %5s %5s %5s" % \
+                  ("run name", "average", "stdev", ">10%", ">1SDV", ">2SDV", "SAMP")
+            print "%-30s %12s %12s %4s %5s %5s %5s" % \
+                  ("------------------------------", "------------",
+                   "------------", "----", "-----", "-----", "-----")
             #loop through all the selected runs
             for run in runs:
                 info.display_run = run.run;
@@ -271,6 +272,8 @@ def commands(options, command, args):
                 avg = float(stat)
                 stdev = 0
                 numoutsideavg  = 0
+                numoutside1std = 0
+                numoutside2std = 0
 
                 #loop through all the various ticks for each run
                 for tick in runTicks:
@@ -280,18 +283,19 @@ def commands(options, command, args):
                         numoutsideavg += 1
                     stdev += pow((val-avg),2)
 
-                stdev = pow(stdev / len(runTicks), 0.5)
-                numoutsidestd = 0
+                stdev = math.sqrt(stdev / len(runTicks))
                 for tick in runTicks:
                     stat.ticks = str(tick)
                     val = float(stat)
                     if (val < (avg - stdev)) or (val > (avg + stdev)):
-                        numoutsidestd += 1
+                        numoutside1std += 1
+                    if (val < (avg - (2*stdev))) or (val > (avg + (2*stdev))):
+                        numoutside2std += 1
 
-                print "%-30s %12s %12s %4s %5s %6s" % \
+                print "%-30s %12s %12s %4s %5s %5s %5s" % \
                       (run.name, "%.1f" % avg, "%.1f" % stdev,
-                       "%d" % numoutsideavg, "%d" % numoutsidestd,
-                       "%d" % len(runTicks))
+                       "%d" % numoutsideavg, "%d" % numoutside1std,
+                       "%d" % numoutside2std, "%d" % len(runTicks))
         return