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()
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
#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 npinv = np.linalg.inv(V) # print npinv # print "my INV" # myinv = tree.getVinv()