Vcftools

二. Vcftools用法

2.1 过滤变异类型

vcf文件中可能会同时包含snp以及indel两种变异类型,vcftools可以很快的将两者进行分离。

2.1.1 过滤掉indel,只保留snp,用到的命令选项:–remove-indels。

vcftools --remove-indels --recode --recode-INFO-all --vcf raw.vcf --stdout >raw.snp.vcf

2.1.2 过滤掉snp,只保留indel,用到的命令选项:–keep-only-indels。

vcftools --keep-only-indels --recode --recode-INFO-all --vcf raw.vcf --stdout >raw.indel.vcf

这样,就可以分别得到只包含snp和indel的vcf文件。

2.2 筛选指定位置变异位点

vcftools还可以挑选出基因组上某些区域的变异信息。

vcftools --vcf Variants.snp.unknown_multianno.vcf --chr A03 --from-bp 577700 --to-bp 607700 --out out_prefix --recode --recode-INFO-all

这里解释一下各个参数:
–vcf:后面跟的是vcf文件
–chr:后面跟筛选区域所在的染色体
–form-bp:后跟筛选区域的起始位置
–to-bp:后跟筛选区域的终止位置
–out:输出文件的前缀
–recode:没有此参数则不会输出

2.3 过滤指定缺失率的变异位点

vcf 文件中很多snp在某些样品中是缺失的,也就是基因型为 “./.” 。如果缺失率较高,这种snp位点在很多分析中是不能用的,需要去掉。这里用到的选项是 --max-missing。

vcftools --vcf snp.vcf --recode --recode-INFO-all --stdout --max-missing 1 > snp.new.vcf
--max-missing 后跟的值为 0-1 ,1代表不允许缺失,0代表允许全部缺失。

2.4 计算snp缺失率

vcftools中有两个参数可以计算vcf文件中snp的缺失率。
分别是:
–missing-indv:生成一个文件,报告每个样品的缺失情况,该文件的后缀为“.imiss”。
–missing-site:生成一个文件,报告每个snp位点的缺失情况,该文件的后缀为“.lmiss”。

2.4.1 –missing-site

vcftools --vcf snp.vcf. --missing-site

运行以上命令后会在当前目录生成一个 out.lmiss 文件,其格式如下:

CHR POS N_DATA N_GENOTYPE_FILTERED N_MISS F_MISS  
chr01 194921 988 0 368 0.37247  
chr01 384714 988 0 204 0.206478  
chr01 384719 988 0 202 0.204453  
chr01 518438 988 0 488 0.493927  
chr01 518473 988 0 452 0.45749  
chr01 518579 988 0 418 0.423077  
chr01 518635 988 0 428 0.433198  
chr01 680786 988 0 346 0.350202  
chr01 680834 988 0 412 0.417004  
# 前两列为snp所在位置,第三列为等位基因总数,第5列为缺失的总数,最后一列为缺失率。

2.4.2 –missing-indv

vcftools --vcf snp.vcf. --missing-indv

运行以上命令后会在当前目录生成一个 out.imiss 文件,其格式如下:

INDV N_DATA N_GENOTYPES_FILTERED N_MISS F_MISS  
1 8747 0 3632 0.415228  
10 8747 0 1264 0.144507  
102 8747 0 2016 0.230479  
105 8747 0 6322 0.722762  
106 8747 0 2365 0.270378  
107 8747 0 4376 0.500286  
108 8747 0 5682 0.649594  
109 8747 0 1877 0.214588  
11 8747 0 1039 0.118784  
# 第一列为样品名称,第二列为总的snp数,第4列为缺失的总数,最后一列为缺失率。

2.5 随机抽取指定个样品

vcftools可以随机抽取指定个样品的vcf文件,用到的选项为 --max-indv ,指定要从vcf文件中随机抽取指定个样品。

# 随机抽取5个样品,执行以下代码:
vcftools --vcf snp.vcf --max-indv 5 --remove-indels --recode --out outfilename