系统发育树邻接法(NJ)和非加权组平均法(UPGMA)之比较

摘要:
目录1。原则2的区别。UPGMANJ方法保存树文件的实际比较,以加深理解1。原则上的主要区别在于,非加权组平均法是基于平均链接法的聚合分层聚类法,而邻接法是基于最小进化准则的迭代聚类法。因为UPGMA方法假设相同的演化速率,所以分支末端相等。NJ方法允许不相等的演化速率,因此分支长度与变化成正比。UPGMA原理图:NJ原理图:UPGMA是一种简单、快速但不可靠的方法,而NJ方法是一种相对快速的方法,其效果优于UPGMA方法。

目录

1.原理的区别

主要区别在于,非加权组平均法(UPGMA)是基于平均链接方法的聚集层次聚类方法,而邻接法(NJ)是基于最小演化准则的迭代聚类法。

UPGMA的假定条件是:在进化过程中,每一世系发生趋异的次数相同,即核苷酸或氨基酸的替换速率是均等且恒定的。

UPGMA生成有根树,而NJ生成无根树。由于UPGMA方法假定演化速率相等,因此分支末端相等,NJ方法允许不相等的演化速率,因此分支长度与变化量成正比。

UPGMA示意图:
image.png

NJ示意图:
image.png

UPGMA是一种简单,快速但不可靠的方法,而NJ方法是一种相对较快的方法,与UPGMA方法相比,效果更好。 当然也要看具体目的。

二者区别总结:

image.png

2.实操比较

我用Plink处理得到样本的亲缘关系矩阵(IBD)文件,示例如下:

library(ape) #用于NJ法
df <- read.delim("prefix.ibdM0", sep = "	",header=TRUE, row.names=1)
df[1:5,1:5]
df <- data.matrix(df)
str(df)

image.png

UPGMA

如果直接用亲缘关系矩阵,hclust函数(stats包)识别不了。

#hclust对象需要转化为距离
tr3 <- as.phylo(stats::hclust(df,method="average")) #UPGMA
str(tr3)
plot(tr3, cex=1)

image.png

使用dist计算距离:

tr4 <- as.phylo(hclust(dist(df),method="average"))
str(tr4)
plot(tr4, cex=1)

image.png

NJ法

而在NJ法中,有没有dist都可以。但有没有转化距离二者还是有一些差别的,建议还是转化后使用。

tr1 <- bionj(df)  #或nj(df)
str(tr1)
plot(tr1, cex=1)

tr2 <- bionj(dist(df))
str(tr2)
plot(tr2, cex=1)

没用dist:
image.png
用dist:
image.png

保存树文件

树文件在R中是一个列表,包括节点和边等信息:
image.png

保存树文件:

write.tree(tr1,"test.nwk")

NJ和UPGMA生成的树都可这样保存,保存后就可导入其他软件美化了。

更深理解

如果想要更进一步的了解,建议看看这个教程:
Module 24: An Intro to Phylogenetic Tree Construction in R
包含了极大似然法ML等。

Ref: https://pediaa.com/difference-between-upgma-and-neighbor-joining-tree/

免责声明:文章转载自《系统发育树邻接法(NJ)和非加权组平均法(UPGMA)之比较》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇pandas --合并操作concat函数和append彩色插值下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

python的2D绘图库matplotlib

matplotlib的官方文档https://matplotlib.org/api/,以下介绍基本操作。 1、指定画布 画布的像素大小为指定画布的尺寸figsize及每尺寸表达的像素点数dpi的乘积。 plt.figure(figsize=(5,5),dpi=100)#figsize指定画布的大小(单位为英寸),dpi指定每英寸点(像素点)的个数 可参看官...

Matlab 曲线拟合

在matlab中经常需要对数据进行曲线拟合,如最常见的多项式拟合,一般可以通过cftool调用曲线拟合工具(curve fit tool),通过图形界面可以很方便的进行曲线拟合,但是有些时候也会遇到不方便用图形工具。因此这里简单的记下两种常用的拟合方法。 1 多项式拟合(polyfit和polyval) polyfit可以对数据进行拟合(自定义用几次多项式...

Beta分布

Beta分布 beta分布可以看做一个概率的概率分布。首先试验是伯努利试验,它符合二项式分布。而Beta分布是先有一些试验结果,比如说有100个试验结果,其中30次成功,70次失败,然后在这个基础上继续试验,把新的试验结果加到原有结果上,beta分布就是这一系列操作后是某一概率的可能性大小,分布曲线的x轴是概率。beta分布描述的就是我们不知道概率是多少,...

Plotly学习记录 1

0.古木阴中系短篷 一个星期加班加点的,下篇论文的准备工作基本做好了。但是错过了七月份的一个会议,八月的会是没有检索的,自然没有投的必要了。所以写论文的工作暂时放一下。 最近入手了一本4月出版的《Python数据分析:基于Plotly的动态可视化绘图》。在深度学习论文中实在需要大量好看的图表了,可视化展示可以说是论文第一眼看上去,能不能出彩的重中之重了。客...

(matlab)plot画图的颜色线型

(matlab)plot画图的颜色线型 y黄色·点线m粉红○ 圈线c亮蓝 × ×线r大红 + +字线g绿色 -实线b蓝色 *星形线w白色 : 虚线k黑色 -.-- 点划线matlab6.1线形:[ + | o | * | . | x | square | diamond | v | ^ | > | < | pentagram | hexagra...

使用matplotlib画出log的图像

以下内容是学习笔记,若有侵权,立即删除! import math import matplotlib.pyplot as plt import numpy as np if __name__ == '__main__': #获得浮点类型numpy数组 x = np.arange(0.05,3,0.05) #获得函数结果 y1...