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

Can I use tabix on vcf.gz files?

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

但是,这需要使用 bgzip 实际压缩文件并使用 tabix 建立索引。有谁知道我是否可以在不先解压缩的情况下从 .vcf.gz 文件转到 tabix 索引和 bgzip 文件(它需要大量存储空间,文件真的很大)。

谢谢!

如果我没理解错的话,你有:

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

你想要:

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

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

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

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,如果您不再需要它,您需要自己删除它。