Index: bin/compare |
diff --git a/bin/compare b/bin/compare |
index 82f85d5fd91ab724e5c3aa6e2f1e65508fa10f79..95d4100e950a22182ed3e58e15913f3e1611e4c1 100755 |
--- a/bin/compare |
+++ b/bin/compare |
@@ -1,10 +1,13 @@ |
#!/usr/bin/env python |
import argparse |
-import numpy |
import sys |
-from scipy.stats import mannwhitneyu |
-from scipy.stats import sem |
+ |
+have_scipy = True |
+try: |
+ import scipy.stats |
+except: |
+ have_scipy = False |
SIGNIFICANCE_THRESHOLD = 0.0001 |
@@ -32,15 +35,17 @@ for (path, d) in [(args.baseline, a), (args.experiment, b)]: |
common = set(a.keys()).intersection(b.keys()) |
+def mean(xs): |
+ return sum(xs) / len(xs) |
+ |
ps = [] |
for key in common: |
- _, p = mannwhitneyu(a[key], b[key]) # Non-parametric t-test. Doesn't assume normal dist. |
- if args.use_means: |
- am, bm = numpy.mean(a[key]), numpy.mean(b[key]) |
- asem, bsem = sem(a[key]), sem(b[key]) |
- else: |
- am, bm = min(a[key]), min(b[key]) |
- asem, bsem = 0, 0 |
+ p, asem, bsem = 0, 0, 0 |
+ m = mean if args.use_means else min |
+ am, bm = m(a[key]), m(b[key]) |
+ if have_scipy: |
+ _, p = scipy.stats.mannwhitneyu(a[key], b[key]) |
+ asem, bsem = scipy.stats.sem(a[key]), sem(b[key]) |
ps.append((bm/am, p, key, am, bm, asem, bsem)) |
ps.sort(reverse=True) |