%pylab inline import requests import numpy as np from matplotlib import pyplot as plt r=requests.get('http://bicepkeck.org/B2_3yr_rlikelihood_20140314.txt') header = r.text.split('\n')[:12] rawLikelihoodData = r.text.split('\n')[13:] likelihoodScan = [] temp = [i.split('\t') for i in rawLikelihoodData] temp for x,y in temp[:-1]: likelihoodScan.append([float(x), float(y)]) likelihoodScan = np.array(likelihoodScan) np.sum(likelihoodScan[:,1]) lmax = likelihoodScan[:,1].max() rpeak = np.where(likelihoodScan[:,1]==lmax)[0][0] rminBicep, rmaxBicep = rpeak,rpeak integral,cutoff=0.,lmax-lmax/1000 while integral<0.68: rRange = np.where(likelihoodScan[:,1]>cutoff) rminBicep=np.min(rRange) rmaxBicep=np.max(rRange) integral = np.sum(likelihoodScan[rminBicep:rmaxBicep,1]) cutoff-=lmax/1000 print '[%f, %f]'%( rminBicep, rmaxBicep) plt.plot(likelihoodScan[:,0],likelihoodScan[:,1]) plt.plot(likelihoodScan[rminBicep:rmaxBicep,0],likelihoodScan[rminBicep:rmaxBicep,1],'g') plt.plot([rminBicep/1000.,rminBicep/1000.],[0.,likelihoodScan[rminBicep,1]],'g') plt.plot([rmaxBicep/1000.,rmaxBicep/1000.],[0.,likelihoodScan[rmaxBicep,1]],'g') plt.xlabel('r') plt.ylabel('Likelihood') minLogL = -2 * np.log(np.max(likelihoodScan[:,1])) rmin, rmax = 0,0 for r, l in likelihoodScan: if -2*np.log(l)-minLogL < 1: rmin= r break for r, l in likelihoodScan[200:]: if -2*np.log(l)-minLogL > 1: rmax=r break print '[%f, %f]'%( rmin, rmax) plt.plot(likelihoodScan[:,0],-2* np.log(likelihoodScan[:,1])-minLogL) plt.plot([0,0.8],[1.,1.],'r') plt.plot([rmaxBicep/1000.,rmaxBicep/1000.],[0.,1.],'g') plt.plot([rminBicep/1000.,rminBicep/1000.],[0.,1.],'g') plt.plot([rmax,rmax],[0.,1.],'r') plt.plot([rmin,rmin],[0.,1.],'r') plt.xlabel('r') plt.ylabel('-2 ln Likleihood') plt.ylim([0,2]) plt.xlim([0.1,0.3]) np.sum(likelihoodScan[147:260,1]) significance = np.sqrt(-2*np.log(likelihoodScan[0,1])) significance