系统发育树邻接法(NJ)和非加权组平均法(UPGMA)之比较
1.原理的区别
主要区别在于,非加权组平均法(UPGMA)是基于平均链接方法的聚集层次聚类方法,而邻接法(NJ)是基于最小演化准则的迭代聚类法。
UPGMA的假定条件是:在进化过程中,每一世系发生趋异的次数相同,即核苷酸或氨基酸的替换速率是均等且恒定的。
UPGMA生成有根树,而NJ生成无根树。由于UPGMA方法假定演化速率相等,因此分支末端相等,NJ方法允许不相等的演化速率,因此分支长度与变化量成正比。
UPGMA示意图:

NJ示意图:

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

2.实操比较
我用Plink处理得到样本的亲缘关系矩阵(IBD)文件,示例如下:
library(ape) #用于NJ法
df <- read.delim("prefix.ibdM0", sep = "\t",header=TRUE, row.names=1)
df[1:5,1:5]
df <- data.matrix(df)
str(df)

UPGMA
如果直接用亲缘关系矩阵,hclust函数(stats包)识别不了。
#hclust对象需要转化为距离
tr3 <- as.phylo(stats::hclust(df,method="average")) #UPGMA
str(tr3)
plot(tr3, cex=1)

使用dist计算距离:
tr4 <- as.phylo(hclust(dist(df),method="average"))
str(tr4)
plot(tr4, cex=1)

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:

用dist:

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

保存树文件:
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)之比较的更多相关文章
- B+树,B树,聚集索引,非聚集索引
简介: B+树中只有叶子节点会带有指向记录的指针,而B树则所有节点都带有 B+树索引可以分为聚集索引和非聚集索引 mysql使用B+树,其中Myisam是非聚集索引,innoDB是聚集索引 聚簇索引索 ...
- MEGA软件——系统发育树构建方法(图文讲解) 转载
转载:http://www.plob.org/2012/12/02/4927.html 一.序列文本的准备 构树之前先将目标基因序列都分别保存为txt文本文件中(或者把所有序列保存在同一个txt文本中 ...
- PHP正则中的捕获组与非捕获组
今天遇到一个正则匹配的问题,忽然翻到有捕获组的概念,手册上也是一略而过,百度时无意翻到C#和Java中有对正则捕获组的特殊用法,搜索关键词有PHP时竟然没有相关内容,自己试了一下,发现在PHP中也是可 ...
- php 正则表达式捕获组与非捕获组
熟练掌握正则表达式是每个程序员的基础要求,对于每个初学者来说会被正则表达式一连串字符弄得头晕眼花.博主便会如此,一直对正则表达式有种莫名的恐惧.近来看到另一位博友写的 <php正则表达式> ...
- java正则表达式 非捕获组详解
这几天看了下正则表达式,对非捕获组(non-capturing)进行下总结.主要总结 1个 + 2组 一共5个.(?:X) (?=X) (?<=X) (?!X) (?<!X) 一.先从( ...
- JAVA正则表达式-捕获组与非捕获组
Java捕获组与非捕获组的问题 先看例子: import java.util.regex.Matcher; import java.util.regex.Pattern; public class P ...
- java 捕获组与非捕获组
非捕获组:格式:(?:xxxx), 如:(?:aaa)\\w+(bbb)\\1,\\1 代表重复捕获的第一组即是(bbb) public static void main(String[] args) ...
- zstu.4191: 无向图找环(dfs树 + 邻接表)
4191: 无向图找环 Time Limit: 5 Sec Memory Limit: 128 MB Submit: 117 Solved: 34 Description 给你一副无向图,每条边有 ...
- Stern-Brocot树 及 法里级数分析
Stern-Brocot树产生了所有分子分母互素的分数 从初始0/1 1/0 -> m/n m'/n'出发,不断往中间添加 (m+m')/(n+n')容易推得 n * m' - m * n' = ...
随机推荐
- 【c++ Prime 学习笔记】第1章 开始
1.1 编写一个简单的程序 int main() { return 0; } 函数 包含4部分: 返回类型(return type) 函数名(function name) 形参列表(parameter ...
- Jmeter之BeanShell 断言
作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15436864.html 博客主页:https://www.cnblogs.com/testero ...
- BUAA_2020_软件工程_个人博客作业
项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人博客作业 我在这个课程的目标是 了解软件工程的技术,掌握工程化开发的能力 这个作业在哪个具体方 ...
- Python课程笔记 (五)
今天主要学习图形用户界面,更多的还是要我们自己去实际操作,课仿佛上了一半就完了,分享一下课程(这里在SixthClass)的源码: https://gitee.com/wang_ming_er/pyt ...
- jquery正则表达式验证【是否带有小数、是否中文名称组成、是否全由8位数字组成、电话码格式、邮件地址】
1 <form name="myform" action="" onsubmit="return fun1()"> 2 < ...
- Dubbo之负载均衡、并发控制、延迟暴露、连接控制
1.并发控制 dubbo服务端和消费端都做了并发控制,分别在配置中有相应的对应配置: 服务端:executes服务提供者每服务每方法最大可并行执行请求数,控制并发数量:actives每服务消费者每服务 ...
- MySql各种文件及参数
MySql各种文件及参数 参数文件 MySql实例启动时,数据库会去读一个配置参数文件,用来寻找数据库的各种文件所在位置以及指定某些初始化参数,这些参数通常定义了内存结构有多大等信息. 数据库的参数可 ...
- mysql查看数据库大小
要想知道每个数据库的大小的话,步骤如下: 1.进入information_schema 数据库(存放了其他的数据库的信息) use information_schema; 2.查询所有数据的大小: s ...
- docker中镜像的作用
镜像原理镜像 镜像到底是什么?镜像是一种轻量级.可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码.运行时.库.环境变量和配置文件.1.Uni ...
- Linux usb 4. Device 详解
文章目录 1. 简介 2. Platform Layer 2.1 Platform Device 2.2 Platform Driver 3. UDC/Gadget Layer 3.1 Gadget ...