美文网首页生信基础知识计算群体间Fst群体遗传
2021-01-03如何绘制选择性清除图(fst、pi、taji

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

作者: 麦冬花儿 | 来源:发表于2021-01-03 21:24 被阅读0次

    一、转载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、taji

        本文链接:https://www.haomeiwen.com/subject/diepoktx.html