bcftools 学习笔记
软件简介
bcftools 是一个用于操作和解决 VCF/BCF 文件的软件工具集。它是 samtools 工具集的一部分,用于比照对后的 BAM 文件进行 SNP 和 Indel 的检测。bcftools 能够用于 SNP 和 Indel 的过滤、正文、统计和可视化等操作。
装置形式
bcftools 能够通过以下两种形式进行装置:
1. 通过源代码装置
从 bcftools 的官方网站 http://www.htslib.org/download/
下载最新的源代码包。解压后进入解压后的目录,运行以下命令进行编译和装置:
./configure
make
sudo make install
2. 应用包管理器装置
bcftools 能够通过包管理器进行装置,如应用 Ubuntu 零碎能够通过以下命令进行装置:
sudo apt-get install bcftools
应用办法
1. 查看 VCF/BCF 文件信息
bcftools view 命令能够用于查看 VCF/BCF 文件的信息,如查看文件头信息:
bcftools view -h file.vcf
查看文件中的 SNP 和 Indel 信息:
bcftools view -v snps file.vcf
bcftools view -v indels file.vcf
2. 过滤 SNP 和 Indel
bcftools filter 命令能够用于过滤 SNP 和 Indel,如过滤掉 quality 值低于 20 的 SNP:
bcftools filter -i '%QUAL>20' file.vcf > filtered.vcf
3. 统计 SNP 和 Indel
bcftools stats 命令能够用于统计 SNP 和 Indel 的信息,如统计文件中 SNP 和 Indel 的数量:
bcftools stats file.vcf > stats.txt
4. 正文 SNP 和 Indel
bcftools annotate 命令能够用于正文 SNP 和 Indel,如正文 dbSNP 中的 rsID:
bcftools annotate -a dbsnp.vcf -c ID file.vcf > annotated.vcf
5. 可视化 SNP 和 Indel
bcftools view 命令能够用于可视化 SNP 和 Indel,如将文件中的 SNP 和 Indel 可视化为 HTML 文件:
bcftools view -H -v snps file.vcf | vcfutils.pl varFilter -d 5 > filtered.vcf
bcftools view -H -v indels file.vcf | vcfutils.pl varFilter -d 5 >> filtered.vcf
bcftools stats filtered.vcf > stats.txt
plot-vcfstats -p plots/ stats.txt
外围性能
bcftools view
用于查看 VCF 文件的内容,包含样本信息、位点信息、正文信息等
bcftools query
用于提取 VCF 文件中的信息,能够依据须要抉择提取特定的字段或样本信息
bcftools stats
用于生成 VCF 文件的统计信息,包含变异类型、变异频率、基因型品质等
bcftools merge
用于合并多个 VCF 文件
bcftools norm
用于对 VCF 文件进行规范化解决,包含拆分多等位位点、合并相邻位点等
bcftools annotate
用于给 VCF 文件增加正文信息
参数解释
bcftools 命令中罕用参数:
-f
: 用于指定参考基因组文件。-i
: 用于进行过滤,只保留符合条件的位点或样本信息。-c
: 用于对 VCF 文件进行压缩,进步文件的存储和传输效率。-g
: 用于将 VCF 文件转换为 BGZF 格局,进步文件的存储和传输效率。-O
: 用于指定输入文件格式,可选的格局有 VCF、BCF、BAM 等。-s
: 用于指定须要解决的样本信息。-R
: 用于指定须要解决的区域。
实战演练
首先利用 bcftools 软件将 vcf 格局生成 gz 格局和 inde 索引格局,因为 bcftools 的输出文件有这两项,须要用到“-Oz”和“index”命令,具体如下:
bcftools view ExAC.vcf -Oz -o ExAC.vcf.gz
bcftools index ExAC.vcf.gz
拆分、筛选、合并
应用 bcftools 能够不便地对 VCF.gz 文件进行拆分、筛选和合并,以下是具体的命令:
1. 拆分 VCF.gz 文件
应用 bcftools 的 split 命令能够将一个 VCF.gz 文件拆分为多个小的 VCF.gz 文件,每个文件蕴含指定数量的记录。例如,将一个 VCF.gz 文件依照每个文件蕴含 1000 个记录的规范拆分,能够应用以下命令:
bcftools split -O z -o out.vcf.gz -l 1000 file.vcf.gz
其中,-O z 选项指定输入文件的格局为.gz 压缩的 VCF 格局,- o 选项指定输入文件名的前缀,%02d 示意输入文件名中的序号,- l 选项指定每个输入文件蕴含的记录数量。
2. 筛选 VCF.gz 文件
应用 bcftools view 命令能够依据须要筛选 VCF.gz 文件中的记录。例如,筛选出染色体为 chr1 且地位在 1000000 到 2000000 之间的记录,能够应用以下命令:
bcftools view -O z -o output.vcf.gz file.vcf.gz chr1:1000000-2000000
其中,-O z 选项指定输入文件的格局为.gz 压缩的 VCF 格局,- o 选项指定输入文件名为 output.vcf.gz,chr1:1000000-2000000 示意须要筛选的区间。
3. 合并 VCF.gz 文件
应用 bcftools 的 merge 命令能够将多个 VCF.gz 文件合并为一个文件,例如:
bcftools merge -O z -o merged.vcf.gz file1.vcf.gz file2.vcf.gz file3.vcf.gz
其中,-O z 选项指定输入文件的格局为.gz 压缩的 VCF 格局,- o 选项指定输入文件名为 merged.vcf.gz,前面跟着须要合并的多个 VCF.gz 文件名。
提取指定样本的变异信息
筹备样本 ID 文件,这里命名为 sample.txt,一个样本一行,而后应用下列参数批改:
bcftools view -S sample.txt ordata.vcf.gz -Ov > sampleout.vcf
批改 vcf 文件的样本名称
应用 bcftools 的 rehead 指令,sample.file 是指定要替换的样本名(蕴含两列,别离是新名称和旧名称)
bcftools reheader -s sample.file old.vcf -o new.sample.vcf
批改 vcf.gz 染色体编号形式
nohup bcftools annotate --rename-chrs chr_id.txt xx.vcf.gz -Oz -o xxx.vcf.gz --threads 23 &
统计 vcf 中样品和位点数量
办法:bcftools +counts xxx.vcf
$ bcftools +counts Chr.recode.vcf
Number of samples: 2232
Number of SNPs: 698763
Number of INDELs: 44021
Number of MNPs: 0
Number of others: 0
Number of sites: 742784
提取 vcf 文件中的 GT 信息
bcftools annotate -x 'fmt' -O z -o out.vcf.gz in.vcf.gz
从 VCF 中提取区域的数据
每次须要批改的是染色体和地位信息,用 regions 参数传递,命令如下:
bcftools filter xx.vcf.gz --regions chr1A:5000-50900 > chr1A_5000-5090.vcf
参考资料:
https://www.jianshu.com/p/99895c7338b2
https://www.jianshu.com/p/266c55c87978
http://samtools.github.io/bcftools/bcftools.html
https://www.biostars.org/p/95013/
本文由 mdnice 多平台公布