예제 #1
0
def RunGWAS(filename,k=5,eps=2.0):
	sz=450
	[[y1,sFil1],[y2,sFil2]]=loadData(filename=filename,useRand=False,sz=sz);

	MU1=MU_STRAT(sFil1,k);	
	MU2=MU_STRAT(sFil2,k);
	print "EXACT1!"
	MU1.calcMU(k,exact=True)
	print "Exact 2!"
	MU2.calcMU(k,exact=True);

	res=pt(y1,MU1,1,-1,algor="noise");

	resL=pt(y1,MU1,20,-1,algor="noise");
	print resL
	#print wt(y1,MU1,-1,snps=res);
	res2=pt(y2,MU2,1,-1,algor="noise");
	print res;
	resT=res;
	print res2;
	resT=wt(y2,MU2,eps,snps=resL[5:7]);
	res2=wt(y1,MU1,eps,snps=res);
	res3=wt(y1,MU1,-1,snps=[]);

	res4=wt(y2,MU2,-1,snps=[]);
	n=len(y2);

	print len(y1);
	print n;
	val=[resT[0]*(n-k-1),resT[1]*(n-k-1)]

	n2=len(y1);	
	print "In Val:"
	print val;
	print "In Orig"
	print res2[0]*(n2-k-1);

	n2=len(y1);	
	print np.median(res3)*(n2-k-1)

	n2=len(y1);	
	res3=sorted(res3,reverse=True)[:10];
	res3=[(n2-k-1)*i for i in res3];
	print res3

	fil=open("saveRes.txt","w")
	for r in res4:
		fil.write(str(r)+"\n")
	fil.close();
	res4=sorted(res4,reverse=True)[:20];
	res3=[(n-k-1)*i for i in res4];
	print res3
	CIlst=CI(y2,MU2,.95,2.0,resL[5:6]);
	CIlst2=CI(y2,MU2,.95,2.0,resL[6:7]);
	CIlst=[[(n-k-1)*i for i in s] for s in CIlst]
	CIlst22=[[(n-k-1)*i for i in s] for s in CIlst2]
	print CIlst;
	print CIlst2;
예제 #2
0
def TestCase(cutoff=23,num=2,filename="../GWAS/NoFam_0.05",k=10,sz=450):
	[[y1,sFil1],[y2,sFil2]]=loadData(filename=filename,useRand=False,sz=sz);
	MU1=MU_STRAT(sFil1,k)
	MU2=MU_STRAT(sFil2,k)

	n=len(y2);
	n2=len(y1);
	print "Exact 1!"
	MU1.calcMU(k,exact=True);
	print "Exact 2!"
	MU2.calcMU(k,exact=True);

	print "Get top in set 1"
	top1=pt(y1,MU1,20,-1,algor="noise");
	print "Get Scores"
	scores=wt(y1,MU1,-1,snps=top1);

	print "Get "+str(num)+" SNPs directly below "+str(cutoff);
	i=min([i for i in range(0,len(top1)) if scores[i]<cutoff/float(n2-k-1)])
	print top1[i];
	print float((n2-k-1)*scores[i])
	#print i;
	#print scores[:10];
	print "";
	print top1[i+1];
	print float((n2-k-1)*scores[i+1])

	CIlst=CI(y2,MU2,.95,2.0,top1[i:i+2]);
	Clst=[[(n-k-1)*i for i in s] for s in CIlst]
	print Clst;
예제 #3
0
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();
예제 #4
0
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()
예제 #5
0
def plotTop(mret,eps,filename,savename=""):
	if len(savename)==0:
		savename="OutputDir/res_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_STRAT(BED,10);
	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;
			gs=pt(y,MU,mret,e,algor="neighbor",reuse=True);
			neighs[i]=neighs[i]+inter(tru,gs)/float(reps);	
			gs=pt(y,MU,mret,e,algor="score");
			score[i]=score[i]+inter(tru,gs)/float(reps);	
			gs=pt(y,MU,mret,e,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();