由于输入无效,无法使用bcftools对VCF进行排序



我正在尝试压缩&索引一个VCF文件,我面临几个问题

  1. 当我使用bgzip/tabix时,它会抛出一个错误,说由于一些未排序的值而无法对其进行索引
# code used to bgzip and tabix
bgzip -c fn.vcf > fn.vcf.gz
tabix -p vcf fn.vcf.gz
# below is the error returnd
[E::hts_idx_push] Unsorted positions on sequence #1: 115352924 followed by 115352606
tbx_index_build failed: fn.vcf.gz
  1. 当我使用bcftools sort对这个VCF进行排序以处理#1时,它会由于无效条目而引发错误
# code used to sort 
bcftools sort -O z --output-file fn.vcf.gz fn.vcf
# below is the error returned
Writing to /tmp/bcftools-sort.YSrhjT
[W::vcf_parse_format] Extreme FORMAT/AD value encountered and set to missing at chr12:115350908
[E::vcf_parse_format] Invalid character 'x0F' in 'GT' FORMAT field at chr12:115352482
Error encountered while parsing the input
Cleaning
  1. 我尝试过使用linux命令进行排序来绕过#2。然而,当我运行下面的代码时,fout.vcf的大小几乎是fin.vcf的一半,这表明可能出现了问题
grep "^#" fin.vcf > fout.vcf
grep -v "^#" fin.vcf | sort -k1,1V -k2,2n >> fout.vcf

如果你对有任何建议,请告诉我

  • 如何在一个安全的&可行的方式。(文件是340G,所以我不能简单地打开文件并进行编辑。(
  • 为什么我的linuxsort可能会以一种奇怪的方式运行。(即返回的文件比原始文件小得多。(

如有任何意见或建议,我们将不胜感激!

试试这个

mkdir tmp ##1 create a tmp folder in your working directory
tmp=/yourpath/ ##2 assign the tmp folder
bcftools sort file.vcf -T ./tmp -Oz -o file.vcf.gz

您可以在对文件进行排序后对文件进行索引

bcftools index file.vcf.gz

最新更新