如何使用R语言利用SSR数据构建进化树

发布时间:2021-11-22 14:54:44 作者:柒染
来源:亿速云 阅读:507
# 如何使用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

1.2 数据导入

使用read.table()read.csv()导入数据:

ssr_data <- read.csv("ssr_data.csv", header=TRUE, row.names=1)

二、数据预处理

2.1 数据清洗

# 检查缺失值
sum(is.na(ssr_data))

# 可选:删除缺失值过多的位点
ssr_clean <- ssr_data[, colSums(is.na(ssr_data)) < nrow(ssr_data)*0.2]

2.2 基因型编码转换

使用adegenet包转换为等位基因频率:

library(adegenet)
# 转换为genind对象
ssr_genind <- df2genind(ssr_clean, ploidy=2, sep="/")

三、遗传距离计算

3.1 常用距离算法

3.2 计算实现

使用poppr包计算距离矩阵:

library(poppr)
# 计算Nei's距离
dist_matrix <- nei.dist(ssr_genind)

四、构建进化树

4.1 聚类方法选择

4.2 使用ape包构建树

library(ape)
# NJ法建树
nj_tree <- nj(dist_matrix)

# UPGMA法建树
upgma_tree <- upgma(dist_matrix)

五、树的可视化与美化

5.1 基础可视化

plot(nj_tree, type="phylogram", edge.width=2)
nodelabels(round(nj_tree$node.label, 2), cex=0.7)

5.2 使用ggtree增强可视化

library(ggtree)
ggtree(nj_tree) + 
  geom_tiplab(aes(color=species)) + 
  geom_nodepoint(color="red", alpha=0.5)

5.3 添加进化标尺

ggtree(nj_tree) +
  geom_treescale(x=0.1, y=-1) +
  theme_tree2()

六、树的自举检验

6.1 自举分析

# 使用100次重复
boots <- boot.phylo(nj_tree, as.matrix(ssr_data), FUN=function(x) nj(nei.dist(x)), B=100)

6.2 添加支持率

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")

八、注意事项

  1. 数据质量:缺失值>20%的位点建议剔除
  2. 距离选择:显性标记建议使用Jaccard距离
  3. 样本量:建议至少15个样本以获得可靠结果
  4. 多态性:优先选择多态性高的SSR位点(PIC>0.5)

参考文献

  1. Kamvar ZN, et al. (2014) Poppr: an R package for genetic analysis of populations with clonal or partially clonal reproduction. PeerJ 2:e281
  2. Paradis E, Schliep K (2019) ape 5.0: an environment for modern phylogenetics and evolutionary analyses in R. Bioinformatics 35:526-528

”`

推荐阅读:
  1. 如何使用R语言实现对SSR数据做主成分分析
  2. 如何使用R语言的ggtree给进化树添加图片注释

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

r语言 ssr

上一篇:C语言的关键词有哪些

下一篇:c语言怎么实现含递归清场版扫雷游戏

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》