예제 #1
0
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')
예제 #2
0
파일: bootstrap.py 프로젝트: airanmehr/bio
# 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