vcftools主要处理vcf/bcf文件,包括:过滤(filter) ;变异位点的基本统计;数据格式的转换;多个vcf文件的比较(compare files);集合运算等。
#安装
#傻瓜式安装
conda install -c bioconda vcftools
#安装2
官网下载(https://vcftools.github.io/examples.html),下载最新版本,
wget https://github.com/vcftools/vcftools 或者
git clone https://github.com/vcftools/vcftools.git
tar -xvf vcfools.0.X.XX.tar.gz
export PERL5LIB=/path/to/your/vcftools-directory/src/perl/
cd vcftools/
./configure
make
make install
#使用
vcftools [ --vcf/gzvcf/bcf FILE ] [ --out OUTPUT PREFIX ] [ FILTERING OPTIONS ] [ OUTPUT OPTIONS ]
输入参数
--vcf 输入常规vcf文件
--gzvcf 输入gz压缩的vcf文件
--bcf 输入二进制的vcf文件
输出参数
-out 输出文件
--stdout/-c 标准输入,可后接管道操作
--temp 指定输出目录
过滤参数
根据位置进行过滤
--chr,--not-chr 指定过滤选择某染色体,可多次使用
--from-bp INT,--to-bp, 需和--chr一起使用,指定区域
--positions FILE,--exclude-positions 接tab分割的多个坐标位置文件
--bed FILE,--exclude-bed 根据BED文件进行过滤
根据指定ID位点过滤
--snp 根据vcf文件第三列ID列的snp名进行过滤。
--snps FILE,--exclude 根据ID文件进行过滤
变异类型过滤
--keep-only-indels
--remove-indels 即保留或去除SNP,留下INDEL。
根据VCF文件第七列FILTER进行过滤
--remove-filterer-allFILTER列除了PASS保留,其余都过滤
--keep-filtered,--remove-filtered保留或去除特定FILTER标签。可多次使用。
根据vcf第八列INFO进行过滤
--keep-INFO
--remove-INFO根据INFO列的指定tag进行过滤
根据ALLEL进行过滤
--maf,--max-mafMinor Allele Frequency 二等位基因频率进行过滤,常为--maf 0.05,保留大于0.05的。
--non-ref-af,--non-ref-ac.... 保留都是ALT变异的位点。
--mac INT,--max-mac保留Minor Allel Count数大于INT数的位点
--min-alleles 2,--max-alleles 2筛选保留含有2个ALT变异的位点。常用。
根据基因型GENOTYPE数值进行过滤
--min-meanDP,--max-meanDP根据平均覆盖深度进行过滤。--min-meanDP 3
--hwe 哈温平衡检测,根据pvalue值进行过滤,保留值以内的。--hwe 0.01
--max-missing 常用,缺失率,0为接受完全缺失,1为接受数据全都存在。一般0.1或者0.2
--max-missing-count INT缺失的个体数目超过INT,即被过滤。
--phased 删除unpased位点
--minQ 保留Quality值大于INT的位点。
对样品个体进行过滤
--indv,--remove-indv 保留或删除指定样本
--keep FILE,--remove 保留/删除多个体的文件
--max-indv INT 随机保留INT数目的样本。
基因型过滤
--remove-filtered-geno-all,--remove-filtered-geno保留/删除 FILTER FLAG的位点。
--minGQ删除GQ值低于数值的位点
--minDP,--maxDP保留覆盖率min~max范围内的位点。
计算统计参数
输出变异位点的计算统计
--freq,--freq2输出每个等位基因位点的频率。
--counts,位点数目的统计
位点覆盖深度Depth统计
depth输出每个个体的平均覆盖度,以idepth文件展示
--site-depth,--site-mean-depth每个位点的所有个体深度
--geno-depth每个基因型的覆盖深度文件
LD计算(Linkage Disequilibrium)
--hap-r2同时输出r^2值, D值和D’值。传统LD值计算方法,输出hap.ld
--geno-r2,方法同PLINK软件,计算squared correlation coefficient,输出geno.ld
--geno-chisq,
--hap-r2-positions FILE,--geno-r2-positions FILE和已有文件中的点做LD计算
--ld-window INTLD计算的最大SNP数目,即LD-window。--ld-window-min最小数目
--ld-window-bp INTLD计算窗口的实际物理距离。--ld-window-bp-min
--min-r2小于r2相关系数值将不被展示
--interchrom-hap-r2,--interchrom-geno-r2跨染色体的r2值计算。
Ts/Tv计算(transition/transversion )
TsTv INT计算INT值内的TsTv值,输出TsTv文件
TsTv-summaryTsTv值计算统计。
--TsTv-by-count,--TsTv-by-qual计算tstv率。
--FILTER-summary添加到T值到FILTER列中
核酸多样性统计
--site-pi计算所有位点的多样性值
--window-pi,--window-pi-step计算窗口中的核酸多样性值
FST计算
--weir-fst-pop FILE:file must contain a list of individuals (one individual per line) from the VCF file that correspond to one population,可多次,生成weir.fst文件
--fst-window-size,--fst-window-stepFSTc滑动窗口计算,重测序一般2kb-10kb
其它计算
--hetCalculates a measure of heterozygosity on a per-individual basis.
--hardy每个位点的哈温平衡计算的Pvalue。
--TajimaD INTTajima’s D 计算
--indv-freq-burden:calculates the number of variants within each individual of a specific frequency.
--LROHLong Runs of Homozygosity
--relatedness,--relatedness2计算relatedness statistic
--site-quality提取VCF文件中每个位点的QUAL信息
--missing-indv计算每个样本的缺失率,输出imiss
--missing-site计算每个位点的缺失率。
--SNPdensity INT一定窗口内的SNP数目和频率
--kept-sites,--remove-sites通过过滤的位点到另一文件kept.sites文件,removed.sites中
--singletonsdetailing the location of singletons
--hapcount BEDoutput the number of unique haplotypes within user specified bins.
--mendel PEDreport mendel errors identified in trios.
--extract-FORMAT-info <STRING>提取format列中的指定TAG
--get-INFO <string>提取INFO列中信息
输出格式转换
输出参数
--recode输出.recode.vcf新文件
--recode-INFO-all保留所有的INFO信息
格式转换
--012012矩阵文件
--IMPUTEimpute文件
--ldhat-geno--ldhatLDhat格式。
--BEAGLE-GL,--BEAGLE-PL
--plink,--plink-tped,--chrom-mapPLINK格式
两个VCF文件的比较操作
另外一个VCF文件的输入
--diff,--gzdiff,--diff-bcfFILE
--not-chr不同的chr跳过
比较参数
--diff-siteOutputs the sites that are common / unique to each file
--diff-indv不同的个体样本
--diff-site-discordance,--diff-indv-discordancecalculates discordance on a site by site basis.
--diff-indv-map <filename>指定ID文件进行比较
--diff-discordance-matrixcalculates a discordance matrix
--diff-switch-errorcalculates phasing errors
vcftools去除或保留vcf文件中的样品
vcftools可以去除或保留vcf文件中的样品,用到的选项为--indv 和 --remove-indv,指定要从vcf文件中保留或删除的样品。 可以多次使用此选项来指定多个样品。
具体用法如下:
只保留1和10号两个样品,执行以下代码:
vcftools --vcf in.vcf --recode --recode-INFO-all --stdout --indv 1 --indv 10 > out.vcf
删除1号样品,执行以下代码:
vcftools --vcf in.vcf --recode --recode-INFO-all --stdout --remove-indv 1 > out.vcf
如果样品较多,也可将样品保存到文件 id.txt 中,每行为一个样品ID,格式如下:
1
105
然后使用下面两个选项对vcf文件保留或者删除样品。
--keep <filename> 保留样品
--remove <filename> 删除样品
代码如下:
vcftools --vcf in.vcf --recode --recode-INFO-all --stdout --keep id.txt > out.vcf