finished stability stats option
authorAli Saidi <saidi@eecs.umich.edu>
Tue, 18 Jan 2005 18:25:55 +0000 (13:25 -0500)
committerAli Saidi <saidi@eecs.umich.edu>
Tue, 18 Jan 2005 18:25:55 +0000 (13:25 -0500)
--HG--
extra : convert_revision : 3ad0a143f79b116c5b18321846653d627429882a

util/stats/stats.py

index 7f3761a92280b85a369a39ce29c2e3ab10084935..60c3d8a535431d4e803695ebc44f5927a6d83d18 100755 (executable)
@@ -255,28 +255,43 @@ def commands(options, command, args):
 
         #loop through all the stats selected
         for stat in stats:
-            avg = float(stat)
 
+            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" % \
+                  ("------------------------------", "------------", "------------", "----", "-----", "------")
             #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)
+                stat.ticks = runTicks
+                avg = float(stat)
+                stdev = 0
+                numoutsideavg  = 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)
-
-
+                        numoutsideavg += 1
+                    stdev += pow((val-avg),2)
 
+                stdev = pow(stdev / len(runTicks), 0.5)
+                numoutsidestd = 0
+                for tick in runTicks:
+                    stat.ticks = str(tick)
+                    val = float(stat)
+                    if (val < (avg - stdev)) or (val > (avg + stdev)):
+                        numoutsidestd += 1
 
+                print "%-30s %12s %12s %4s %5s %6s" % \
+                      (run.name, "%.1f" % avg, "%.1f" % stdev,
+                       "%d" % numoutsideavg, "%d" % numoutsidestd,
+                       "%d" % len(runTicks))
         return