Python 确定折叠此树的截止点的算法?
我有一棵树,它是通过比较4-9bp长DNA序列的假定DNA调控基序的位置权重矩阵(PWMs或PSSM)的相似性(欧氏距离)构建的 iTol()上有一个交互式版本的树,您可以自由使用它-设置参数后只需按“更新树”: 我的具体目标:如果基序(尖端/末端节点/叶子)到最近的父分支的平均距离Python 确定折叠此树的截止点的算法?,python,statistics,cluster-analysis,bioinformatics,collapse,Python,Statistics,Cluster Analysis,Bioinformatics,Collapse,我有一棵树,它是通过比较4-9bp长DNA序列的假定DNA调控基序的位置权重矩阵(PWMs或PSSM)的相似性(欧氏距离)构建的 iTol()上有一个交互式版本的树,您可以自由使用它-设置参数后只需按“更新树”: 我的具体目标:如果基序(尖端/末端节点/叶子)到最近的父分支的平均距离
apt-get install python-setuptools python-numpy python-qt4 python-scipy python-mysqldb python-lxml
easy_install -U ete2
我想我需要知道更多,然后才能给出具体的建议。但也许这会有帮助。我假设每个终端节点都是一个序列,每个内部节点都是一个PSSM X的计算是特定于应用程序的。例如,如果要折叠ultraparalogs,得到的X与要折叠所有同系物时得到的X不同 由于基因是通过复制和物种形成不断产生的,因此X没有一个单一的值可以根据进化关系来区分序列。因此,我不希望您只通过查看集群统计信息就可以找到一个令人满意的代理来确定序列之间的进化关系 更严格的方法是从每个调控基序的基因构建基因树,并将其与物种树相协调。有软件和额外的启发式方法来识别ortholog/inparalog
如果这样做,树的内部节点将被推断出的进化事件(例如,复制、物种形成)修饰。然后,您可以沿着树行走,为您不关心的分支折叠节点 你可以尝试使用@Jeff提到的类似于树对帐的东西。但标准的树协调实际上会失败 协调包括首先在整个目标树中添加表示进化特征“损失”的分支。然后指出进化特征发生“重复”的节点。损失和重复的加权总和提供了一个成本函数来优化 但是在你的例子中,你想要解决的问题是“把这棵超级树分解成大小合适的直系子树”。这意味着你不想像在复制中那样,真的想获得更多的损失。您需要一种对树进行评分的方法,以显示有多少正交子树合并到您的超级树中。因此,您可以尝试这种评分方法:
- 如果S1-S2=S1,则意味着您的超级树中大约有一个真正的子树,所有多个物种的出现都是由于最近的paralogue
- 如果S1-S2=0,则表示您的超级树中大约有S1个真正的子树