-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathTop_LMM_herit_Fig.py
80 lines (71 loc) · 1.91 KB
/
Top_LMM_herit_Fig.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
71
72
73
74
75
76
77
78
####################
##Generates figure similar to those in the paper
#####################
import sys;
import loadFile as ld;
from MU_LMM import *;
from DP_util import PickTop as pt;
##
##Sees how much they overlap
##
def inter(a,b):
if len(a)!=len(b):
1/0.0;
return;
return len([i for i in a if i in b])/float(len(a));
##
##For making pics!
##
def plotTop(mret,eps,filename,savename=""):
if len(savename)==0:
savename="OutputDir/LMM_top_"+str(eps)+"_"+str(mret)+".txt"
epsilons=[eps*i for i in range(1,11)];
print "load Data"
[y,BED]=ld.getData(filename);
print "calc MU!"
MU=MU_LMM(BED,[1,-1.0]);
sc=MU.prod(y);
sc=[abs(s) for s in sc];
sc=sorted(sc,reverse=True);
print "get True!";
tru=pt(y,MU,mret,-1,algor="noise");
neighs=[0.0 for i in range(1,11)];
score=[0.0 for i in range(1,11)];
noise=[0.0 for i in range(1,11)];
reps=20;
for i in range(0,10):
e=epsilons[i];
print e;
for j in range(0,reps):
print j;
e1=e*mret/float(mret+1);
MU=MU_LMM(BED,[10,e/float(mret+1)]);
gs=pt(y,MU,mret,e1,algor="neighbor",reuse=True);
neighs[i]=neighs[i]+inter(tru,gs)/float(reps);
gs=pt(y,MU,mret,e1,algor="score");
score[i]=score[i]+inter(tru,gs)/float(reps);
gs=pt(y,MU,mret,e1,algor="noise");
noise[i]=noise[i]+inter(tru,gs)/float(reps);
fil=open(savename,"w");
fil.write("Testing Top SNPs with DP, "+filename);
fil.write("\nEpsilon:")
for i in range(0,10):
fil.write(" "+str(epsilons[i]))
fil.write("\nNoise:")
for i in range(0,10):
fil.write(" "+str(noise[i]))
fil.write("\nScore:")
for i in range(0,10):
fil.write(" "+str(score[i]))
fil.write("\nNeighbor:")
for i in range(0,10):
fil.write(" "+str(neighs[i]))
fil.close();
if __name__=="__main__":
filename="../../GWAS/cleaned";
eps=[.5,.5,3.0,3.0];
mret=[3,5,10,15];
savename="OutputDir/LMM_her_Top";
for i in range(0,4):
plotTop(mret[i],eps[i],filename,savename=savename+str(mret[i])+".txt");
print "DONE!!"