2021-01-03如何绘制选择性清除图(fst、pi、tajimad等)、)

一、转载https://blog.csdn.net/yangl7/article/details/109323644

vcftools --vcf AxiomGT1.calls.vcf --window-pi 1000 --window-pi-step 1000 --out GT1_pi

生成两个文件

GT1_pi.windowed.pi

GT1_pi.log

使用GT1_pi.windowed.p文件通过R进行绘图

library(ggplot2)

data<-read.table("GT1_pi.windowed.pi",header=T)

pdf("pi_result.pdf",width=15,height=3)

p <- ggplot(sc3,aes(x=BIN_END/1000000,y=PI,color='N_VARIANTS')) + geom_line(size=0.5) + xlab("Chromosome1 (Mb)")+ ylab("Pi")

p + theme_bw()

dev.off()

数据的‘N_VARIANTS’应该是有两个因子(1,2),所以实际应该对应两条折线,我也使用过color=‘factor(N_VARIANTS)’,还是只画出了一条线,如果有大神能指点一二我将不胜感激。


二、转载https://zhuanlan.zhihu.com/p/52064863

利用VCFtools计算几个群体遗传学里的参数,然后利用R将结果呈现出来。

Tajima's D计算,

这个是选择相关的一个参数,大于0代表群体观测杂合度高于预期杂合度,稀有等位基因频率降低(群体收缩或者平衡选择),小于0说明群体观测杂合位点少于预期值,稀有等位基因频率增加(群体扩张或者低频选择)。

也就是说,只有0是正常的,其他都是选择发生。

vcftools --vcf 20F.vcf --TajimaD 500000 --out TajimaD

2. π,核苷酸多样性,越大说明核苷酸多样性越高,越低说明两个座位DNA序列差异越小。

vcftools --vcf 20F.vcf --window-pi 500000 --out pi

3. Fst, 分化系数,从0到1说明亲缘关系越来越远。接近于0说明两个个体亲缘关系近,接近1说明亲缘关系远。10number.txt和20number.txt是想要分组的个体文件,每行一个个体,跟vcf中的个体名称一致。

vcftools

--vcf 30results/30results_SNP.vcf --weir-fst-pop 20data/10number.txt

--weir-fst-pop 20data/20number.txt --out 20data/P_VS_Y --fst-window-size

500000

4. Hardy-Weinberg平衡检测,这个主要是检测基因型频率是否等于基因频率乘积。比如A:0.3,a:0.7那么Aa的频率是否为0.42

vcftools --vcf 20data/20F.vcf --hardy --out 20data/HW


library(ggplot2)

mydata<-read.table("TajimaD500K.Tajima.D",header = T) #其他文件只需要换一下名字就好

mydata1<-na.omit(mydata)

ggplot(mydata1, aes(x=BIN_START/1000000,y=TajimaD,group=factor(CHROM),colour=CHROM))+geom_line()+facet_wrap(mydata1$CHROM)+xlab("Physical distance(Mb)")+ylab("Tajima's D")+theme(legend.position = "none")

a<-mydata1[sample(nrow(mydata1), 1000), ] #随机选取其中的1000行数据,这个Hardy-Weinberg平衡文件需要的,因为结果太多,无法利用ggplot绘出全部结果





三、转载https://www.jianshu.com/p/b73a8d6233be

Fst的计算原理与实战

概念回顾

Fst:群体间遗传分化指数,是种群分化和遗传距离的一种衡量方法,分化指数越大,差异越大。适用于亚群体间多样性的比较。

用于衡量种群分化程度,取值从0到1,为0则认为两个种群间是随机交配的,基因型完全相似;为1则表示是完全隔离的,完全不相似。它往往从基因的多样性来估计,比如SNP或者microsatellites(串联重复序列一种,长度小于等于10bp)。是一种以哈温平衡为前提的种群遗传学统计方法。

