【问题标题】:Phylogenetics in R: collapsing descendant tips of an internal nodeR中的系统发育学:折叠内部节点的后代尖端
【发布时间】:2016-07-25 14:11:49
【问题描述】:

我有几千个基因树,我正试图准备好使用 codeml 进行分析。下面的树就是一个典型的例子。我想要做的是自动折叠看似重复的提示或节点。例如,节点 56 的后代是tip 26、27、28 等一直到36。现在除了tip 26 之外的所有这些似乎都是重复的。如何将它们全部折叠成一个提示,只留下提示 28 和一个代表其他提示的节点作为节点 56 的后代?

我知道如何手动执行此操作,但我正在尝试自动化该过程,以便函数可以识别哪些提示需要折叠,然后将它们减少为单个具有代表性的提示。到目前为止,我一直在研究计算尖端之间距离的共生函数。但是,我不确定如何使用该信息来折叠提示。

这是下面树的 newick 字符串:

((((11:0.00201426,12:5e-08,(9:1e-08,10:1e-08,8:1e-08)40:0.00403036)41:0.00099978,7:5e-08)42:0.01717066,(3:0.00191517,(4:0.00196859,(5:1e-08,6:1e-08)71:0.00205168)70:0.00112995)69:0.01796015)43:0.042592645,((1:0.00136179,2:0.00267375)44:0.05586907,(((13:0.00093161,14:0.00532243)47:0.01252989,((15:1e-08,16:1e-08)49:0.00123243,(17:0.00272478,(18:0.00085725,19:0.00113572)51:0.01307761)50:0.00847373)48:0.01103656)46:0.00843782,((20:0.0020268,(21:0.00099593,22:1e-08)54:0.00099081)53:0.00297097,(23:0.00200672,(25:1e-08,(36:1e-08,37:1e-08,35:1e-08,34:1e-08,33:1e-08,32:1e-08,31:1e-08,30:1e-08,29:1e-08,28:0.00099682,27:1e-08,26:1e-08)58:0.00200056,24:1e-08)56:0.00100953)55:0.00210137)52:0.01233888)45:0.01906982)73:0.003562205)38;

【问题讨论】:

  • 您确定节点是否重复的标准是什么?只是提示之间的距离吗?如果有,门槛是多少?此外,如果您可以为这棵树提供 newick 字符串,其他人会更容易提供帮助。
  • 嗨,是的,它是提示之间的距离。我正在使用的阈值是 1e-05,尽管目前这只是任意的。

标签: r nodes phylogeny


【解决方案1】:

一种选择是丢弃长度低于阈值的提示。

drop_dupes <- function(tree,thres=1e-5){
  tips <- which(tree$edge[,2] %in% 1:Ntip(tree))
  toDrop <- tree$edge.length[tips] < thres
  drop.tip(tree,tree$tip.label[toDrop])
}

plot(drop_dupes(tree))

【讨论】:

  • 啊当然,使用edge.length!非常感谢,这正是我想要的!
  • 我认为这不是 OP 问题所要求的:当通向提示的边的长度低于阈值时,提示会完全丢弃(例如,提示 8、9、10 的边会导致分支被丢弃而没有替换)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-02
  • 2014-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多