首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >决定这棵树倒塌的断线的算法?

决定这棵树倒塌的断线的算法?
EN

Stack Overflow用户
提问于 2014-04-28 16:54:06
回答 2查看 1.1K关注 0票数 13

通过比较4~9 bp长序列的位置权重矩阵(PWMs或PSSMs)的相似性(欧氏距离),建立了一棵纽尼克树。

该树的交互式版本在iTol (这里)上,您可以自由地使用它-在设置参数后按下“更新树”:

我的具体目标是:如果它们到最近的父类的平均距离是ETE2 Python包),则将它们(提示/终端节点/叶子)折叠在一起。这在生物学上是有趣的,因为一些基因调控的DNA基序可能是同源的(目录或同系物)。这种折叠可以通过上面链接的iTol图形用户界面来完成,例如,如果您选择X= 0.001,那么一些主题就会折叠成三角形(Motif族)。

我的问题:是否有人建议一种算法,可以输出或帮助可视化X的哪个值适合于“最大化崩溃的主题的生物学或统计相关性”?理想情况下,当用X绘制时,树的某些属性会发生一些明显的步骤变化,这意味着算法是明智的X。是否有任何已知的算法/脚本/包?也许代码会根据X的值绘制一些统计数据?我已经尝试过标出X和平均集群大小(matplotlib),但是我没有看到一个明显的“逐步增加”来告诉我要使用哪个X值:

我的代码和数据:脚本的链接在这里,我对它进行了大量的注释,它将为您生成上面的树数据和图(使用参数d_from、d_to和d_step来探索距离截断,X)。如果您有简易安装和ete2,那么只需执行这两个bash命令就可以安装:

代码语言:javascript
复制
apt-get install python-setuptools python-numpy python-qt4 python-scipy python-mysqldb python-lxml

easy_install -U ete2
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-28 13:26:39

正如Jeff提到的,您可以尝试使用类似于树协调的方法。但是标准的树和解实际上会失败。

协调首先需要在整个目标树中添加代表进化字符“损失”的分支。然后指示进化字符的“复制”发生的节点。损失和重复的加权和提供了一个优化的成本函数。

但在你的例子中,你想要解决的问题是“把这棵超级树分解成适当大小的正子树”。这意味着你不想像重复一样多的损失。你想要一种方法来打分这棵树,这样它就能显示出有多少个同源子树被合并到你的超级树中。因此,您可以尝试以下评分方法:

  1. 以一棵超级树为例,数数重复物种的数量,S1。
  2. 折叠所有的终端叶子,这是目录和计数的新数量的重复物种,S2。
  3. S1和S2之间的区别大约揭示了超级树中有多少子树。
  4. 纠正各种大小的超级树所造成的偏差,除以在超级树N中所代表的唯一物种的数量。

如果我们称这个分数为“子树因子”,那么它就等于:

S1 - S2 / N

推论:

  • 如果S1 - S2 = S1,那么这意味着你的超级树中大约有一个真正的子树,所有多个物种的出现都是由于最近的目录。
  • 如果S1 - S2 =0,则表示您的超级树中有近似S1真子树。
票数 1
EN

Stack Overflow用户

发布于 2014-05-08 06:48:48

我想我需要更多的了解才能给出具体的建议。但也许这会有帮助。我假设每个终端节点是一个序列,每个内部节点都是一个PSSM。

X的计算是特定于应用程序的。例如,当你想折叠所有同系物的时候,你得到的X和你想要折叠的X不一样。

由于基因是通过复制和物种化不断产生的,所以X没有一个值可以通过进化关系来区分序列。因此,我不认为您会找到一个令人满意的代理来确定序列之间的进化关系,只看集群统计数据。

一种更严格的方法是从每个调控基序的基因构建一棵基因树,并将其与一棵物种树相协调。这里有一些软件和其他的启发式方法,可以用来识别正方根/ inparalog。

如果您这样做,您的树的内部节点将被装饰由推断的进化事件(例如,复制,物种)。然后,你可以走到树上,为你不关心的类崩溃节点。

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

https://stackoverflow.com/questions/23346837

复制
相关文章

相似问题

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