查看原文
其他

vcf格式文件处理大全(一)

王通 基因学苑 2023-08-18

前面介绍过fasq,fastq,bam三种生物数据分析中常用的格式。fasta一般作为比对的参考序列,fastq为测序数据,将fastq比对到fasta则生成bam文件,对bam进行排序建立索引,就可以直接输出为vcf格式,这个系列我们来详细介绍一下vcf格式的操作。

1 文件格式介绍

VCF是Variant Call Format的简称,是一种定义的专门用于存储基因序列突变信息的文本格式。在生物信息分析中会大量用到VCF格式。例如基因组中的单碱基突变,SNP, 插入/缺失INDEL, 拷贝数变异CNV,和结构变异SV等,都是利用VCF格式来存储的。将其存储为二进制格式就是BCF。

1.CHROM [chromosome]:染色体名称,
2.POS [position]:参考基因组突变碱基位置,如果是INDEL,位置是INDEL的第一个碱基位置。
3.ID [identifier]:突变的名称,
4.REF [reference base(s)]:参考染色体的碱基
5.ALT [alternate base(s)]:与参考序列比较,发生突变的碱基,
6.QUAL [quality]:Phred标准下的质量值
7.FILTER [filter status]:使用其它的方法进行过滤后得到的过滤结果
8.INFO

格式说明:https://samtools.github.io/hts-specs/VCFv4.2.pdf

处理VCF格式软件:bcftools,vcftools,gatk,python pyvcf,plink等。

2 如何生成vcf

vcf基本上都是直接从bam格式文件中生成的,也就是将bam文件中与参考序列比对异常的位点输出出来,当得到排序后并建立索引的bam之后,可以使用很多工具,例如bcftools,gatk,freebayes,lumpy,delly,varscan2等等工具。

#利用bcftools进行变异检测     
bcftools mpileup -f ref.fna A1.sorted.bam | bcftools call -c -v -o A1.bcftool.vcf  

#利用freebayes进行snp检测
freebayes  -f ref.fna -C 5 A1.sorted.bam -v A1.freebayes.vcf  

#利用GATK进行snp检测
 gatk HaplotypeCaller \  
   --emit-ref-confidence GVCF \  
   -R ref.fna \
   -I A1.sorted.bam \  
   -O  A1.g.vcf.gz 
gatk GenotypeGVCFs \  
 -R ref.fna  \  
 -I A1.g.vcf.gz \  
 -O A1.HC.vcf.gz  

#利用delly进行SV检测
delly call -g ref.fna -o A11.delly.sv.bcf -n A11.sorted.bam  
delly filter -f germline -p -q 20 A1.delly.sv.bcf -o A1.delly.sv.filter.bcf  

3 格式转换

vcf和bcf的关系与sam和bam的关系一样,vcf是文本格式,可以直接打开查看,bcf为二进制格式,不能直接使用less命令查看,但是二进制会节约存储。一般转换完在进行压缩,进一步节约存储。可以使用bcftools进行转换。注意,对于vcf或者bcf文件,bcftools默认是调用bgzip进行压缩的,扩展名也为.gz,千万不能自行调用gzip进行压缩,否则后面会出错。

#格式转换  
bcftools view A1.vcf -O b -o A1.bcf.gz
#查看bcf文件
bcftools view  A1.bcf.gz  

-o:输出结果文件
-O:数据文件格式

4 建立索引

和bam类似,处理行数较大的文件都需要建立索引,有了索引之后才可以快速定位到任意一行。对vcf后面的各种处理都需要建立索引。bcftools提供了csi与tbi两种索引,默认生成csi格式索引,加-t选项生成tbi格式索引。

bcftools index A1.bcf.gz  
bcftools index -t  A1.bcf.gz 

---------- END ----------

(添加作者微信,请注明单位姓名)



您可能还会感兴趣的

生物信息暑期班(北京站)开始报名
基因学苑文章列表(201906)

上传数据,直接分析,1T内存服务器来了
手把手教你生信分析平台搭建专栏合集
生物信息重要资源站点合集
不会编程,如何进行批量操作
一个人全基因组完整数据分析脚本
一个细菌基因组完整分析脚本
如何在Linux下优雅的装X

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存