我对肠杆菌基因组中的4个管家基因感兴趣
所以我有我的管家基因,我在NR上做了一个爆炸,下载了对齐的序列。在
我用MEGA7软件和极大似然法制作了系统发育树。bootrap法采用200次迭代。在
我将我的树导出为newick文件。在
所以现在,我有4棵树来表达我的4个管家基因。我想创建一个我的4棵树的共识树。在
就我个人而言,我试图使用生物系统学(http://biopython.org/DIST/docs/api/Bio.Phylo.Consensus-module.html#strict_consensus)(http://biopython.org/wiki/Phylo)。 我选择了“多数意见一致”函数,它的效果很好。但我有个问题。在
我的“剧本”是这样的:
import os
import sys
from Bio import Phylo
from Bio.Phylo.Consensus import *
fichier=sys.argv[1]
fichier2=sys.argv[2]
fichier3=sys.argv[3]
fichier4=sys.argv[4]
tree1=Phylo.read(fichier, 'newick')
tree2=Phylo.read(fichier2, 'newick')
tree3=Phylo.read(fichier3, 'newick')
tree4=Phylo.read(fichier4, 'newick')
trees=tree1,tree2,tree3,tree4
majority_tree = majority_consensus(trees, 0.5)
Phylo.draw(majority_tree)
问题是共识树依赖于顺序。
例如,当我try trees = tree1,tree2,tree3,tree4
和trees = tree2,tree4,tree1,tree3
时,我得到了不同的结果
有人知道从newick文件制作共识树的另一个软件吗?在
我需要Bio.Phylo
的帮助。如果有人知道更多关于这个包将是伟大的。在
因为您没有发布newick文件,所以让我们尝试重现您的问题,这样我们就有一个Minimal, Complete, and Verifiable example来表明一致性树依赖于顺序。在
我们从以下三棵树开始:
它们以newick格式表示如下:
现在我们尝试这三棵树的所有可能的排列,创建一致性树,看看它们是否都相同:
^{pr2}$结果:
因此,最后两棵一致树与前四棵一致树不同。在
为了理解为什么会发生这种情况,我们查看majority_consensus()的源代码。我们看到第一步是创建根类。终端clades的顺序由提供的第一个树决定。在
因此对于}。但是对于}
(tree1, tree2, tree3)
,第一个提供的树是tree1
,根clade是{(tree3, tree2, tree1)
,提供的第一棵树是tree3
,根clade变成{ED
F
。在因此,这是算法本身的一个限制,任何多数一致性的实现都会根据第一个提供的树给您不同的顺序。在
相关问题 更多 >
编程相关推荐