两个种群之间遗传差异的基本测量是统计量FST。在遗传学中,F一词通常代表“近亲繁殖”,它倾向于减少群体中的遗传变异。遗传变异可以用杂合度来衡量,所以F一般表示群体中杂合性的减少。 FST是与它们所属的总群体相比,亚群体中杂合性的减少量。

具体可以下面的公式表示:

Fst= (Ht-Hs)/ Ht

Hs:亚群体中的平均杂合度

Ht:复合群体中的平均杂合度

理论上计算Fst的步骤

理论上要估算FST,需要以下步骤:

找出每个亚群的等位基因频率。

查找复合群体的平均等位基因频率

计算每个亚群的杂合度(2pq)

计算这些亚群杂合度的平均值,这是HS。

根据总体等位基因频率计算杂合度,这是HT。

最后,计算FST =(HT-HS)/ HT

具体例子

基因SLC24A5是黑色素表达途径的关键部分,其导致皮肤和毛发色素沉着。与欧洲较轻的皮肤色素密切相关的SNP是rs1426654。 SNP有两个等位基因A和G,其中G与轻度皮肤相关,在犹他州的欧裔美国人中,频率为100%。美洲印第安人与美国印第安人混血儿的SNP在频率上有所不同。墨西哥的样本有38%A和62%G;在波多黎各,频率分别为59%A和41%G,查尔斯顿的非裔美国人样本中有19%A和81%G.这个例子中的FST是什么?

手工计算的步骤如下:

在得到每个群体中等位基因的频率后:

首先第一步是计算每个亚群的杂合度H,这一步简单H=2pq (p和q是对应群体中等位基因的频率)

第二步计算这些亚群杂合度的平均值HS,取三个不同种群中的H值,除去平均数3,得到结果

第三步,计算群体等位基因频率,和上述方法类似,取每个等位基因在对应种群中的频率叠加除去平均数。

第四步,计算所有群体中的杂合度HT,使用2pq,p和q是群体中的等位基因频率,在第三步骤已经算好了。

最后,根据计算公式算出Fst。

在实际中,当然不可能用手工对每个位点进行这样的计算,怎样在电脑中分析FST等值,会在下次内容中介绍。

实战

当然了,实际中我们并不需要像上述例子那样逐个计算。等位基因频率的信息都藏在snp calling后的vcf中,再使用恰当的工具就可以快速计算出Fst。下面给大家介绍一种比较popular的计算Fst的方法(还有其他方法不限于一种),使用vcftools:

##对每一个SNP变异位点进行计算

vcftools--vcf test.vcf--weir-fst-pop1_population.txt--weir-fst-pop2_population.txt--outp_1_2—single

##按照区域来计算vcftools--vcf test.vcf--weir-fst-pop1_population.txt--weir-fst-pop2_population.txt--outp_1_2_bin--fst-window-size500000--fst-window-step50000

# test.vcf是SNP calling 过滤后生成的vcf 文件;

# p_1_2_3 生成结果的prefix

# 1_population.txt是一个文件包含同一个群体中所有个体,一般每行一个个体。个体名字要和vcf的名字对应。

# 2_population.txt 包含了群体二中所有个体。

#计算的窗口是500kb,而步长是50kb (根据你的需其可以作出调整)。我们也可以只计算每个点的Fst,去掉参数(--fst-window-size 500000 --fst-window-step 50000)即可。

分别对不同结果进行图形绘制

##图1

library(ggplot2)

data<-read.table("test1.out.windowed.weir.fst",header=T)

sc3=subset(data,CHROM=="Gm01")

p<-ggplot(sc3,aes(x=BIN_END/1000000,y=WEIGHTED_FST))+geom_point(size=0.5,colour="blue")+xlab("Physical distance (Mb)")+ylab("Fst")+ylim(-1,1)

p+theme_bw()

##图2

library(ggplot2)

data<-read.table("test.out.weir.fst",header=T)

