对GATK call变异后的vcf文件进行过滤,首先使用了bcftools的vcfutils.pl进行过滤,并使用gzip生成了vcf.gz的压缩文件,之后用GATK对该文件进行过滤。
gatk报错 An index is required but was not found for file drivingVariantFile
这个报错是因为GATK读别的软件生成的vcf.gz文件,需要一个索引
所以使用bcftools建立索引
bcftools index -t filter1.vcf.gz
#-t 建立tbi索引
但此时bcftools又报错 index: the file is not BGZF compressed, cannot index
这是因为bcftools只能对bgzip压缩后的文件建立索引,而上面使用的压缩方式是gzip
对文件解压之后重新用bgzip压缩,再建立索引,之后用GATK进行过滤。
file.vcf.gz
#用bgzip重新压缩
bgzip file.vcf
#建索引
bcftools index -t file.vcf.gz
#GATK过滤
java -jar GenomeAnalysisTK.jar VariantFiltration -R ref.fa -V file.vcf.gz --filter-expression "QD < 2.0 || FS > 60.0 || MQ < 40.0 " --cluster-window-size 5 --cluster-size 2 --filter-name my_snp_filter -O filter.vcf.gz
注:可以先用GATK进行过滤,再使用其他软件过滤,这样无需建立索引。
法一:使用GATK call变异后得到vcf文件,可以先用GATK进行过滤,再使用其他软件过滤,这样能有效避免索引问题,无需建立索引。
法二:GATK的缺点是不能指定线程,运行很慢,考虑到速度方面,也可以先使用bcftools、vcftools等进行过滤,之后使用bgzip输出为vcf.gz压缩文件,再使用bcftools建立 tbi 索引,最后再进行GATK的过滤。
由于SNP位点数量巨大,对应VCF文件也非常大,为节省存储空间,最常见的做法就是压缩。bgzip 可以压缩VCF文件,用法如下
bgzip raw.vcf
压缩之后,原本的raw.vcf文件就变成了raw.vcf.gz文件。压缩后缀为.gz, 如果想要解压缩,有以下两种用法
bgzip -d raw.vcf.gz gunzip raw.vcf.gz
bgzip的压缩算法和gzip压缩算法有着相似之处,所以对于bgzip压缩的文件,解压缩时除了可以使用bgzip软件本身,还可以使用gunzip进行解压缩。
需要注意的是,两种算法虽然有相似之处,但是还是有本质区别的,在对VCF文件压缩时,不可以使用gzip来代替bgzip。
gzip压缩的vcf文件就会造成开始的报错,导致GATK或bcftools等其他软件不识别。 bgzip 如果系统中安装了samtools就会有附带安装,不需要额外安装。
解决这种错误建议解压之后重新用bgzip压缩。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!