Ejemplo n.º 1
0
def simulate_one_tree():
    #treeFile = 'data/test.newick'
    treeFile = "data/bz.trees.newick"
    tree = PhyloTree(treeFile, schema='newick')
    tree.normalize()
    G = tree.getV()
    Gs = [G]
    #(y,X,beta,Z,b,G,cholL,sigma2_b,R,sigma2_e) = lmmsample(tree)
    beta = [15,2.5]
    (y,X,Z,Ls,u,e) =lmm_sample(beta,Gs=Gs,sigma2=[5,1])
    (n,xx) = np.shape(y)
    # saveModelData('data/bodybraindata.txt','Body',['Brain'],y,X,tree)
    model =  LMMBasicAnimal(ylist = ['Body'],plist=['Brain'])
    #return
    #model = LMMBasicAnimal(ylist = ['length'],plist=['size'])
    R = np.asmatrix(np.eye(n))
    model.loadFromMatrices(y,X,Z,G,R)
    model.fitLMMBasic()
    #model.fitGLSLambda()
    #return 0
    invG = np.linalg.inv(model.G)
    #cholG = np.asmatrix(scipy.linalg.cholesky(G,lower=True))
    print ("*** initializing LmmMcmc object")
    # gibbs = GibbsAnimal(y,X,Z,invG,cholG)
    gibbs = MC2Lmm(y,X,Z,Ginvs=[invG])
    gibbs.set_init_params(init_beta=[10,1.5],init_sigma2_u=0.5,init_sigma2_e=0.5)
    # Time this
    t1 = time.time()
    ret = gibbs.simulate(num_samples=100,burnin=2000,thin=20)
    t2 = time.time()
    print 'time='+str(t2-t1)
    print "**** Finished sampling ****"
    print "NUM SAMPLES = " + str(gibbs.num_samples)
    if (ret != 0):
        print "Horror!"
        if (gibbs.num_samples < 1):
            return -1
        gibbs.plot()
    else:
        print 'Finished successfully'
        gibbs.plot()
    #gibbs.save_to_file('samples2.log',filetype='xls')
    #print samples
    #print np.shape(samples)
    #(num_params,num_samples) = np.shape(samples)

    return 0
Ejemplo n.º 2
0
def fit_simulate2():
    treeFile = 'data/test.newick'
    dataFile = "data/test.data"
    #treeFile = "data/bz.trees.newick"
    tree = PhyloTree(treeFile, schema='newick')
    tree.normalize()
    #(y,X,beta,Z,b,G,cholL,sigma2_b,R,sigma2_e) = lmmsample(tree)
    #saveModelData2('data/bodybraindata.txt','Body',['Brain'],y,X,tree)
    #model =  LMMBasicAnimal(ylist = ['Body'],plist=['Brain'])
    #return
    model = LMMBasicAnimal(ylist = ['length'],plist=['size'])
    model.loadFromFile(dataFile,treeFile,sep='SPACE')

    invG = np.linalg.inv(model.G)
    cholG = np.asmatrix(scipy.linalg.cholesky(model.G,lower=True))
    print ("*** initializing LmmMcmc object")
    gibbs = GibbsAnimal(model.y,model.X,model.Z,invG,cholG)
    #gibbs = MC2Lmm(y,X,Z,Ginvs=[invG])
    #gibbs.set_init_params(init_beta=[10,1.5],init_sigma2_u=0.5,init_sigma2_e=0.5)
    # Time this
    t1 = time.time()
    ret = gibbs.simulate(num_samples=100,burnin=2000,thin=20)
    t2 = time.time()
    print 'time='+str(t2-t1)
    print "**** Finished sampling ****"
    print "NUM SAMPLES = " + str(gibbs.num_samples)
    if (ret != 0):
        print "Horror!"
        if (gibbs.num_samples < 1):
            return -1
        gibbs.plot()
    else:
        print 'Finished successfully'
        gibbs.plot()
    #gibbs.save_to_file('samples2.log',filetype='xls')
    #print samples
    #print np.shape(samples)
    #(num_params,num_samples) = np.shape(samples)

    return 0
Ejemplo n.º 3
0
def simulate_two_trees(file=True):
    if (file):
        f1 = 'data/MorphoSpeciesTree.Trees.newick'
        t1 = PhyloTree(f1, schema='newick')
        t1.normalize()
        a = t1.getV()
        f2 = 'data/LineageTree.trees.newick'
        t2 = PhyloTree(f2, schema='newick')
        t2.normalize()
        b = t2.getV()
        trees = [t1,t2]
    else:
        # Generate two random positive definite matrices (variances)
        a = np.matrix([random.uniform(-3,3) for i in range(0,25)]).reshape(5,5)
        a = a*a.T
        b = np.matrix([random.uniform(-2,2) for i in range(0,9)]).reshape(3,3)
        b = b*b.T
        trees = []
    beta = [15,2.5]
    Gs = [a,b]
    (y,X,Z,Ls,u,e) =lmm_sample(beta,Gs=Gs,sigma2=[5,2,0.5])
    saveModelData2('data/bodybraindata.txt','Body',['Brain'],['r1','r2'],y,X,Z,trees)
   # ---- The current MLE for LMM does not accept more then one variance component ---
    # Compute inverses
    Ginvs = [np.linalg.inv(G)  for G in Gs]
    mcmc = MC2Lmm(y,X,Z,Ginvs=Ginvs)
    mcmc.set_init_params(init_beta=beta,init_sigma2_u=0.5,init_sigma2_e=0.5)
    # Time this
    t1 = time.time()
    ret = mcmc.simulate(num_samples=500,burnin=1000,thin=20)
    t2 = time.time()
    print 'time='+str(t2-t1)
    print "**** Finished sampling ****"
    print "NUM SAMPLES = " + str(mcmc.num_samples)
    if (ret != 0):
        print "Horror!"
        if (mcmc.num_samples < 1):
            return -1
        mcmc.plot()
    else:
        print 'Finished successfully'
        mcmc.plot()
Ejemplo n.º 4
0
import numpy as np

#treeFile = 'data/Spread_N100.phy'
treeFile = 'data/test.newick'
#treeFile = 'data/Birds-01000.newick'

#tree = Phylo.read(treeFile,'newick')
#print type(tree)
#print tree.get_terminals()
#print type(tree.root)


## Dendro example

tree = PhyloTree(treeFile, schema='newick')

#print tree.as_string("newick")
# tree.printTree()

V = tree.getV()

print V

mylog = tree.getLogDet()

nplog = np.linalg.slogdet(V)

print "mylog", mylog
print "nplog", nplog