我可以在vcf.gz文件上使用tabix吗?

时间:2016-11-24 09:10:31

标签: indexing merge gzip vcf

作为一个初学者,我可能有一个愚蠢的问题,但我有几个拉链的不同个人的VCF文件(.vcf.gz)。我想通过使用vcf-merge将这些文件合并到一个包含所有个人的VCF文件中。

但是,这需要使用bgzip实际压缩文件并使用tabix编制索引。有没有人知道我是否可以从.vcf.gz文件转到tabix索引和bgzip文件而不首先解压缩它(它需要大量存储,文件非常大)。

谢谢!

1 个答案:

答案 0 :(得分:4)

如果我理解正确,你有:

  • file.vcf.gz这是一个gzip压缩的VCF文件( block-gzip压缩)

你想要:

  • file.vcf.bgz这是一个block-gzip压缩的VCF文件,其内容与file.vcf.gz相同,并且
  • file.vcf.bgz.tbi这是file.vcf.bgz
  • 的制表符索引

并且您希望在不解压缩的情况下进行此转换。

不幸的是,我不知道无论如何要避免解压缩数据以便以阻止的形式重新压缩它。您可以通过流式传输数据来保持内存成本不变:

gzip --decompress --to-stdout file.vcf.gz \
  | bgzip --index --index-name file.vcf.bgz.tbi -@4 \
  > file.vcf.bgz

第一行解压缩file.vcf.gz,将解压缩的输出写入标准输出流。第二行block-gzip压缩标准输入流(将压缩数据写入标准输出流)并生成一个名为file.vcf.bgz.tbi的索引文件。 -@4告诉bgzip使用四个线程。如果您的计算机有更多核心,则可以增加此值。最后一行将block-gzip压缩输出定向到名为file.vcf.bgz的文件。

在我的MacBook Pro上,此过程需要一分钟来重新压缩214MB文件。

注意:这不会删除file.vcf.gz,如果您不再需要,则需要自行删除。