import numpy as np; import popgen.Utils np.set_printoptions(linewidth=40, precision=5, suppress=True) import pandas as pd; pd.options.display.max_rows=80;pd.options.display.expand_frame_repr=False;pd.options.display.max_columns=20 import pylab as plt; import popgen.TimeSeries.RNN.Utils as utl def D(nu,n=200,theta=200): def logn(n):return (1./np.arange(1,n)).sum() return (( (1-nu**2)) - map(logn,(1-nu)*n +1)/logn(n)) def D2(nu,n=2000): def logn(n):return (1./np.arange(1,n)).sum() return - np.array(map(logn,(1-nu)*n +1))/logn(n) step=0.0005 nut=np.arange(0,1,step)[1:] N=1000 s=0.1 t=2/s*(utl.logit(nut)-utl.logit(0.0005))+1 t df=pd.DataFrame([-np.log(1-nut)/np.log(2*N), -(nut**2), -np.log(1-nut)/np.log(2*N) -(nut**2)],index=[r'$-\frac{\log(1-\nu_t)}{\log(2N)}$',r'$-\nu_t^2$',r'$D_t$'] , columns=nut).T plt.figure(figsize=(20,8));plt.subplot(1,2,1);df.plot(linewidth=2,grid=True,ax=plt.gca());plt.xlabel(r'$\nu$');plt.subplot(1,2,2);df.plot(linewidth=2,ax=plt.gca(),grid=True);plt.xlim([0,0.2]);plt.ylim([-0.1,0.1]);plt.xlabel(r'$\nu$') plt.savefig(popgen.Utils.paperpath + 'tdterms.png')
# D=est.Estimate.LD(M).round(2) # E=D.copy(True) # D # E[E<0]=None # E # F=E.applymap(lambda x: x**200).sum(1) # F2=D.applymap(lambda x: x**200).sum(1) # F.rolling(window=1000,center=True).mean().plot();plt.axvline(M.columns[ba_ind],color='r'); # G=pd.concat([D.abs().sum(1),M.mean()],axis=1) # G.sort_values([0]) idx=(M.mean()>0.1) N=M.iloc[:,idx.values] ba_indn=np.where(N.columns==500000)[0][0] def plotSite(M,site,ba_ind): plt.figure() d=est.Estimate.LD(M,site=site).round(2); plt.subplot(3,1,1);d.apply(lambda x: x**200).rolling(window=window,center=True).mean().plot();plt.ylim([0,1.1]);plt.axvline(5*1e5,color='r');plt.subplot(3,1,2);d.abs().rolling(window=window,center=True).mean().plot();plt.ylim([0,1.1]);plt.axvline(500000,color='r');plt.subplot(3,1,3);d[d>0].rolling(window=window,center=True).mean().plot();plt.ylim([0,1.1]);plt.axvline(5*1e5,color='r') plt.suptitle('{} site={} freq={}'.format(('FP','True')[site==ba_ind], site,M.mean().iloc[site] )) plotSite(M,ba_ind,ba_ind);site=get_sliding_p(M.values)[1].sort_values().index[-1];plotSite(M,site,ba_ind);d=est.Estimate.LD(M,sites=np.array([ba_ind,site]));print M.mean().loc[d.index];print d; print 'distance: ',pd.Series(M.columns[np.array([ba_ind,site])]).diff().iloc[1] plotSite(N,ba_indn,ba_indn);site=get_sliding_p(N.values)[1].sort_values().index[-1];plotSite(N,site,ba_indn);d=est.Estimate.LD(N,sites=np.array([ba_indn,site]));print N.mean().loc[d.index];print d ; print 'distance: ',pd.Series(N.columns[np.array([ba_indn,site])]).diff().iloc[1] import popgen.TimeSeries.RNN.Utils as utl s=0.05 2*np.log(20000*s)/s 2*2/s*(utl.logit(0.5)-utl.logit(1./20000)) # 3R:16576189..16576198 # 3R:16576189..24755000