-
Notifications
You must be signed in to change notification settings - Fork 0
/
correctTrout.py
70 lines (56 loc) · 1.73 KB
/
correctTrout.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
from __future__ import division, print_function
import sys
from scipy import stats
from matplotlib import rc
rc('font', **{'family': 'sans-serif', 'sans-serif': ['Helvetica']})
rc('text', usetex=True)
import pylab
from trout import *
pref = sys.argv[1]
case = load_file(pref, 45)
def plot_model(fig, model):
bname = get_bname(model)
vals = []
ldnes = {}
errs = {}
labels = []
cnb = case['Newb']
nbks = sorted(list(Nbs.keys()), key=lambda x: x[1])
for cname, cdata in get_corrs(bname, [], []):
ldnes[cname] = []
errs[cname] = []
nobs = 0
for name, N0 in nbks:
if name != model:
continue
nobs += 1
labels.append(str(N0))
val = Nbs[(model, N0)]
ldne, ci = cnb[(model, N0)][None, 50, 100, 'SNP']
for cname, cdata in get_corrs(bname, ldne, ci):
cldne, ccis = cdata
hmean = stats.hmean([x if x > 0 else 10000 for x in cldne])
ldnes[cname].append(hmean)
err = hmean / val
errs[cname].append(err)
vals.append(val)
ax = fig.add_subplot(2, 1, 1)
ax.set_title("Nb and estimators %s" % bname)
ax.plot(vals, '+', label="Nb")
for name, lvals in list(ldnes.items()):
ax.plot(lvals, '-', label=name)
print(name)
print(vals)
print(lvals)
ax.set_xticklabels(labels)
ax.legend()
ax = fig.add_subplot(2, 1, 2)
ax.set_title("Fraction of error %s" % bname)
ax.plot([1.0] * nobs, '+', label="Nb")
for name, cvals in list(errs.items()):
ax.plot(cvals, '-', label=name)
ax.set_xticklabels(labels)
ax.legend()
fig.savefig("output/correct.png")
fig = pylab.figure(figsize=(10, 20))
plot_model(fig, 'bullt2')