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

vis*_*226 1 indexing merge gzip vcf-vcard

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

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

谢谢!

Dan*_*ing 5

如果我理解正确,你有:

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

你想:

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

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

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

gzip --decompress --to-stdout file.vcf.gz \
  | bgzip --index --index-name file.vcf.bgz.tbi -@4 \
  > file.vcf.bgz
Run Code Online (Sandbox Code Playgroud)

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

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

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