def getAge(start,end,species,mytree,margin=50): from StringIO import StringIO from Bio import Phylo,AlignIO from treetime import TreeAnc myfasta='' for spec in species.keys(): myfasta=myfasta+'>'+spec+'\nA'+str(''.join(species[spec][(start-margin-analysis_start):(end+margin-analysis_start)]))+'A\n' my_aln = AlignIO.read(StringIO(myfasta), 'fasta') ta = TreeAnc(tree=mytree, aln=my_aln, gtr='JC69') ta.infer_ancestral_sequences(method = 'ml', infer_gtr=True, marginal=False) seq=ta.get_reconstructed_alignment() print 'ancestral seq inferred' # for i in range(len(seq)): # print seq[i].id+' '+seq[i].seq[(margin+1):(margin+1+end-start)] Phylo.write(ta.tree, home+'/Annotation/Conservation/SEqAlign/test_'+id+'.nwk', 'newick') mytreeAnnot=Phylo.read(home+'/Annotation/Conservation/SEqAlign/test_'+id+'.nwk', "newick") AncestralSeq={} for y in seq: AncestralSeq[y.id]=str(y.seq[(margin+1):(margin+1+end-start)]) AppearedInCommonAncestor=['human','chimp','gorilla','orangutan','macaque','marmoset','tarsier','lemur','treeShrew','mouse','cow','elephant','opossum','platypus','chicken','frog','zebrafish','lamprey'] AppearedInCommonAncestorScientific=['hg19','panTro2','gorGor1','ponAbe2','rheMac2','calJac1','tarSyr1','micMur1','tupBel1','mm9','bosTau4','loxAfr3','monDom5','ornAna1','galGal3','xenTro2','danRer6','petMar1'] CommonAncestor=['hg19','NODE_0000044','NODE_0000043','NODE_0000042','NODE_0000040','NODE_0000039','NODE_0000038','NODE_0000036','NODE_0000035','NODE_0000028','NODE_0000018','NODE_0000013','NODE_0000011','NODE_0000010','NODE_0000007','NODE_0000006','NODE_0000001','NODE_0000000'] CommonAncestorName=['Humans','Chimpanzees','Gorillas','Orangutans','Gibbons','Monkeys','Tarsiers','Lemurs','Shrews','Rodents','Boroeutheria','Afroeutheria','Marsupials','Monotremes','Sauropsids','Amphibians','Vertebrates','Chordates'] PhyloGeneticDistance=[ mytreeAnnot.distance('hg19', CommonAncestor[i]) for i in range(0,len(CommonAncestor))]
verbose=4, fill_overhangs=not params.keep_overhangs) treeanc.infer_ancestral_sequences('ml', infer_gtr=params.infer_gtr, marginal=params.marginal) ########################################################################### ### OUTPUT and saving of results ########################################################################### if params.infer_gtr: print('\nInferred GTR model:') print(treeanc.gtr) outaln_name = '.'.join( params.aln.split('/')[-1].split('.')[:-1]) + '_ancestral.fasta' AlignIO.write(treeanc.get_reconstructed_alignment(), outaln_name, 'fasta') # decorate tree with inferred mutations terminal_count = 0 for n in treeanc.tree.find_clades(): if n.up is None: continue n.confidence = None if n.is_terminal() and len(n.name) > 40: n.name = n.name[:35] + '_%03d' % terminal_count terminal_count += 1 if len(n.mutations): n.comment = '&mutations="' + '_'.join( [a + str(pos) + d for (a, pos, d) in n.mutations]) + '"' # write tree to file