2021-01-02使用vcftools根据vcf文件计算种群核苷酸多样性

找到了一份种群基因组学数据分析的教程,原文用的数据是2015年发表在science上的一篇论文Genomic islands of speciation separate cichlid ecomorphs in an East African crater lake。这份教程利用这篇文章的数据分析了部分内容。

教程地址

https://github.com/singhal/popgen_tutorial/blob/master/pop_gen_tutorial.rst

vcf文件下载链接

http://datadryad.org/bitstream/handle/10255/dryad.101389/Massoko_Dryad_VCF_final.vcf.gz

争取把教程中的内容都重复完,然后多看几遍原论文(高水平论文看起来还真有些吃力呢!)

下载数据

wgethttp://datadryad.org/bitstream/handle/10255/dryad.101389/Massoko_Dryad_VCF_final.vcf.gz

为了减小计算压力,教程中的处理方式是只保留36个样本(正常数据中好像是有146个样本,解压出来的vcf文件有11G),并且删除了inde,只保留snp位点。但是原文中保留的36个个体的文本文件inds_to_keep.txt我现在找不到,需要自己重新构造一份需要保留的个体的样本名。处理方式是:

首先使用bcftools工具将所有的样本名重定向到一个文件里

bcftoolsquery-lMassoko_Dryad_VCF_final.vcf.gz>inds_to_keep.txt

我选择的是每个群体保留六个样本(样本前缀名一直我就认为他们是来自同一个群体),最后我保留了38个个体

这一步大家可以自行进行处理或者给我留言获得inds_to_keep.txt文件。

提取指定的样本并删除indel

vcftools--gzvcf Massoko_Dryad_VCF_final.vcf.gz --keep inds_to_keep.txt --stdout --recode --recode-INFO-all--remove-indels | bgzip  > Massoko_Dryad_VCF_final_subset_noIndels.vcf.gz

为了减小计算压力,进一步对文件进行处理(这一步使用到的两个参数自己还不太明白是什么意思,这一步完全照搬原教程)

vcftools--gzvcf Massoko_Dryad_VCF_final_subset_noIndels.vcf.gz --maf 0.05 --max-maf 0.95 --stdout --recode --recode-INFO-all| bgzip > Massoko_Dryad_VCF_final_subset_noIndels_maf05.vcf.gz

vcftools--gzvcf Massoko_Dryad_VCF_final_subset_noIndels_maf05.vcf.gz --thin 1000 --stdout --recode --recode-INFO-all| bgzip > Massoko_Dryad_VCF_final_subset_noIndels_maf05_thinned1K.vcf.gz

这里不明白的参数

--maf

--max-maf通常会设置最小等位基因频率来过滤vcf文件,但这里设置最大等位基因频率是什么意思?

--thin 1000

接下来计算两个不同群体的核苷酸多样性

获得两个不同群体所有的样本名,存入文件中

bcftools query -l Massoko_Dryad_VCF_final_subset_noIndels_maf05_thinned1K.vcf |grep"littoral"> littoral.txt

bcftools query -l Massoko_Dryad_VCF_final_subset_noIndels_maf05_thinned1K.vcf |grep"benthic"> benthic.txt

计算群体核苷酸多样性

vcftools--vcfMassoko_Dryad_VCF_final_subset_noIndels_maf05_thinned1K.vcf--keeplittoral.txt--window-pi100000--outlittoral_pi

vcftools--vcfMassoko_Dryad_VCF_final_subset_noIndels_maf05_thinned1K.vcf--keepbenthic.txt--window-pi100000--outbenthic_pi

--window-pi 指定窗口的长度

--out 指定输出文件的前缀名

将结果文件导出,使用ggplot2做折线图和箱线图

箱线图

bb<-read.table("../../vcf_handling/Fish_Populations/benthic_pi.windowed.pi",header=T)

ll<-read.table("../../vcf_handling/Fish_Populations/littoral_pi.windowed.pi",header=T)

dim(bb)

head(bb)

bb$indiv<-"benthic"

dim(ll)

head(ll)

ll$indiv<-"littoral"

df<-rbind(bb,ll)

colnames(df)

dim(df)

library(ggplot2)

options(scipen=200)

ggplot(df,aes(x=indiv,y=PI,fill=indiv))+

geom_boxplot()+theme_bw()

image.png

折线图

ggplot(df,aes(x=BIN_START,y=PI,group=indiv,color=indiv))+

geom_line()+theme_bw()+

theme(legend.position ="top",

legend.title = element_blank(),

axis.text.y = element_blank(),

axis.ticks.y = element_blank(),

axis.title = element_blank())

image.png

你可能感兴趣的:(2021-01-02使用vcftools根据vcf文件计算种群核苷酸多样性)