使用 NGSadmix 群体结构分析

第一步:

将 vcf 文件格式转化为 BEAGLE 格式,要看下自己的 vcf 文件有 GL 字段还是 PL 字段。

1
2
vcftools --vcf input.vcf --out test --BEAGLE-GL --chr 1,2,3,4,5,6
vcftools --vcf input.vcf --out test --BEAGLE-PL --chr 1,2,3,4,5,6

第二步:

运行 NGSadmix

生成结果中后缀为 qpot的则是作图所需文件。

1
2
./NGSadmix -likes test.BEAGLE.PL -K 3 -P 4 -o myout -minMaf 0.05
#-K 群体数 -P 计算机核心数

第三步:

作图

1
2
data<-read.table("myout.qopt")
barplot(t(as.matrix(data)),col=rainbow(3),axes=FALSE,ylab="K=3",font=2,cex.lab=1.4)

第四步:

评估结果

evalAdmix 会生成一个样本残差矩阵,对角线为NA。如果数据与混合模型非常吻合,则其他位置的相关性结果将为 0。

1
./evalAdmix -beagle test.BEAGLE.PL -fname myout.fopt.gz -qname myout.qopt -P 4
1
2
3
4
5
source("NicePlotCorRes.R")
pop<-read.table("input.fam")
r<-as.matrix(read.table("output.corres.txt"))

plotCorRes(cor_mat = r, pop = as.vector(pop[,2]), title="Evaluation of admixture proportions with K=3", max_z=0.1, min_z=-0.1)