单核苷酸多态性(SNP)

bcftools学习笔记(一)

2018-07-26  本文已影响4112人  生信修炼手册

欢迎关注"生信修炼手册"!

本篇主要介绍index, view, query, sort, reheader这五个命令。

1. index

index命令用于对VCF文件建立索引,要求输入的VCF文件必须是使用bgzip压缩之后的文件,支持.csi.tbi两种索引,默认情况下建立的索引是.csi格式, 用法如下

bgzip view.vcf
bcftools index view.vcf.gz

运行成功后,会生成索引文件view.vcf.gz.csi。如果需要建立.tbi格式的索引,用法如下

bcftools index -t view.vcf.gz

tbi索引文件为view.vcf.gz.tbi

2.  view

view命令可以用于VCF和BCF格式的转换,用法如下

bcftools view view.vcf.gz -O u -o view.bcf

-O参数指定输出文件的类型,b代表压缩后的BCF文件,u代表未经压缩的BCF文件,z代表压缩后的VCF文件,v代表未经压缩的VCF文件;-o参数指定输出文件的名字。

还可以根据样本筛选VCF文件,用法如下

bcftools view view.vcf.gz -s NA00001,NA00002  -o subset.vcf

-s参数指定想要保留的样本信息,多个样本用逗号分隔。

如果样本名称添加了^前缀,代表去除这些样本,比如-s ^NA00001,NA00002,这个写法表示从VCF文件中去除NA00001,NA00002这两个样本的信息。

还可以过滤突变位点,过滤的条件非常多,可以根据突变位点的类型,基因型类型等等条件进行过滤,详细的参数可以参考软件的帮助文档,这里只做一个基本示例

bcftools view view.vcf.gz -k -o known.vcf

-k参数表示筛选已知的突变位点,即ID那一列值不是.的突变位点。

3. query

query命令也是用于格式转换,和view命令不同,query通过表达式来指定输出格式,可定制化程度更高。用法如下

bcftools query -f '%CHROM\t%POS\t%REF\t%ALT[\t%SAMPLE=%GT]\n' view.vcf.gz

-f参数通过一个表达式来指定输出格式,其中变量的写法如下

  1. %CHROM
    代表VCF文件中染色体那一列,其他的列,比如POS, ID, REF, ALT, QUAL, FILTER也是类似的写法

  2. []
    对于FORMAT字段的信息,必须要中括号括起来

  3. %SAMPLE
    代表样本名称

  4. %GT
    代表FORMAT字段中genotype的信息

  5. \t
    代表制表符分隔

  6. \n
    代表新的一行

输出文件如下

11 2343543 A . NA00001=0/0 NA00002=0/0 NA00003=0/0
11 5464562 C T NA00001=./. NA00002=./. NA00003=./.
20 76962 T C NA00001=0/1 NA00002=1/1 NA00003=1/1

更多变量的写法请参考官方文档。

4. sort

sort 命令用于对VCF文件排序, 按照染色体位置进行排序,用法如下

bcftools sort view.vcf.gz -o sort.view.vcf

5. reheader

reheader命令有两个用途,第一用途用于编辑VCF文件的头部,第二个用途用于替换VCF文件中的样本名。

替换样本的用法如下

bcftools reheader -s sample.file view.vcf -o new.sample.vcf

-s参数指定需要替换的样本名,内容如下

NA00001 NA1
NA00002 NA2
NA00003 NA3

第一列代表VCF文件中原始的样本名称,第二列代表替换后的样本名称,两类之间用空格分隔,需要注意的是,样本名不允许有空格。

编辑VCF文件的头部的用法如下

bcftools reheader -h header.file  view.vcf -o new.header.vcf

-h参数指定新的header文件,内容如下

##fileformat=VCFv4.3
##reference=file:///seq/references/1000Genomes-NCBI37.fasta
##contig=<ID=11,length=135006516>
##contig=<ID=20,length=63025520>
....

扫描关注微信号,更多精彩内容等着你!

上一篇下一篇

猜你喜欢

热点阅读