sc3=subset(data,CHROM=="Gm01")p<-ggplot(sc3,aes(x=POS,y=WEIR_AND_COCKERHAM_FST))+geom_point(size=0.5,colour="blue")+xlab("Physical distance (Mb)")+ylab("Fst")+ylim(-1,1)

p+theme_bw()



可以看到两幅图还是基本对应的,然后对一些接近1,与大部分点偏离比较高的点可以将其与功能注释相结合,还有一些选择压力分析的工具相结合,寻找出其对应的基因,观察该基因是否是被选择。Pi也是选择分析中一个很要的参数,这一部分内容有时间这一点以后再补回来。

四、转载于https://mp.weixin.qq.com/s?__biz=MzU1NDkzOTk2MQ==&mid=2247485064&idx=1&sn=6a9d4d29d5be747a38c1d4e8a6e6113b&chksm=fbdaa5deccad2cc8602ebc2f587547828a12dc4c6df1f360ff14e6c0628b785cc725ef7e5181&scene=21#wechat_redirect

群体分化指数-Fst

1、进行质控,剔除高缺失率(--geno 0.05)和极低等位基因频率( --maf 0.01 )的SNP

#!/bin/bash

plink=/software/biosoft/software/plink/plink

$plink --vcf 60dog.vcf --geno 0.05 --maf 0.01 --dog --recode vcf-iid --out 60dog_QC

2、这里以TM和YJ为例,计算FST,因为逐个位点计算FST时,可能会出现FST值很高的假阳性信号(中性选择导致),所以这里考虑到搭载效应同时计算了滑窗FST,二者可以对照着看。TM_4500.txt为TM样本ID文件,一行一个ID,YJ_800.txt同左。

这里可以来看下结果文件

单位点:


窗口:


3、可视化

这里使用R包qqman完成曼哈顿图可视化,以窗口结果为例。先处理数据文件格式:

sed "1d" TM_4500vsYJ_800_20k_5k.windowed.weir.fst|awk '{if($5<0)print $1"\t"$2"\t0";else print $1"\t"$2"\t"$5}' > TM_4500vsYJ_800_20k_5k_plot.txt

以下是可视化脚本代码

### 加载要使用的R包

library(qqman)

library(Cairo)

Fstfile<-read.table("TM_4500vsYJ_800_20k_5k_plot.txt", header=F, stringsAsFactors=F)

SNP<-paste(Fstfile[,1],Fstfile[,2],sep = ":")

Fstfile=cbind(SNP,Fstfile)

colnames(Fstfile)<-c("SNP","CHR","POS","Fst")

outfile<-"TM_4500vsYJ_800_20k_5k"

filePNG<-paste(outfile,"manhattan.png",sep=".")

CairoPNG(file=filePNG,width=1500,height=500)

colorset<-c("#FF0000","#FFD700","#2E8B57","#7FFFAA","#6495ED","#0000FF","#FF00FF")

### 调用qqman,画出全部染色体

manhattan(Fstfile),chr="CHR",bp="POS",p="Fst",snp="SNP", col=colorset,logp=F,suggestiveline = F, genomewideline = F,ylab="Fst",ylim=c(0,1),font.lab=4,cex.lab=1.2,main="TMvsYJ",cex=0.8)

### 只绘制单条染色体

if (FALSE){

    manhattan(subset(Fstfile,CHR=="10"),chr="CHR",bp="POS",p="Fst",snp="SNP", col=colorset,logp=F,suggestiveline = F, genomewideline = F,ylab="Fst",ylim=c(0,1),font.lab=4,cex.lab=1.2,"TMvsYJ_chr10",cex=0.8)

}

dev.off()

print("==================manhattan plot====================")

可视化结果展示

全部染色体

10号染色体

如果发现更好的教程,后续更新的哦!欢迎一起讨论!

你可能感兴趣的:(2021-01-03如何绘制选择性清除图(fst、pi、tajimad等)、))