在R
中计算Nei's
遗传距离,并利用UPGMA
获取聚类树的具体流程如下:
- 在
Excel
中整理marker数据并用Genalex
生成需要的格式后再在R
中转成需要的“genind”对象类型。
-
按照Genalex要求准备好原始数据(C4)
- Genalex自动生成格式并保存成
.csv
Parameters>All for Codom (这是共显性标记,显性标记不是这个,是loci?)
注意!
第二列要加上群体的代号,如果不分群体就编码一致就可以。这里是共显性标记,对于显性标记也一样。缺失的条带用NA
表示。然后需要处理缺失数据时可以用missingno {poppr}
函数,可选方案有"ignore", "zero", "mean", "loci", or "geno"
。位点的名字中不要有点.
。 - 读取
# 加载包
library(poppr)
library(phangorn) # upgma
# 读取标记数据
dataset<-read.genalex("name.csv",genclone = F,ploidy = 2)
# nei距离
nei.dis<-nei.dist(dataset,warning = T)
# 需要的话可以保存下来
write.csv(as.matrix(nei.dis),"name.csv")
- 制作树
# 先写了一个生成图片的函数
# 声明包含上一步得到的距离对象,要保存pdf的名字,图片的宽和高
make.tree <- function(nei.dis, filename, width, height) {
tr <- upgma(nei.dis)
# 需要的话也可以把树文件保存下来用其他软件处理
write.tree(tr, paste0(filename,".tree"))
pdf(paste0(filename, ".tree.pdf"), family = "serif", width = width, height = height)
par(mar = c(1, 1, .5, .5))
plot(ladderize(tr))
add.scale.bar(length = 0.1,font = 1)
dev.off()
}
# 执行
make.tree(nei.dis,"Clones",4,5)
make.tree(nei.dis,"Mei.Sha",4,10)