首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BioPython中系统发育树的子树

BioPython中系统发育树的子树
EN

Stack Overflow用户
提问于 2016-08-19 08:41:48
回答 2查看 1K关注 0票数 1

我有一个newick格式的系统发育树。我想根据终端节点的标签拉出一个子树(因此基于物种列表)。我正在使用的树的副本可以在这里找到:http://hgdownload.soe.ucsc.edu/goldenPath/dm6/multiz27way/dm6.27way.nh

目前,我已经使用BioPython读入了树,如下所示:

代码语言:javascript
复制
from Bio import Phylo
#read in Phylogenetic Tree
tree = Phylo.read('dm6.27way.nh', 'newick')
#list of species of interest
species_list = ['dm6', 'droSim1', 'droSec1', 'droYak3', 'droEre2', 'droBia2', 'droSuz1', 'droAna3', 'droBip2', 'droEug2', 'droEle2', 'droKik2', 'droTak2', 'droRho2', 'droFic2']

我如何才能拉出species_list中只有物种的子树呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-19 09:01:42

好的,假设您想要包含物种列表中所有物种的最小树,您希望此树的根节点是列表中所有物种的最新公共祖先(MRCA),谢天谢地,这已经在Phylo中实现了:

代码语言:javascript
复制
from Bio import Phylo

#read in Phylogenetic Tree
tree = Phylo.read('dm6.27way.nh', 'newick')
#list of species of interest
species_list = ['dm6',
                'droSim1',
                'droSec1',
                'droYak3',
                'droEre2',
                'droBia2',
                'droSuz1',
                'droAna3',
                'droBip2',
                'droEug2',
                'droEle2',
                'droKik2',
                'droTak2',
                'droRho2',
                'droFic2']

common_ancestor = tree.common_ancestor(species_list)
Phylo.draw_ascii(common_ancestor)

输出:

代码语言:javascript
复制
Clade
                                           ___ dm6
                                       ___|
                                      |   | , droSim1
                                      |   |_|
                            __________|     | droSec1
                           |          |
                           |          |  _____ droYak3
                          ,|          |_|
                          ||            |____ droEre2
                          ||
                          ||      _______ droBia2
                          ||_____|
                          |      |_____ droSuz1
                          |
                        __|                                  _______ droAna3
                       |  |_________________________________|
                       |  |                                 |________ droBip2
                       |  |
                       |  |___________________ droEug2
                       |
                       |_____________ droEle2
                      ,|
                      ||______________________________ droKik2
                    __||
                   |  ||______________ droTak2
___________________|  |
                   |  |____________ droRho2
                   |
                   |_______________ droFic2
票数 3
EN

Stack Overflow用户

发布于 2016-08-19 09:35:57

使用ete3而不是BioPython。

代码语言:javascript
复制
from ete3 import Tree
t = Tree('dm6.27way.nh')
t.prune(species_list, preserve_branch_length=True)
t.write()

从文档中,

从版本2.2开始,此函数还包括preserve_branch_length标志,该标志允许从树中删除节点,同时保持剩余节点之间的原始距离。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39029517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档