作为一个初学者,我可能有一个愚蠢的问题,但我有几个拉链的不同个人的VCF文件(.vcf.gz)。我想通过使用vcf-merge将这些文件合并到一个包含所有个人的VCF文件中。
但是,这需要使用bgzip实际压缩文件并使用tabix编制索引。有没有人知道我是否可以从.vcf.gz文件转到tabix索引和bgzip文件而不首先解压缩它(它需要大量存储,文件非常大)。
谢谢!
答案 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
,如果您不再需要,则需要自行删除。