您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 如何使用R语言利用SSR数据构建进化树
## 引言
简单重复序列(Simple Sequence Repeats, SSR)是基因组中广泛分布的短串联重复序列,具有多态性高、共显性遗传等特点,是分子标记和系统发育分析的理想工具。R语言作为强大的统计分析和可视化平台,结合专业生物信息学包,能够高效处理SSR数据并构建进化树。本文将详细介绍从数据预处理到进化树可视化的完整流程。
---
## 一、数据准备
### 1.1 SSR数据格式要求
SSR数据通常以矩阵形式存储,行代表样本,列代表位点:
- 纯合基因型:用单一数字表示(如"145")
- 杂合基因型:用斜杠分隔(如"145/150")
- 缺失数据:用`NA`表示
示例数据格式:
```r
# 样本 位点1 位点2 位点3
样本1 "145" "150/155" "160"
样本2 "145/148" "150" NA
使用read.table()
或read.csv()
导入数据:
ssr_data <- read.csv("ssr_data.csv", header=TRUE, row.names=1)
# 检查缺失值
sum(is.na(ssr_data))
# 可选:删除缺失值过多的位点
ssr_clean <- ssr_data[, colSums(is.na(ssr_data)) < nrow(ssr_data)*0.2]
使用adegenet
包转换为等位基因频率:
library(adegenet)
# 转换为genind对象
ssr_genind <- df2genind(ssr_clean, ploidy=2, sep="/")
使用poppr
包计算距离矩阵:
library(poppr)
# 计算Nei's距离
dist_matrix <- nei.dist(ssr_genind)
library(ape)
# NJ法建树
nj_tree <- nj(dist_matrix)
# UPGMA法建树
upgma_tree <- upgma(dist_matrix)
plot(nj_tree, type="phylogram", edge.width=2)
nodelabels(round(nj_tree$node.label, 2), cex=0.7)
library(ggtree)
ggtree(nj_tree) +
geom_tiplab(aes(color=species)) +
geom_nodepoint(color="red", alpha=0.5)
ggtree(nj_tree) +
geom_treescale(x=0.1, y=-1) +
theme_tree2()
# 使用100次重复
boots <- boot.phylo(nj_tree, as.matrix(ssr_data), FUN=function(x) nj(nei.dist(x)), B=100)
nj_tree$node.label <- boots
plot(nj_tree, show.node.label=TRUE)
# 加载包
library(adegenet)
library(poppr)
library(ape)
library(ggtree)
# 数据导入与转换
ssr_data <- read.csv("ssr_data.csv", row.names=1)
ssr_genind <- df2genind(ssr_data, ploidy=2, sep="/")
# 计算距离
dist_matrix <- nei.dist(ssr_genind)
# 构建NJ树
nj_tree <- nj(dist_matrix)
# 可视化
ggtree(nj_tree, layout="circular") +
geom_tiplab(size=3) +
geom_nodepoint(aes(subset=as.numeric(label) > 70), color="red")
”`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。